Releases: esa/pagmo2
pagmo 2.19.1
This is a maintenance release featuring several fixes. The full changelog, as usual, is available here:
pagmo 2.19.0
This new pagmo release features several fixes, a few feature additions and a performance optimisation for highly parallel workloads.
The full changelog, as usual, is available here:
pagmo 2.18.0
Full changelog: https://esa.github.io/pagmo2/changelog.html
Support for non-x86 CPUs
pagmo 2.18.0 adds official support for non-x86 processors, specifically 64-bit ARM and PowerPC. Automated builds on these architectures have been added to the CI pipeline, courtesy of travis and circleci.
Serialisation changes
This release includes various changes in the serialisation of the main classes. Although these changes are internal and they do not affect the public API, they do affect the data format of the serialised archives. As a result, it's not possible in pagmo 2.18.0 to load from archives produced with earlier versions of pagmo.
Build system fixes & improvements
pagmo’s build system now honours the CMAKE_INSTALL_LIBDIR
setting on Linux to determine the library installation path.
pagmo 2.17.0
This is a small release to fix pagmo's compatibility with recent TBB versions (a.k.a., oneTBB).
The full changelog, as usual, is available here:
pagmo 2.16.1
This is a minor release which fixes a few build issues recently reported by our users. As a consequence of these fixes, pagmo now requires CMake >= 3.8 when compiling from source.
Note also that, thanks to the recent availability of an Ipopt Windows package in conda-forge, the pagmo conda package for Windows is now built with Ipopt support turned on.
As usual, the full changelog is available here:
pagmo 2.16.0
This new release focuses mostly on polish and bug fixes. Specifically:
- a couple of important issues have been rectified in the PSO and genetic algorithms,
- adding individuals to a population is now substantially faster,
- various build issues affecting newer versions of pagmo's dependencies have been corrected.
Other changes:
- pagmo now requires a C++17-capable compiler,
- the pagmo library can now be built also a static library,
- pagmo can now be built with link-time optimisations enabled.
The full changelog, as usual, is available here:
pagmo 2.15.0
This new pagmo release features various enhancements to the topology API, and additional runtime introspection capabilities for all type-erased classes.
It also fixes a serious issue appearing on certain compiler/platform combinations where dynamic_cast
does not work across dlopen()
ed shared libraries. Another important fix involves compilation with recent CMake versions.
The full changelog, as usual, is available here:
pagmo 2.14.0
This new pagmo release comes with a couple of very important internal changes in the project:
- the Python bindings (pygmo) have been split off into a separate and independent project (https://github.com/esa/pygmo2). Although pagmo and pygmo were already clearly separated, residing into separate directories of the pagmo source tree, the fact that they were bundled together in the same repository was the source of a variety of complications in the build system and in the packaging pipeline, and also a source of confusion for newcomers to the project. Hopefully this new setup spells out more clearly the relation between pagmo and pygmo: pygmo is a Python extension module which depends on the pagmo C++ library.
- We also took advantage of the project split to move the pygmo bindings from Boost.Python to the more modern pybind11 (https://github.com/pybind/pybind11). This switch should have a variety of benefits, including reduced CPU and memory usage during compilation, increased performance at runtime, better integration with NumPy, and reliance of a more actively maintained project.
The switch to pybind11 was a massive rework of the pygmo codebase, which, hopefully, should have small effects on pygmo users. The API of pygmo has not changed, however some small details did change (e.g., pybind11 sometimes translates C++ exceptions to Python differently from Boost.Python). We tested this pygmo release particularly thoroughly, however, because of the scope of the changes it is likely that we might have missed something. Please report any issue you find to our bugtracker:
https://github.com/esa/pygmo2/issues
This release also brings a couple of new features and the usual assortment of fixes and optimisations. The full changelogs, as usual, are available here:
https://esa.github.io/pagmo2/changelog.html
https://esa.github.io/pygmo2/changelog.html
pagmo 2.13.0
In this release of pagmo, the batch fitness evaluation framework has been completed on the Python side. This means that now it is possible to exploit fine-grained parallelisation (e.g., parallel initialisation of populations/islands/archipelagos, parallelisation of the inner loops of some algorithms, etc.) also for user-defined problems implemented in Python. Two pythonic batch fitness evaluators are available, one based on multiprocessing and the other using ipyparallel instead (which makes it possible to do parallel objective function evaluations on a cluster).
This release also contains a couple of important bugfixes, one of them fixing a crash due to mishandling of NaN values in the hypervolume utilities.
NOTE: as anticipated, in this release of pygmo Python 2.7 support has been dropped. pygmo now requires at least Python 3.4.
The full changelog, as usual, is available here:
pagmo 2.12.0
This new pagmo/pygmo release features 2 brand new algorithms (NSPSO and MHACO), and an important feature addition to GPSO, which can now use the batch fitness evaluation scheme.
On the python side, there are some breaking changes in the API of ipyparallel_island
, which should take care of various issues that we have been intermittently experiencing on our CI setup.
This release features also the usual build system/doc improvements/maintenance and assortment of small fixes.
As a public service announcement, this will be the last release of pygmo to officially support Python 2.7, which, as you may know, is reaching its end of life very soon (https://pythonclock.org/).
We do not plan to actively go and remove existing Python 2 support code within pygmo (at least not initially), but we will simply stop ensuring that pygmo does work on Python 2, and new pygmo code will target Python 3 exclusively. We will also stop producing binary packages for Python 2, both pip and conda (please note that conda-forge will also remove Python 2 support soon).
If anyone in the pygmo community wants to take charge of maintaining Python 2 support, we are open to discussions in this sense (please come over to our gitter channel: https://gitter.im/pagmo2/Lobby).
The full changelog, as usual, is available here: