ECLiPSe 7.1 Release Notes

Version 7.1 (DRAFT)

Not yet frozen, features may still be added...

Built-In Predicates

Engines and Threads

New predicate

engine_clone(+Original, +Clone, +Options)
Make a duplicate of the Original engine by copying all its computational state.

Random Numbers

Multiple random number generators can now be selected as random_mode via set_flag/2:

lcg
(default) a Linear Congruential Generator with a period of 2^31-1.
xs
xorshift64* generator with a period of 2^64-1.
system
the system's random() or rand() library function.
and a new function/predicate has been added (in addition to existing random/1 and frandom/1):
random(+Limit, -N), N is random(Limit)
Generates a random integer N between 0 and Limit-1.

Constraint Solvers

EPLEX (LP/MIP Solver Interface)

The LP/MIP Solver Interface library(eplex) now also works with the free GLPK (GNU Linear Programming Kit).

GFD Gecode Solver Interface

The Gecode interface library(gfd) has been updated for Gecode 6.2.

IC Solver (interval and finite domain constraints)

The interval solver library(ic) now supports additional functions in constraint expressions:

floor(Expr)
Expr rounded down to nearest integer.
ceiling(Expr)
Expr rounded up to nearest integer.
truncate(Expr)
Expr rounded to nearest integer toward zero.
Expr1//Expr2
Integer division, rounding towards zero. This is only defined over integral arguments and yields an integral result.
Expr1 rem Expr2
Remainder corresponding to integer division //. This is only defined over integral arguments and yields an integral result.
New constraints:
?BoolExprX <=> ?BoolExprY
BoolExprX and BoolExprY are equivalent.
<=>(?BoolExprX, ?BoolExprY, ?Bool)
Bool is the truth value of the equivalence BoolExprX <=> BoolExprY being true.

Other Libraries

New Libraries

lib(json)
Read/write JSON format.

Library Enhancements

library(hash)
Add hash_update/5 and hash_map/3.
library(csv)
Add options and csv_read_row/3.
library(lips)
Made thread-safe and added par_lips/1.

Kernel and Built-in Predicates

Named references
References can now be initialised with a free variable. Added built-in swapref(+Name, -OldValue, ?NewValue)

Supported Architectures

This release is available for the following architectures: