|
4 | 4 | NumPy 1.26.0 Release Notes
|
5 | 5 | ==========================
|
6 | 6 |
|
7 |
| -The NumPy 1.26.0 release is a continuation of the 1.25.x release cycle, but |
8 |
| -with the distutils based build replaced by meson in order to work with Python |
9 |
| -3.12. |
| 7 | +The NumPy 1.26.0 release is a continuation of the 1.25.x release cycle with the |
| 8 | +addition of Python 3.12.0 support. Python 3.12 dropped distutils, consequently |
| 9 | +supporting it required finding a replacement for the setup.py/distutils based |
| 10 | +build system NumPy was using. We have chosen to use the Meson build system |
| 11 | +instead, and this is the first NumPy release supporting it. This is also the |
| 12 | +first release that supports Cython 3.0 in addition to retaining 0.29.X |
| 13 | +compatibility. Supporting those two upgrades was a large project, over 100 |
| 14 | +files have been touched in this release. The changelog doesn't capture the full |
| 15 | +extent of the work, special thanks to Ralf Gommers, Sayed Adel, Stéfan van der |
| 16 | +Walt, and Matti Picus who did much of the work in the main development branch. |
| 17 | + |
| 18 | +The highlights of this release are: |
| 19 | + |
| 20 | +- Python 3.12.0 support. |
| 21 | +- Cython 3.0.0 compatibility. |
| 22 | +- Use of the Meson build system |
| 23 | +- Updated SIMD support |
10 | 24 |
|
11 | 25 | The Python versions supported in this release are 3.9-3.12.
|
12 | 26 |
|
| 27 | +Build system changes |
| 28 | +==================== |
| 29 | + |
| 30 | +In this release, NumPy has switched to Meson as the build system and |
| 31 | +meson-python as the build backend. Installing NumPy or building a wheel can be |
| 32 | +done with standard tools like ``pip`` and ``pypa/build``. The following are |
| 33 | +supported: |
| 34 | + |
| 35 | +- Regular installs: ``pip install numpy`` or (in a cloned repo) |
| 36 | + ``pip install .`` |
| 37 | +- Building a wheel: ``python -m build`` (preferred), or ``pip wheel .`` |
| 38 | +- Editable installs: ``pip install -e . --no-build-isolation`` |
| 39 | +- Development builds through the custom CLI implemented with |
| 40 | + `spin <https://github.com/scientific-python/spin>`__: ``spin build``. |
| 41 | + |
| 42 | +All the regular ``pip`` and ``pypa/build`` flags (e.g., |
| 43 | +``--no-build-isolation``) should work as expected. |
| 44 | + |
| 45 | +NumPy-specific build customization |
| 46 | +---------------------------------- |
| 47 | + |
| 48 | +Many of the NumPy-specific ways of customizing builds have changed. |
| 49 | +The ``NPY_*`` environment variables which control BLAS/LAPACK, SIMD, threading, |
| 50 | +and other such options are no longer supported, nor is a ``site.cfg`` file to |
| 51 | +select BLAS and LAPACK. Instead, there are command-line flags that can be |
| 52 | +passed to the build via ``pip``/``build``'s config-settings interface. These |
| 53 | +flags are all listed in the ``meson_options.txt`` file in the root of the repo. |
| 54 | +Detailed documented will be available before the final 1.26.0 release; for now |
| 55 | +please see `the SciPy "building from source" docs |
| 56 | +<http://scipy.github.io/devdocs/building/index.html>`__ since most build |
| 57 | +customization works in an almost identical way in SciPy as it does in NumPy. |
| 58 | + |
| 59 | +Build dependencies |
| 60 | +------------------ |
| 61 | + |
| 62 | +While the runtime dependencies of NumPy have not changed, the build |
| 63 | +dependencies have. Because we temporarily vendor Meson and meson-python, |
| 64 | +there are several new dependencies - please see the ``[build-system]`` section |
| 65 | +of ``pyproject.toml`` for details. |
| 66 | + |
| 67 | +Troubleshooting |
| 68 | +--------------- |
| 69 | + |
| 70 | +This build system change is quite large. In case of unexpected issues, it is |
| 71 | +still possible to use a ``setup.py``-based build as a temporary workaround (on |
| 72 | +Python 3.9-3.11, not 3.12), by copying ``pyproject.toml.setuppy`` to |
| 73 | +``pyproject.toml``. However, please open an issue with details on the NumPy |
| 74 | +issue tracker. We aim to phase out ``setup.py`` builds as soon as possible, and |
| 75 | +therefore would like to see all potential blockers surfaced early on in the |
| 76 | +1.26.0 release cycle. |
| 77 | + |
| 78 | +Contributors |
| 79 | +============ |
| 80 | + |
| 81 | +A total of 11 people contributed to this release. People with a "+" by their |
| 82 | +names contributed a patch for the first time. |
| 83 | + |
| 84 | +* Bas van Beek |
| 85 | +* Charles Harris |
| 86 | +* Matti Picus |
| 87 | +* Melissa Weber Mendonça |
| 88 | +* Ralf Gommers |
| 89 | +* Sayed Adel |
| 90 | +* Sebastian Berg |
| 91 | +* Stefan van der Walt |
| 92 | +* Tyler Reddy |
| 93 | +* Warren Weckesser |
| 94 | + |
| 95 | +Pull requests merged |
| 96 | +==================== |
| 97 | + |
| 98 | +A total of 18 pull requests were merged for this release. |
| 99 | + |
| 100 | +* `#24305 <https://github.com/numpy/numpy/pull/24305>`__: MAINT: Prepare 1.26.x branch for development |
| 101 | +* `#24308 <https://github.com/numpy/numpy/pull/24308>`__: MAINT: Massive update of files from main for numpy 1.26 |
| 102 | +* `#24322 <https://github.com/numpy/numpy/pull/24322>`__: CI: fix wheel builds on the 1.26.x branch |
| 103 | +* `#24326 <https://github.com/numpy/numpy/pull/24326>`__: BLD: update openblas to newer version |
| 104 | +* `#24327 <https://github.com/numpy/numpy/pull/24327>`__: TYP: Trim down the ``_NestedSequence.__getitem__`` signature |
| 105 | +* `#24328 <https://github.com/numpy/numpy/pull/24328>`__: BUG: fix choose refcount leak |
| 106 | +* `#24337 <https://github.com/numpy/numpy/pull/24337>`__: TST: fix running the test suite in builds without BLAS/LAPACK |
| 107 | +* `#24338 <https://github.com/numpy/numpy/pull/24338>`__: BUG: random: Fix generation of nan by dirichlet. |
| 108 | +* `#24340 <https://github.com/numpy/numpy/pull/24340>`__: MAINT: Dependabot updates from main |
| 109 | +* `#24342 <https://github.com/numpy/numpy/pull/24342>`__: MAINT: Add back NPY_RUN_MYPY_IN_TESTSUITE=1 |
| 110 | +* `#24353 <https://github.com/numpy/numpy/pull/24353>`__: MAINT: Update ``extbuild.py`` from main. |
| 111 | +* `#24356 <https://github.com/numpy/numpy/pull/24356>`__: TST: fix distutils tests for deprecations in recent setuptools... |
| 112 | +* `#24375 <https://github.com/numpy/numpy/pull/24375>`__: MAINT: Update cibuildwheel to version 2.15.0 |
| 113 | +* `#24381 <https://github.com/numpy/numpy/pull/24381>`__: MAINT: Fix codespaces setup.sh script |
| 114 | +* `#24403 <https://github.com/numpy/numpy/pull/24403>`__: ENH: Vendor meson for multi-target build support |
| 115 | +* `#24404 <https://github.com/numpy/numpy/pull/24404>`__: BLD: vendor meson-python to make the Windows builds with SIMD... |
| 116 | +* `#24405 <https://github.com/numpy/numpy/pull/24405>`__: BLD, SIMD: The meson CPU dispatcher implementation |
| 117 | +* `#24406 <https://github.com/numpy/numpy/pull/24406>`__: MAINT: Remove versioneer |
0 commit comments