|
Release Notes
|
Version 5.7 Build #60 (2004-09-22)
Build #60 and later contain the Cardinal set solver (lib(cardinal)),
contributed by Francisco Azevedo.
Version 5.7 (2003-12-14)
The highlights in this release are the MacOS X port, new visualisation
features, new code analysis tools, and a new version of the ic interval solver.
Platform Support
- MacOS X (ppc_macosx)
- ECLiPSe has been ported to Apple's MacOS X. TkECLiPSe comes in two
flavours, one for the native Aqua and one for the X11 windowing environment.
- SunOS 4 (sun4)
- Support for SunOS 4 has been withdrawn (sun4)
Installation
In addition to the traditional distribution in the form of .tgz files,
this release is also available as
- Windows installer
- download and execute the single file ECLiPSe5.7_??.exe
- RPM packages
- download the appropriate package from the RPMS subdirectory
Interval Solver lib(ic)
The low-level internals have been rewritten for improved performance.
Other modifications are
- Clarified the semantics of # constraints in the documentation (notably, all
subexpressions are constrained to be integral, not just the variables), and
implemented that semantics properly.
- Clarified that the precision argument in the locate and squash predicates
means either absolute or relative precision, whichever is greater, and fixed
a bug in the implementation.
- Generalised ::/3 so that it works for real variables and domains.
- Moved element/3 to lib(ic) since it did not belong in lib(ic_global) (though
it is still available there for compatibility).
- Moved the documentation for lib(ic_search) in with that of lib(ic), since it
did not make sense for it to be separate (the ic_search module is
automatically made available whenever the ic module is loaded).
Incompatibilities
- Some low-level ic_kernel primitives that worked directly on IC attributes
(rather than IC variables) have been removed since they are no longer
appropriate (ic_impose_min/2, ic_impose_max/2, ic_impose_bounds/3,
ic_exclude/2, ic_exclude_range/3, set_var_integer/1).
- The set of statistics returned by ic_stat has changed, since they are
dependent on low-level implementation details which have changed.
- Constraints will often be printed differently as a result of the new
internal representation.
LP/MIP solver interface lib(eplex)
Standalone eplex is now the default eplex variant that is loaded with
lib(eplex). We intend to phase out the older variants lib(ic_eplex) and
lib(range_eplex), so we strongly suggest that all users migrate to use
standalone eplex. The performance of standalone eplex has been
significantly improved, and should be faster than the older eplex for
most applications.
- lib(colgen) and lib(bfs) are now supported by standalone eplex.
- low level primitives are now available for users to directly add columns
to a problem, without going through lib(colgen):
- lp_add_constraints/4
- lp_add_columns/2
- Handlers for dealing with semi-fail or semi-success states after
invoking the external solver can now be specified on a per-problem
basis.
- Added reals/1 and lp_add_vars/2 to standalone eplex to add variables to
a problem.
- Xpress-MP problem can now be saved in their binary format with
eplex/lp_write. This allows a more exact state of the problem to be
saved than with LP/MPS formats.
- Support for Xpress-MP updated to 14.27 (CPLEX to 8.1).
New Libraries
- lib(graphviz)
- An simple yet powerful interface to the bundled Graphviz graph drawing
tools from AT&T.
- lib(instprofile)
- Two complementary techniques for the
profiling of user code with statistics/2 metrics, the first is instrumentation
based, while the second is sampling based.
- lib(mode_analyser)
- A tool that assists in the determination of
the mode/1 directive for predicate definitions.
Other Libraries
- lib(hash)
- New predicates: hash_entry/3,
hash_insert_suspension/3, hash_terminate_suspension/1
Visualisation
- Bar chart viewer.
- Integrated
Graphviz(AT&T) tools (no separate download needed).
- 0/1 and Capacity network viewers for network viewing.
- Standalone java viewer for graphs.
- Support for visualising non-"domain based" variables (eg eplex
and repair)
Development Environment
TkECLiPSe/Development tools:
- The cross referencer can be launched from the tkeclipse file-menu
- Inspector can now inspect contents of handles (if they support
the xget/3 protocol)
- The tracer filter can now stop after a condition has been met a
certain number of times
Toplevel:
- The toplevel's answer reporting has been modified because many
users found the "more" answer confusing. The system now always prints
"yes" when a solution was found, and additional information (like the
solution number and whether there may be more solutions) in parentheses.
Kernel
New features:
- Generalised notion of events. New predicates:
- event_create/2
- event_retrieve/2
- event_enable/1
- event_disable/1
- is_event/1
- New external interface built-in
- peer_deregister_multitask/1
- New global flag setting
- tmp_dir (determines where the system can store temporary files)
- Improved sharing of ground terms
Incompatibilities
Incompatibilities with the previous release are mainly limited to libraries:
- lib(eplex): Now defaults to "standalone eplex" which may require
some modifications to your code
- lib(ic): some changes to low-level primitives and printing format
- lib(suspend): The predicate #<=/2 has been removed
- The toplevel's answer printing has been modified
Previous release notes