|
Release Notes
|
Version 5.4 (2002-05-15)
This highlights in this version are the first release of the new constraint
visualisation tools, a fully featured version of the new interval
constraint solver (ic), major enhancements to the LP/MIP interface
(eplex), and a code coverage analysis tool.
Libraries
-
lib(ic) enhancements
-
Extension of the search facilities provided by the IC library to include
a port of the fd_search library, providing a convenient and flexible alternative
to standard labelling for finite domain problems.
-
Various new libraries for global constraints and interfacing with eplex
(see below).
-
Optimisations and bug fixes.
-
lib(eplex) enhancements
-
Implementation of multiple eplex-instances and independent solvers.
-
New, simple API for working with eplex-instances (eplex_xxx predicates).
-
ic can now be used for to represent eplex intervals instead of range.
-
Option to suppress initial solving when setting up a solver demon.
-
Presolve option can now be set independently for every solver instance.
-
Removed obsolete simplify- and integers(all) options.
-
New low-level predicates lp_var_get/4 and lp_add_constraints/3.
-
Added support for CPLEX 7.5 and XPRESS 13.10 (support withdrawn for CPLEX
5.0, CPLEX 6.0, XPRESS 12.50)
-
New library: lib(ic_eplex)
-
A port to IC of the eplex library.
-
New library: lib(ic_global)
-
A port to IC of the fd_global library (containing various global constraints
such as element/3, atmost/3, sorted/2, etc.).
-
New libraries: lib(ic_cumulative), lib(ic_edge_finder) and lib(ic_edge_finder3)
-
Ports to IC of the FD's cumulative, edge_finder and edge_finder3 libraries
(containing various strength disjunctive and cumulative constraints).
-
New library: lib(java_vc)
-
An implementation of a visualisation client which adheres to the new visualisation
protocol
-
New library: lib(vc_support)
-
Support library for anybody wishing to implement their own visualisation
clients. See below for more details
-
New library: lib(viewable)
-
Library for annotating programs so as to allow visualisation of the search
-
New library: lib(coverage)
-
A tool for obtaining and presenting code coverage information.
-
New library: lib(constraint_pools)
-
Support for the creation of solver instances and storage pools.
-
New library: lib(module_options)
-
Handling options for other libraries.
-
New library: lib(xml)
-
A public domain library for parsing and generating XML, by John
Fletcher.
-
Minor enhancements:
-
lib(pretty_printer)
-
More options, use of style sheets, coverage functionality moved to lib(coverage)
-
lib(remote_tools)
-
More flexible method of connecting the remote tools added
-
lib(source_processor)
-
New options to suppress macro-expansion and clause-expansion.
-
Withdrawn:
-
lib(ria)
-
superseded by lib(ic)
-
lib(r)
-
superseded by lib(eplex)
-
lib(ptags), lib(xref)
-
to be replaced by new implementations
Visualisation Tools
First release of Java(TM) based visualisation client. The
java_vc
library provides a simple but powerful user interface to graphically render
the state of programs which have been annotated with predicates from the
viewable
library. Features include
-
Multiple independent views of the any given viewable structure
-
Graphical Desktop viewer for providing semantic background contexts
when visualising problems
-
Automatic recording of visualisation preferences on a per viewable
basis
Please have a look at the new Visualisation Manual.
Development Environment
-
New compiler warnings: referring to a nonexistent module (84), and referring
to a predicate not exported from its definition module (85)
-
When referring to a module which does not exist, the system will now try
to find and load a library of this name. E.g. calling util:streams will
automatically trigger loading of library(util).
-
Emacs eclipse mode significantly enhanced. Highlights:
-
menus for editing & execution
-
Eclipse inferior mode improved; tktools debugging supported
-
tested for GNU Emacs 20.7 and 21.1, and XEmacs 21.1.14
-
TkECLiPSe/TkTools enhancements:
-
tracer filter condition now works across debuggable sub-trees
-
search facility for predicate browser
-
change directory option added to File menu
Kernel features
New built-in predicates:
-
read_term/2,3 and write_term/2,3 - ISO-Prolog compatible predicates for
I/O with options
-
bag_abolish/1, bag_retrieve/2 - in addition to the existing bag_dissolve/1
-
debug_reset/0 - reset the debugger (invocation numbers and filter conditions).
trace/1 and debug/1 no longer do this.
-
e/1 and pi/1 - return the corresponding numeric constants
-
enter_suspension_list/3 - enter suspension into an attribute's suspension
list
-
events_after/1 - posting several after_events atomically
-
ground/1 - the opposite of nonground/1
New features:
-
New syntax: property(arity) of ... to refer to the arity of a
declared structure symbolically.
-
Output streams have a new property output_options. This makes
it possible to modify the way terms are printed on a per-stream basis (quotes,
depth limit, variable names, attributes). The settings act as a default
and can be overridden by write_term/2,3 and printf/2,3. See set_stream_property/3
and get_stream_info/3.
-
Input streams have a new property macro_expansion which allows
to disable read-macro expansion on a per-stream basis.
-
Two printf formats: "_" to print all variables as a simple underscore,
"I" in printf format string to print $VAR/1 terms as variables. Moreover,
a new %W format is supported which allows to inherit and possibly override
the stream's default output settings.
-
current_module_predicate/2 supports two new predicate classes, no_module
and no_export.
-
DCGs now know about do-loops, so do-loops can be used without braces and
will correctly thread the accumulator through.
-
User-defined functions in arithmetic expressions can now be module-qualified.
-
Bounded real exponentiation operator implemented.
Incompatibilities
-
Some instances of error 68 (undefined predicate) and 80 (no such module)
have changed to error 86 (no lookup module)
-
Event 166 is now raised at the end of a compilation, in addition to event
139
-
lib(eplex): lp_var_get/3 is superseded by lp_var_get/4, simplify- and integers(all)-options
no longer supported, behaviour of presolve flag changed. Unification of
two eplex variables representing different columns in the same problem
now imposes an equality constraints. Use of ic for intervals may lead to
the appearance of breals instead of floats in certain situations.
-
during debugging, the invocation number for goals now continues from one
debuggable sub-tree to the next during the same execution, instead of restarting
at each sub-tree.
-
the for/3,4 specifier in do-loops has become slightly more restrictive
in not allowing runtime-expressions without eval/1 wrappers.
-
Logarithmic interval splitting (used in locate/3,4 and squash/3 of lib(ic)
and lib(ria)) has been rewritten and may split at different values.
Previous release notes