Hi All,

On behalf of the NumPy team, I'm pleased to announce the release of NumPy
1.26.0rc1. The NumPy 1.26.0 release is a continuation of the 1.25.x release
cycle with the addition of Python 3.12.0 support. Python 3.12 dropped
distutils, consequently supporting it required finding a replacement for
the setup.py/distutils based build system NumPy was using. We have chosen
to use the Meson build system instead, and this is the first NumPy release
supporting it. This is also the first release that supports Cython 3.0 in
addition to retaining 0.29.X compatibility. Supporting those two upgrades
was a large project, over 100 files have been touched in this release. The
changelog doesn't capture the full extent of the work, special thanks to
Ralf Gommers, Sayed Adel, Stéfan van der Walt, and Matti Picus who did much
of the work in the main development branch.

The highlights of this release are:

   - Python 3.12.0 support.
   - Cython 3.0.0 compatibility.
   - Use of the Meson build system
   - Updated SIMD support
   - f2py fixes, meson and bind(x) support
   - Support for the updated Accelerate BLAS/LAPACK library

The Python versions supported by this release are 3.9-3.12. Note that no 32
bit wheels are provided. Wheels can be downloaded from PyPI
<https://pypi.org/project/numpy/1.26.0rc1/>; source archives, release
notes, and wheel hashes are available on Github
<https://github.com/numpy/numpy/releases/tag/v1.26.0rc1>


*Contributors*

A total of 18 people contributed to this release. People with a \"+\" by
their names contributed a patch for the first time.

   - @DWesl
   - Albert Steppi +
   - Bas van Beek
   - Charles Harris
   - Developer-Ecosystem-Engineering
   - Jake Vanderplas
   - Marten van Kerkwijk
   - Matti Picus
   - Melissa Weber Mendonça
   - Namami Shanker
   - Nathan Goldbaum
   - Ralf Gommers
   - Rohit Goswami
   - Sayed Adel
   - Sebastian Berg
   - Stefan van der Walt
   - Tyler Reddy
   - Warren Weckesser



*Build system changes*
In this release, NumPy has switched to Meson as the build system and
meson-python as the build backend. Installing NumPy or building a wheel can
be
done with standard tools like ``pip`` and ``pypa/build``. The following are
supported:

   - Regular installs: ``pip install numpy`` or (in a cloned repo) ``pip
   install .``
   - Building a wheel: ``python -m build`` (preferred), or ``pip wheel .``
   - Editable installs: ``pip install -e . --no-build-isolation``
   - Development builds through the custom CLI implemented with spin
   <https://github.com/scientific-python/spin>: ``spin build``.

All the regular ``pip`` and ``pypa/build`` flags (e.g.,
``--no-build-isolation``) should work as expected.


*NumPy-specific build customization*
Many of the NumPy-specific ways of customizing builds have changed.
The ``NPY_*`` environment variables which control BLAS/LAPACK, SIMD,
threading,
and other such options are no longer supported, nor is a ``site.cfg`` file
to
select BLAS and LAPACK. Instead, there are command-line flags that can be
passed to the build via ``pip``/``build``'s config-settings interface. These
flags are all listed in the ``meson_options.txt`` file in the root of the
repo.
Detailed documented will be available before the final 1.26.0 release; for
now,
please see `the SciPy building from source
<http://scipy.github.io/devdocs/building/index.html> docs since most build
customization
works in an almost identical way in SciPy as it does in NumPy.


*Build dependencies*
While the runtime dependencies of NumPy have not changed, the build
dependencies have. Because we temporarily vendor Meson and meson-python,
there are several new dependencies - please see the ``[build-system]``
section
of ``pyproject.toml`` for details.

*Troubleshooting*

This build system change is quite large. In case of unexpected issues, it is
still possible to use a ``setup.py``-based build as a temporary workaround
(on
Python 3.9-3.11, not 3.12), by copying ``pyproject.toml.setuppy`` to
``pyproject.toml``. However, please open an issue with details on the NumPy
issue tracker. We aim to phase out ``setup.py`` builds as soon as possible,
and
therefore would like to see all potential blockers surfaced early on in the
1.26.0 release cycle.


Cheers,

Charles Harris
_______________________________________________
Python-announce-list mailing list -- python-announce-list@python.org
To unsubscribe send an email to python-announce-list-le...@python.org
https://mail.python.org/mailman3/lists/python-announce-list.python.org/
Member address: arch...@mail-archive.com

Reply via email to