ECLiPSe 7.2 Release Notes
Version 7.2 (DRAFT)
Not yet frozen, features may still be added...
Constraint Solvers
- library(eplex_highs)
- The LP/MIP Solver Interface library(eplex) now also works with the free HiGHS solver.
Other Libraries
New Libraries
Library Enhancements
- lib(format)
- Complete implementation of traditional format/2,3 predicate, conforming to PIP-0110.
- lib(m_tree234)
- Implemented iterators and performance improvements.
- lib(test_util)
- Added features to unit testing library (naming and skipping tests, comparing stream output).
Language Enhancements
- Cyclic Terms
-
The system can now write and read cyclic terms, using attribute notation.
In write_term/2,3, this is controlled by the
cycles(Bool)option.?- X = f(X), write_term(X, [nl]). f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(...)))))))))))))))))))) ?- X = f(X), write_term(X, [cycles, nl]). _121{= : f(_121)} ?- write_term(X{= : f(X)}, [cycles, nl]). _150{= : f(_150)}
Built-in Predicates
- write_term/2,3, open/4 and set_stream_property/3
-
The write_term/2,3 built-in understands a number of new options
(following PIP-0105).
These can also be used to set stream-defaults for other output predicates:
- anonymous(Vars) - print given variables as _
- cycles(Bool) - detect and print cyclic terms using attribute syntax
- float_precision(Prec) - limit number of decimal digits printed in floats
- integer_base(Base) - base (radix) for integer printing
- partial(Bool) - if necessary, insert space to separate tokens
- portable(Bool) - ignore most operators, but keep list syntax
- spacing(Style) - control layout spacing
- text_max(Max) - limit print length of atoms and strings
- current_prolog_flag/2 and set_prolog_flag/2
- These have been moved out of the ISO-compatibility libraries and are now available as ECLiPSe-built-ins. They are simply aliases for get_flag/2 and set_flag/2 -- all flags are now accessible by both sets of predicates, independent of language choice (eclipse_language/iso).
- printf/2,3
- Accept non-floats in floating point formats (e/E/f/g) and convert via float/2.
- read_term/2,3
-
New options
- annotated(-AnnTerm) - returns the annotated form of the term read
- line(-Line) - returns the starting line number of the term read
Miscellaneous
- When printing floats precisely (writeq, etc), 16 digits may now be printed instead of 17, if sufficient.
- The 'unknown' flag now controls behaviour on calling undefined predicates also in an eclipse_language context.
- The 'unknown_option' flag has been added. It controls the behaviour on encountering unknown options in certain built-ins (error/warning/ignore).