« Google or-tools supports .NET | Main | A first look at Google or-tools C# interface »

G12 Zinc version 2.0 has been released

G12 Zinc version 2.0 has been released. The supported OS/machines are: Linux x86, Linux x86-64, Mac OS X x86, Mac OS X x86-64, Windows.

From the RELEASE_NOTES:
Release 2.0
-----------

New features in this release:

* G12/CPX: G12/CPX is a new lazy clause generation solver that can be used as a finite-domain solver with G12. It provides substantial performance and scalability improvements over the old lazy clause generation solver G12/FDX. G12/FDX itself is now deprecated and support for it will be dropped in a later release.

* Windows support: the platform is now supported on systems running Microsoft Windows.

Changes to the Zinc implementation:
* Zinc generated executables support a new command line option, --logging-level, that controls the amount of verbose output that is generated.

Release 1.1
-----------

This release of G12 is restricted to the MIP subset of G12. Only the Zinc MIP backend and MIP solver interfaces are included.
New features in this release:

* Gurobi support: the Gurobi optimizer () may now be used as an LP/MIP solver for G12.
Changes to the Zinc language:

* Zinc model and data files must now be UTF-8 encoded.

* The Zinc specification now defines the content type `application/x-zinc-output' which specifies how output should be produced by a Zinc implementation.

By default, the G12 implementation of Zinc now produces output that conforms to this content type. See Appendix D of the Zinc specification for further details.

* Zinc now supports C-style block comments.

* Unfixed sets with non-finite elements may now occur in more contexts. For example, the following is now accepted:

predicate disjoint(var set of $T: s1, var set of $T: s2) =
let {var set of $T: s = s1 intersect s2} in s = {};

* The following builtin operations are no longer supported:
- show_cond/1
- first/1
- second/1
- fst/1
- snd/1

Changes to the Zinc standard library:

* We have generalised the interface to the cumulative constraint so that it is polymorphic in the task type.

Changes to the Zinc implementation:

* The implementation now supports solver parameter annotations. These provide the Zinc modeller with more control over the low-level behaviour of a solver.
For example:

bool: do_logging; % Runtime data file parameter.
solve :: solver_parameters(cplex, [
logging(do_logging),
integer_solution_limit(50),
presolve(false)]) satisfy;

The above solver_parameters/2 annotation says that if we are using CPLEX as the solver then low-level tracing output should be enabled in CPLEX, we should limit ourself to at most 50 integer solutions and presolving should be disabled.

Note that the arguments of solver parameter annotations may be specified in runtime data files, as with the logging/1 annotation above.

* The implementation now supports backend parameter annotations. These provide the Zinc modeller with more control over the behaviour of a Zinc backend. For example:

bool: name_flag; % Runtime data file parameter.
solve :: backend_parameters([pass_through_names(name_flag)]) satisfy;

The above backend_parameters/1 annotation tell the backend to makes Zinc variable names available to the underlying solver(s) (where possible).

* Executables generated by the Zinc compiler may now have runtime data specified directly on the command line rather than in a file. This is done using the new command line option --cmdline-data (-D for short).
For example:

./foo -D "n = 7; m = 8;"

The above command runs the model foo with the integer parameters "n" and "m" set to 7 and 8 respectively.

* The Zinc compiler now generates more efficient code for comprehension expressions, particularly those with four or more generators.

* array3d, array4d, array5d and array6d casts are now supported in runtime data files.

Bugs fixed in this release:

* A transformation bug that was causing variables to be incorrectly annotated has been fixed. [Bug #165]

* Some bugs that caused transformation aborts have been fixed. [Bugs #155, #159 and #162]
Also, see the documentation page. And perhaps also my Zinc page.