Release Notes

Version 5.6 (2003-06-07)

The highlights in this version are new libraries for column generation, symbolic constraint solving, and code analysis, as well as new visualisation features.

LP/MIP solver interface

New Libraries

See above.
See above.
See above.
A port of lib(probing_for_scheduling) for lib(ic)
A solver for constraints over ordered symbolic domains. Supported constraints are equality, disequality, ordering and offset, as well as a number of global constraints like alldifferent, occurrences, etc.
A tool that enables predicate definitions or all calls to a specific predicate to be annotated with user-defined predicates.
These instrumentation predicates are free to perform such actions as collect program statistics or write debugging data to a stream during program execution.
A tool to produce execution profiles in terms of box-model ports.
A library for imposing time limits on goals in a flexible way.

Changes to Libraries

The Common Numeric Solver Interface (see Constraint Library Manual) has been extended, mainly providing aliases to make code easier to read and to reduce ambiguities: the six comparison constraints ($=, $\=, $>=, $=<, $>, $<) are aliases for (=:=, =\=, >=, =<, >, <), but avoid name clashes with the Prolog arithmetic comparisons. There are also two variants of the range constraint ::/2, namely $::/2 to impose real bounds, and #::/2 to impose bounds and integrality together.
lib(eplex), lib(ic_eplex)
Added  $::/2, $=/2, $=</2, $>=/2.
New options during setup: temp_dir, timeout. The location of where temporary files used by the external solver can now be specified, and this can  lead to significant improvements in performances if the temporary files were written to a relatively slow file system like NFS.
Warnings are printed when trying to load incompatible variants of this solver.
The piecewise_linear_hull/3 constraint from lib(eplex_relax) has been folded into lib(eplex) and extended to work with eplex instances.  A port of this constraint has also been added to lib(ic_eplex).
Added #::/2 and #::/3.
Warnings are printed when trying to use lib(fd) and lib(ic) together.
Added piecewise_linear/3.
Adde #::/2, $::/2, $=/2, $>=/2, $=</2, $>/2, $</2, $\=/2.
Warnings are printed when trying to use lib(fd) and lib(ic) together.
Added a full set of equality, inequality, disequality and range constraints, and their reified versions, according to the common solver interface.
Added critical_links/2
Added get_var_name/2
Upgraded to John Fletcher's release 1.6.

Development Environment

Visualisation TkECLiPSe/Development tools: Emacs eclipse mode enhancements Unix man pages for the eclipse executables have been added.

Embedding and Interfacing

Improved data encoding in high-level interface: We have defined a new version of the EXDR data interchange format (version 2). This format allows more
compact encodings, in particular for small integers and (optionally) for repeated occurrences of strings and functors. The corresponding ECLiPSe, Java and Tcl implementations have been updated. See the Embedding and Interfacing Manual and write_exdr/2 for details.

Implemented a new protocol ("multitasking") which allows multiple ECLiPSe peers to become active quasi-simultaneously in response to certain events (e.g. breakpoints) in the ECLiPSe execution. See the documentation of peer_do_multitask/1, etc and the Java API documentation.

New low level embedding interface functionality:

Kernel features

New features:


There are only minor incompatibilities with the previous release:

Previous release notes