G12 MiniZinc version 1.4 released
From the NEWS:
G12 MiniZinc Distribution 1.4
Changes to the MiniZinc language:
* Input files are now encoded in UTF-8.
* A new built-in function, is_fixed/1, can be used to test whether a value is known to be fixed at flattening time.
* Two new built-in functions, iffall/1 and xorall/1, can be used to perform n-ary xor operations on arrays of Booleans. They are defined as follows:
iffall([a1, a2, ..., aN]) <=> a1 xor a2 xor ... xor aN xor true
xorall([a1, a2, ..., aN]) <=> a1 xor a2 xor ... xor aN xor false
Changes to the FlatZinc language:
* Variable and parameter names may now be optionally prefixed with one or more leading underscore. For example, the following are now valid FlatZinc variable names:
The rationale for this change is to provide a way for mzn2fzn to name introduced variables in a way that is guaranteed not to clash with the variable and parameter names from the MiniZinc model.
Names for predicates, predicate parameters and annotations cannot have leading underscores.
* A new FlatZinc builtin has been added: array_bool_xor/1.
Changes to the MiniZinc evaluation driver:
* A new command line option, --random-seed, can be used to specify a seed for the FlatZinc implementation's random number generator. (The options -r and --seed are synonyms for this option.)
The evaluation driver will invoke FlatZinc implementations with the -r option if it is invoked with --random-seed. (See the description of the FlatZinc command line interface in the minizinc(1) manual page for details.)
Changes to the G12 FlatZinc interpreter:
* There is now a domain consistent version of the alldifferent/1 constraint for G12/FD. (The domain consistent version is selected by annotating the constraint with the domain/0 annotation.)
* The --random-seed (-r) command line option described above is now supported by the interpreter.
Other changes in this release:
* The global constraints value_precede/3 and value_precede_chain/2 have been added to the MiniZinc globals library. The existing precedence/1 global constraint has been deprecated in favour of these.
* The problems from the 2011 MiniZinc challenge are now included in the MiniZinc benchmark suite.
Bugs fixed in this release:
* A bug in G12/FD's cumulative/4 global constraint that caused poor runtime performance when (extended) edge finding filtering was enabled has been fixed. [Bug #221]
* A bug that caused mzn2fzn to abort instead of printing an error message if a variable had the same name as a built-in function has been fixed. [Bug #231]
* A bug that caused an abort in flatzinc's LazyFD backend if there was an application of the built-in int_lin_le_reif/4 constraint with a zero coefficient has been fixed. [Bug #232]
* A bug that caused mzn2fzn and solns2out to abort when processing array literals whose elements were all empty set literals has been fixed. [Bug #256]
* mzn2fzn and solns2out no longer abort on array5d and array6d expressions. [Bug #259]
* The incorrect default definition of the int_set_channel/2 global constraint has been fixed. [Bug #255]
* A bug that caused mzn2fzn to use the wrong predicate name when flattening an application of a bodyless reified predicate definition has been fixed.
* The incorrect default decomposition of the roots/3 global constraint has been fixed.
* mzn2fzn and solns2out no longer abort if they encounter an arrayNd cast containing an empty array of decision variables.
* A bug that caused mzn2fzn to abort if a model contained an array lookup where the array expression was a literal containing only anonymous variables has been fixed. [Bug #68]
* A bug that caused reified var array lookups to be incorrectly flattened has been fixed. [Bug #244]
* Assignments to annotation variables are no longer emitted in MiniZinc output specifications. [Bug #269]
* solns2out now prints trailing comments in the solution stream if search terminates before it is complete. [Bug #270]
* A bug that caused a stack overflow in solns2out has been fixed. [Bug #272]
* A bug that caused a stack overflow in mzn2fzn on Windows systems has been fixed. [Bug #228]