Release notes v 2.8.8
cmake: the compilation of ibex with cmake has made significant progresses. Now it works well under linux and MacOS both in static/dynamic. It also works under Windows but the LP library cannot be set yet. Note that binaries for Windows are now also periodically published. With cmake, plugins become packages and are installed differently, as separate libraries. See the installation documentation. However, the java, sip or affine plugins are not yet ready to be compiled with cmake.
waf is still the official way to compile ibex.
project organization. Plugins have been moved to different repositories. The global optimization has been reintegrated into the core library. There is no
new symbolic simplification engine. Now there is an option
ibexoptthat allows to choose the "level" of symbolic simplification. The new engine is more powerful as it allows to merge equivalent terms in a polynomial of expressions. Unfortunately, the process can be slow (and even blowup if you chose the full-developing variant) and part of the DAG structure may also be lost. Which means that the running time may be worse, even if we leave aside the symbolic processing time.
For these reasons, the default simplification level (=1) in
ibexoptcorresponds to the old algorithm, which has been slightly improved.
mutable constants. Now, if you precede a constant by a star '*' in a Minibex file, e.g.,
constants * x = 1; // ---> mutable constant y = 2; // regular constant
the constant is accessible in c++ and can be dynamically changed! See the
System::constant(char*) function. But be aware that a mutable constant also hinders the simplification process... to be used with parsimony!
definition domain. It is possible now to generate from a
Functionobject the system that characterizes its definition domain. See #456
- important bug fixes in
ibexsolve(#470) and operator& (#463)
- Fix COV format id/version mixup
- Fix of a bug when comparing expressions with mutable constants
- Fix #468, #454, #425, #452, #450, #446
- Fix #437. The "infeasible" return status of
ibexoptalso includes the case of all feasible points outside the definition domain of the goal function. See the discussion (in French)
- iterators for Array,
Mapkeys with template type