First of all, PolyBoRi 0.8 corrects some critical design issues. The most important change was, that we said good bye to the active ring. While each polynomial object already had a reference to its ring, default constructors of those objects used the active ring for initialization. This frequently had lead to inconsistencies which we can avoid now. For you, this means that polynomial (and likewise) objects are not default-constructible any more. Since they need a valid ring reference on construction you have to provide the latter as constructor argument.
Second we improved the scons-based build system. Among classical Linux, we officially support platforms like Cygwin, Apple's Darwin, Gentoo and Gentoo-Prefix (even on Darwin). PolyBoRi is also prepared for generating rpm- and deb-based packages.
Finally, the compatibilty with recent release of upstream libraries like libm4ri was re-established.
We also wanted to make our improved build system and various compatibility and bug fixes available to ongoing projects, that are based on PolyBoRi 0.7.x. Hence, we backported those improvements to the 0.7 branch. The result was PolyBoRi 0.7.2 making today a double release day.
The full changelog of release 0.8.0 reads as follows:
- improved standard-conformity, multiprocessing safety, and usability
- renamed subdirectory polybori to libpolybori
- new directory structure in libpolybori/include and groebner/include
- libgroebner renamed libpolybori_groebner
- using only part of CUDD (linked into libpolybori)
- officially introducing VariableBlock
- removed all global settings and BooleEnv itself
- added factories and RingContext to replace active/global ring
- improved multiprocessing and pickling
- added inSingleBlock/in_single_block to polynomials
- for avoiding name clashes Cudd's headers install into include/polybori/cudd
- Introducing WeakRingPtr for managing weak references to rings on C++ level
- python level: deprecated Ring changing routines change_ordering, set_variable_names, append_block removed, use extended arguments of Ring.__init__() and Ring.clone().
- ipython 0.11 compatibility established (hint from the Fedora team. Thanks!)
- libM4RI compatibility re-established (hint from Martin Albrecht. Thanks!)
- distributed targed uses world-readable permissions
- cluster.py: very experimental Python module for finding an overdetermined subset of equations
In the next weeks, small tutorials and will follow at this place and at Singular Faces.