Release Notes

Version 5.0 (Jun 23 2000)

Major module system revision
The module system has been simplified and at the same time enhanced by features which are important for the implementation of hybrid constraint solvers. See the new User Manual chapter on modules.
Textual interface/body separation given up
The module interface now simply consists of the set of export and reexport directives. A special tool (icompile/1,2) is provided to extract the interface from the source.
Reexport
The new reexport directive and its variants reexport-from and reexport-except allow flexible design of module interfaces. Modules can now extend, restrict, modify and combine multiple other module's interfaces.
Semantics of :/2
It specifies now the lookup-module for the predicate's name rather than the definition module, which is more flexible. A list of modules can be given on the left hand side in order to call e.g. several implementations of the same constraint simultaneously.
Global predicates no longer supported
Modules now have a "language-module" imported by default instead. This allows different modules to be written in different language dialects, a feature which we intend to exploit further in the future. The former Eclipse built-ins now come from the eclipse_language module.
Record/setval
The default visibility for record keys and non-logical variable names (as used in setval) has changed to local.
Dynamic visibility changes no longer allowed
This allows for better optimizations and error detection at compile time and encourages better style.
Import ambiguities
When importing two modules that export predicates of the same name, this only causes a conflict when the predicate is actually being used. In which case the ambiguity can be resolved by explicit import-from or by qualifying with :/2.
Abolish
This now only removes a predicate's clauses. All declarations about the predicate remain in effect. In particular, it is no longer possible to abolish an import link.
Compatibility Libraries
Code written in other language dialects should now be put in modules that use the corresponding compatibility package as their "language-module", rather than just importing the compatibility package.
Harmonised Constraint Syntax
The main arithmetic solvers now use a common constraint syntax for the basic arithmetic constraints. The aim is to use the same names for constraints with the the same declarative meaning and to use module qualification to distinguish different operational behaviours. Refer to the new chapter "Common Solver Interface" in the Library Manual.
Automated Documentation Support
The system now accepts a comment/2 directive which can be used to add structured documentation to your sources. The new library lib(document) extracts this and other information from the source and generates online documentation in html format.
New Comprehensive Reference Manual
A new online Reference Manual is included. This itself is now generated from source documentation and covers all built-in and library predicates (>1700).
Object file format
Modules can now be precompiled into Eclipse Object files (.eco). Refer to the new library lib(fcompile).
New Global Finite-Domain Constraints
The global constraints sorted/2, sorted/3 and alldifferent/2 have been added to library(fd_global). Also alldifferent/1 with new algorithm.
New Interval Constraints
The constraint piecewise_linear/3 has been added to library(ria). It relates two variable according to a piecewise linear function given by a list of points.
Generic Branch-and-Bound Library
A solver-independent library lib(branch_and_bound) replaces the finite-domain specific min_max-predicates. It can be configured for stepwise improvement or dichotomic search.
Cplex/Xpress-MP interface
Support for quadratic objective functions in lib(eplex).
TkEclipse Development GUI
Many details have been improved. A Preference Editor and a Library Browser have been added. New options to create and clear the toplevel module.
Tcl/Tk interface
This release of ECLiPSe goes with Tcl/Tk 8.3.
64-bit Version
This release is available for 64-bit Alpha/Linux systems.
New Built-In Predicates
Module-related: I/O-related: Conversions: Control: Attributes Other
New Libraries
Compatibility Issues
The most likely problems when upgrading from ECLiPSe 4.2 are related to the module system changes and new naming conventions in the constraint libraries: Other minor compatibility issues are:
Miscellaneous
ProTcl no longer supported
As of this release, the ProTcl interface to Tcl/Tk is no longer included or supported. Refer to the Embedding Manual for how to embed ECLiPSe applications into Tck/Tk and other host languages.

Previous release notes