v0.5.0
Highlights and important notes
We've switched our Fortran SLICOT base from the older, GPL-licensed version 5.0 to the now BSD-licensed version of SLICOT hosted on Github. This specific version of Slycot is based on SLICOT v5.8.
Slycot itself remains GPL-licensed for the time being.
The minimum supported Python version is 3.7; support for Python 2, 3.5, and 3.6 has been dropped. We have tested this release against Python versions 3.7 to 3.10.
Slycot does not build against Numpy v1.23.0 due to numpy/numpy#21889; however, this is a build-time only bug which was fixed in NumPy v1.23.1, and Slycot v0.5.0 can be installed and used with any NumPy which supports the supported Python versions.
New features and updates
We've added a wrapper for SLICOT AB13MD (#171), which computes the upper bound for the structured singular value of a system and given uncertainty structure.
SB03OD used to raise an error if the Schur factor supplied in array A was unstable; now, a warning is raised, and the eigenvalues are still returned (via #176, which updates to SLICOT v5.8).
Fixes
MB03RD correctly handles X=None, the default (#139).
In SB03MD, the LDWORK value computed for discrete-time case was corrected (#166).
Build
There have been improvements and fixes to the setup.py, CMakeLists.txt, and MANIFEST.in.
Testing
AG08BD testing was made more numerically robust.
A test for XERBLA behaviour was fixed.
In continuous integration:
-
we've moved from Travis CI to Github Action for continuous
integration (Github Actions added in #140, Travis CI removed in #150) -
we use pip for building, instead of invoking setup.py directly
Pull requests and issues associated with the release
PRs merged: #135, #136, #139, #140, #141, #142, #145, #147, #149, #150, #151, #152, #158, #159, #160, #161, #166, #167, #171, #173, #174, #175, #176, #178
Issues fixed: #134, #138, #95, #108, #137, #144, #146, #154, #123, #156, #157, #162, #155, #165, #46, #163, #172
Issues closed ("wont-fix"): none
Contributors
Contributors to this release are:
- Art J. R. Pelling (@artpelling)
- Ben Greiner (@bnavigator)
- Rory Yorke (@roryyorke)