|
Release Notes
|
Version 5.3 (2001-11-24)
This release contains enhancements to the kernel, various libraries and
the embedding features. It also contains preliminary versions of features
which are still under development. Incompatibilities with the previous
version should be very minor.
Libraries
-
lib(ic) nearing completion
-
This is the new hybrid real/integer interval constraint solver. Functionality
added since the last, preliminary release: nonlinear constraints, strict
inequalities, reified constraints.
-
New Library: lib(notify_ports)
-
Implements a form of one-to-many message passing, where send and receive
ports are ECLiPSe data structures. A typical application is the implementation
of AC-4 style algorithms.
-
New Library: lib(viewable)
-
Experimental release of the ECLiPSe side of the visualisation architecture
planned for future releases. The viewable library allows you to
declare in your ECLiPSe program arrays of data elements which will be viewable
by future visualisation clients.
-
lib(branch_and_bound) enhancements
-
Incorporates a new single-pass, non-restart algorithm (strategy continue),
which has been made the default. It is often, but not necessarily,
faster than the old default (strategy step) and supersedes the minimize/n
predicates of the fd library.
-
lib(graph_algorithms) enhancements
-
New predicates: minimum_spanning_tree/4, minimum_spanning_forest/5, single_pair_shortest_path/5,
single_pair_all_shortest_paths/5.
-
lib(eplex) enhancements
-
ECLiPSe variable names (using lib(var_name)) can be passed to the external
optimiser.
-
Support for XPRESS 12.50 and CPLEX 7.1 added.
Enbedding and Interfaces
-
Unified High-Level External Language Interface Support
-
The concept of peers allows a uniform way of viewing the high-level language
interfaces (currently Tcl/Tk, Java (see the next entries)) and connection
methods (embedded and remote). Support is provided in ECLiPSe for creating
and maintaining peer queues (previously this can only be done on the external
side). The remote protocol is described in the manual and can be used to
provide remote interfaces to other languages.
-
Tcl/Tk-ECLiPSe Interface
-
Increased compatibility between embedded and remote Tcl interfaces
-
(support for ECLiPSe handler in to-ECLiPSe queues). Support for creation
of
-
peer queues from the ECLiPSe side.
-
Java-ECLiPSe Interface
-
major new features (see Embedding and Interfacing manual chapter for more
details):
-
New RemoteEclipse class: connect your Java virtual machine to an
existing ECLiPSe engine running on a remote machine.
-
New OutOfProcessEclipse class: start an ECLiPSe engine as a child
process of the Java virtual machine.
-
Support for one-shot creation of ToEclipse/FromEclipseQueues from the ECLiPSe
side
minor new features, see Java-ECLiPSe
interface changes from 5.2 to 5.3
-
Visual Basic Interface Sample Code
-
This is no longer supported by the ECLiPSe group and has therefore been
removed from the distribution. We have made the code
freely
available for anyone interested to take over.
-
Environment variables
-
Java and Tcl/Tk embedding now work without the need for setting LD_LIBRARY_PATH
on Unix or PATH on Windows.
-
Runtime subset
-
For the deployment of ECLiPSe-based applications, this release contains
a separately packaged (eclipse_rt.tgz) runtime
subset of the system.
Development Environment
-
lib(document): structure declarations can now be documented using comment/2
directives in a format similar to predicate comments.
-
emacs mode for ECLiPSe is significantly enhanced.
Kernel features
-
Revised triggering mechanism for the garbage collector, reducing garbage
collection overhead. The new global flag gc_policy can be used to
choose between a slower memory-greedy policy (fixed) and
faster but more memory-intensive one (adaptive, the default).
-
New control features for raising events on failures.
-
New global flag version_as_list returns version information as list
of major version number, minor version number and build number. Lexicographic
comparison can be used on such lists to compare the version age.
-
New syntax option read_floats_as_breals forces floating point numbers
in the input to be parsed as bounded reals (intervals) rather than floats.
-
New stream property handle_io added, indicating that the stream
can currently handle I/O.
-
The global flag hostname now does a better job of returning a full
pathname for the host.
Incompatibilities
-
Some minor changes and incompatibilities: see Java-ECLiPSe
interface changes from 5.2 to 5.3
-
The default timer for after-events is now real rather than virtual.
This was changed because virtual timers are not available on all platforms
and in all variants of ECLiPSe systems. When virtual timers are available,
the setting can be changed by calling set_flag(after_event_timer, virtual).
-
The default strategy in lib(branch_and_bound) has changed. If the new behaviour
should be worse, you can get the old behaviour by explicitly choosing strategy:step.
-
If a system error is raised when connect/2 tries to make a client socket
connection (e.g. because the connection is refused), the socket stream
is closed. Previously the stream remained open and the user can attemp
another connection. This was changed because under some version of SunOS
5, the socket was left in an undefined state.
-
The behaviour of select/3 on the null stream has changed: It is now
never considered ready for I/O.
-
The new garbage collection policy may not suit machines with little main
memory. In that case, either start ECLiPSe with a smaller global/trail
stack limit (-g option or preference setting in tkeclipse), or set the
gc_policy flag to fixed.
Previous release notes