Примечания к выпуску NumPy 1.26.0#
Выпуск NumPy 1.26.0 является продолжением цикла выпусков 1.25.x с добавлением поддержки Python 3.12.0. Python 3.12 удалил distutils, следовательно, поддержка потребовала поиска замены для системы сборки на основе setup.py/distutils, которую использовал NumPy. Мы выбрали использование системы сборки Meson вместо этого, и это первый выпуск NumPy, поддерживающий ее. Это также первый выпуск, который поддерживает Cython 3.0 в дополнение к сохранению совместимости с 0.29.X. Поддержка этих двух обновлений была крупным проектом, более 100 файлов были затронуты в этом выпуске. Журнал изменений не отражает полный объем работы, особая благодарность Ralf Gommers, Sayed Adel, Stéfan van der Walt и Matti Picus, которые выполнили большую часть работы в основной ветке разработки.
Основные моменты этого выпуска:
Поддержка Python 3.12.0.
Совместимость с Cython 3.0.0.
Использование системы сборки Meson
Обновлённая поддержка SIMD
исправления f2py, поддержка meson и bind(x)
Поддержка обновлённой библиотеки Accelerate BLAS/LAPACK
Поддерживаемые версии Python в этом выпуске: 3.9-3.12.
Новые возможности#
Поддержка Array API v2022.12 в numpy.array_api#
numpy.array_apiтеперь полностью поддерживает версия v2022.12 стандарта API массивов. Обратите внимание, что это еще не включает опциональныйfftрасширение в стандарте.
(gh-23789)
Поддержка обновлённой библиотеки Accelerate BLAS/LAPACK#
Добавлена поддержка обновленной библиотеки Accelerate BLAS/LAPACK, включая поддержку ILP64 (64-битные целые числа), в macOS 13.3. Это обеспечивает поддержку arm64 и значительное повышение производительности до 10 раз для часто используемых операций линейной алгебры. При выборе Accelerate во время сборки версия 13.3+ будет автоматически использоваться, если доступна.
(gh-24053)
meson бэкенд для f2py#
f2py в режиме компиляции (т.е. f2py -c) теперь принимает --backend meson
опция. Это опция по умолчанию для Python 3.12 и далее. Старые версии
по-прежнему будут использовать по умолчанию --backend distutils.
Для поддержки этого в реалистичных случаях использования, в режиме компиляции f2py принимает
--dep флаг один или несколько раз, который соответствует dependency() вызывает в
meson бэкенд, и ничего не делает в distutils бэкенд.
Нет изменений для пользователей f2py только как генератор кода, т.е. без -c.
(gh-24532)
bind(c) поддержка для f2py#
Как функции, так и подпрограммы могут быть аннотированы с помощью bind(c). f2py будет
обрабатывать как правильное сопоставление типов, так и сохранять уникальную метку для других
C интерфейсы.
Примечание: bind(c, name = 'routine_name_other_than_fortran_routine') не соблюдается f2py привязки по дизайну, поскольку bind(c) с name
предназначен для гарантии только того же имени в C и Fortran, не в
Python и Fortran.
(gh-24555)
Улучшения#
iso_c_binding поддержка для f2py#
Ранее пользователям приходилось определять свои собственные пользовательские f2cmap файл для использования
сопоставлений типов, определенных Fortran2003 iso_c_binding встроенный модуль. Эти карты типов теперь нативно поддерживаются f2py
(gh-24555)
Изменения в системе сборки#
В этом выпуске NumPy перешёл на Meson в качестве системы сборки и
meson-python в качестве бэкенда сборки. Установка NumPy или сборка wheel может быть
выполнена с помощью стандартных инструментов, таких как pip и pypa/build. Поддерживаются следующие:
Обычные установки:
pip install numpyили (в клонированном репозитории)pip install .Сборка wheel-пакета:
python -m build(предпочтительно), илиpip wheel .Редактируемые установки:
pip install -e . --no-build-isolationСборки для разработки через пользовательский CLI, реализованный с помощью spin:
spin build.
Все регулярные pip и pypa/build флаги (например,
--no-build-isolation) должен работать как ожидается.
Специфичная для NumPy настройка сборки#
Многие специфичные для NumPy способы настройки сборок изменились. NPY_* переменные окружения, управляющие BLAS/LAPACK, SIMD, многопоточностью
и другими подобными опциями, больше не поддерживаются, как и site.cfg файл для
выбора BLAS и LAPACK. Вместо этого есть флаги командной строки, которые можно
передать в сборку через pip/buildинтерфейс config-settings. Все эти флаги перечислены в meson_options.txt файл в корне репозитория.
Подробная документация будет доступна перед финальным релизом 1.26.0; пока что см. документация SciPy «сборка из исходного кода» поскольку большинство настроек сборки
работает почти идентично в SciPy, как и в NumPy.
Зависимости сборки#
Хотя зависимости времени выполнения NumPy не изменились, зависимости сборки
изменились. Поскольку мы временно включаем Meson и meson-python,
появилось несколько новых зависимостей - пожалуйста, ознакомьтесь с [build-system] раздел
из pyproject.toml подробности.
Устранение неполадок#
Это изменение системы сборки довольно масштабное. В случае непредвиденных проблем
все еще можно использовать setup.py-основанной сборки в качестве временного решения (на Python 3.9-3.11, не 3.12), копируя pyproject.toml.setuppy to
pyproject.toml. Однако, пожалуйста, откройте issue с подробностями в трекере
проблем NumPy. Мы стремимся отказаться от setup.py сборки как можно скорее, и
поэтому хотелось бы видеть все потенциальные блокировки на ранних этапах
цикла выпуска 1.26.0.
Участники#
Всего 20 человек внесли вклад в этот выпуск. Люди со знаком «+» рядом с их именами впервые предоставили патч.
@DWesl
Albert Steppi +
Bas van Beek
Чарльз Харрис
hermedomain
Filipe Laíns +
Jake Vanderplas
Liang Yan +
Мартен ван Керквейк
Matti Picus
Melissa Weber Mendonça
Нанами Шанкер
Nathan Goldbaum
Ralf Gommers
Rohit Goswami
Sayed Adel
Себастьян Берг
Stefan van der Walt
Tyler Reddy
Warren Weckesser
Объединенные pull request'ы#
Всего для этого релиза было объединено 59 pull-запросов.
#24305: MAINT: Подготовка ветки 1.26.x для разработки
#24308: MAINT: Массовое обновление файлов из основной ветки для numpy 1.26
#24322: CI: исправить сборку колес в ветке 1.26.x
#24326: BLD: обновить openblas до более новой версии
#24327: TYP: Сокращение
_NestedSequence.__getitem__сигнатура#24328: BUG: исправление утечки ссылок в choose
#24337: TST: исправление запуска набора тестов в сборках без BLAS/LAPACK
#24338: BUG: random: Исправлено генерацию nan распределением Дирихле.
#24340: MAINT: Обновления Dependabot из main
#24342: MAINT: Вернуть NPY_RUN_MYPY_IN_TESTSUITE=1
#24353: MAINT: Обновить
extbuild.pyиз основной ветки.#24356: TST: исправлены тесты distutils для устареваний в последних версиях setuptools…
#24375: MAINT: Обновление cibuildwheel до версии 2.15.0
#24381: MAINT: Исправить скрипт setup.sh для codespaces
#24403: ENH: Включение meson для поддержки сборки с несколькими целями
#24404: BLD: включить meson-python для сборки Windows с SIMD…
#24405: BLD, SIMD: Реализация диспетчера процессора meson
#24406: MAINT: Удалить versioneer
#24409: REL: Подготовка к выпуску NumPy 1.26.0b1.
#24453: MAINT: Зафиксировать верхнюю версию sphinx.
#24455: ENH: Добавить префикс к макросу _ALIGN
#24456: BUG: очистка предупреждений [skip azp][skip circle][skip travis][skip…
#24460: MAINT: Обновление до spin 0.5
#24495: BUG:
asv devбыл удален, используйтеasv run.#24496: BUG: Исправление сбоя сборки meson из-за неизмененного автоматически сгенерированного на месте…
#24521: BUG: исправление проблемы со скриптом git-version, требуется shebang для запуска
#24522: BUG: Использовать присваивание по умолчанию для git_hash [skip ci]
#24524: BUG: исправление обработки ошибок NPY_cast_info в choose
#24526: BUG: Исправлена обработка общих блоков в f2py
#24541: CI,TYP: Обновление mypy до 1.4.1
#24542: BUG: Исправление регрессии f2py с предполагаемой длиной
#24544: MAINT: Гармонизация fortranobject
#24545: TYP: добавлен аргумент kind в спецификацию типа numpy.isin
#24561: BUG: исправление сравнений между маскированными и немаскированными структурированными массивами
#24590: CI: Исключить библиотеки импорта из списка DLL на Cygwin.
#24591: BLD: исправление
_umath_linalgзависимости#24594: MAINT: Прекратить тестирование на ppc64le.
#24602: BLD: meson-cpu: исправление поддержки SIMD на платформах без функций
#24606: BUG: Изменение Cython
bindingдиректива в "False".#24613: УЛУЧШЕНИЕ: Принятие новых интерфейсов BLAS/LAPACK для macOS Accelerate, включая…
#24614: DOC: Обновление документации по сборке для использования Meson
#24615: TYP: Добавьте недостающий
castingключевое слово дляnp.clip#24616: TST: преобразовать тест cython из setup.py в meson
#24617: MAINT: Исправление
fromnumeric.pyi#24622: BUG, ENH: Исправление
iso_c_bindingкарты типов и исправлениеbind(c)…#24629: TYP: Разрешить
binary_reprдля приёма любого объекта, реализующего…#24630: TYP: Явно объявить
dtypeиgenericхэшируемый#24637: ENH: Рефакторинг тестов "reveal" для типизации с использованием
typing.assert_type#24638: MAINT: Обновление actions/checkout с 3.6.0 до 4.0.0
#24647: ENH:
mesonбэкенд дляf2py#24648: MAINT: Рефакторинг частичной загрузки Обходное решение для Clang
#24653: REL: Подготовка к выпуску NumPy 1.26.0rc1.
#24659: BLD: разрешить указание формата long double, чтобы избежать времени выполнения…
#24665: BLD: исправление ошибки в расширении random.mtrand, не линковать libnpyrandom
#24675: BLD: сборка wheels для 32-битного Python на Windows с использованием MSVC
#24700: BLD: исправить проблему с выбором компилятора во время кросс-компиляции
#24701: BUG: Исправление обработки оператора данных для комплексных значений в f2py
#24707: TYP: Добавлены аннотации для протокола буфера py3.12
#24718: DOC: исправить несколько проблем сборки документации на 1.26.x и обновить документация spin…