| This release brings ready-made predicates for reading and writing of XML,
stronger text processing on atoms and terms,
an easier to program access to blackboard data,
long awaited term vectors (index-accessed resizable arrays of terms),
timer predicates for fine grained user or process interaction,
merge sort on lists, deterministic meta call,
a set of predicates for client-server distributed processing,
and again some improvements due to
customer suggestions which we gratefully acknowledge.
The ExamplePrograms now include the use of JavaScript from within MINERVA.
The documentation on extending MINERVA statically and dynamically
underwent a major cleanup.
Notes:
-
*.mbc MINERVA binary code is not compatible to previous releases
of MINERVA. Please recompile *.min source files to update
your *.mbc binary code files.
-
*.min MINERVA source programs are upward compatible
except for some GUI predicates that referred to now
deprecated Java methods.
-
Please update your *.msp and *.mca
MINERVA Startup Property and Compressed Archives if
you are using custom files that access MINERVA libraries.
- This version executes on Java 1.1 and on Java 1.2.
(Caution: Netscape 4.0.4 and earlier do not suffice.)
New Functionality:
- Processing XML Terms
Input, output, conversion of XML terms to and from Prolog terms.
XML as description language matches well with MINERVA as language
to implement the semantics of XML terms.
Persistent data in XML format provide a convenient way of integrating
other XML-aware software components.
Predicates offered:
read_xml/2/3, write_xml/1/2, term2xml/3, term2xmldoc/3, xml2term/3, xmldoc2term/3
details
- stronger text processing on atoms and terms
The text processing library was extended with a few new predicates for
frequently used tasks and comprises now:
atom_chars/2, atom_codes/2, atom_concat/3, atom_concat/2, atom_length/2, atom_number/2, atom_lower/2, atom_upper/2, char_code/2, number_chars/2, number_codes/2, parse_atom/2/3, sub_atom/5, write_atom/2, writeq_atom/2
details
- easier to program blackboards
Blackboards, i.e. fast hashed named tables for working data, were extended
for more programming flexibility. You can dynamically add/delete single
items or whole named data sets. You can create independent name spaces.
Offered predicates are now:
bb_clear/1, bb_clear/2, bb_contains/2, bb_contains_key/2, bb_create/1, bb_get/3 , bb_get/4, bb_put/3, bb_put/4, bb_remove/2, bb_keys/2, bb_elements/2
details
- data type vector
A term vector is a dynamically resizable index-accessed array of terms.
It allows efficient indexed access which is clumsy to implement e.g. with lists.
It allows destructive assignment of elements.
This data structure is very convenient for efficient handling
of possibly large well-structured tables of data.
Offered predicates are:
tv_add/2, tv_create/1, tv_get/3, tv_list/2, tv_set/3, tv_setsize/2, tv_size/2
details
- timer predicates
A simple programming interface to use multi-threading for asynchronous timing.
Timing is an essential element e.g. for fine grained user interfaces
and for real time systems. The complexity of multi-threading is
abstracted away with the notion of listeners for registered callbacks.
Predicates are:
timer_close/1, timer_create/2, timer_is_active/1, timer_start/2, timer_stop/1
details
- merge sort on lists
Sorts lists without removing doubles.
merge_sort/2
details
- deterministic meta call
For software engineering reasons added was a meta call that executes
its goal only once and throws an exceptions if the goal fails. This
construct is needed for robust programs in situations where
logic failure does not make sense, e.g. processing of callbacks from
user interaction.
fcall/1
details
- predicates for distributed client-server processing
A high level programming interface for communication between distributed
MINERVA processes over Internet sockets. Allows to send and receive
fully structured MINERVA terms e.g. for cooperating agents, delegation,
multi-client and/or multi-server systems.
Allows to run server side MINERVA processes in daemon mode.
Please note the relation to XML handling (see above)
and asynchronous timing (see above).
client_start/3, client_stop/1, listener_start/3, listener_stop/3, send/2, send/2, server_start/4, server_stop/1
details
- Calling JavaScript
An example of the integration of client side JavaScript into client
side MINERVA was added upon customer request. This is sometimes
convenient to drive existing JavaScript programs from MINERVA,
or, on Microsoft operating systems, COM components.
The example given is very simple to understand and compatible across
Netscape and Internet Explorer.
details
- Improved Documentation on integrating Java programs
Extending MINERVA with own or third party Java classes
is now much better documented. Covered are the differences of
static and dynamic linking (via reflection), along with
usage hints on the automatic interface generator metagen,
opposed to the finer grained system level interfaces.
details
Please also re-read the Release Notes of previous versions of MINERVA.
You have feedback on this release or requests for the next? Please let us know!
|