变更日志

0.17.1

  • 更新测试以配合最新发布的 pyproject-metadata 0.9.0。

  • 修复测试,使其在非 Git 工作树中执行时也能正常工作。

Daniele Nicolodi — 23-10-2024.

0.17.0

  • 拒绝构建针对受限 API 和自由线程 CPython 的轮子:自由线程 CPython 构建尚不支持受限 API。

  • 始终使用 UTF-8 编码写入 Meson 本地文件和交叉文件。始终使用 UTF-8 编码读取 Meson 自省数据和 pyproject.toml

  • 创建源代码发行版时不包含未提交的更改。以前,版本控制下的文件的未提交更改会被包含,但未跟踪的文件则不会。这种行为没有强烈的用例,并且过於令人惊讶,因此将其保留。

  • 使源代码发行版可重现:使用 pyproject.toml 的修改时间作为源代码发行版存档中生成的 文件的时间。

  • 为针对受限 API 构建轮子时,为 PyPy 禁用 abi3 轮子标签:PyPy 支持受限 API,但不支持稳定 ABI。

  • 在导入可编辑安装时,如果包重建失败,则引发 ImportError

  • 修复 GraalPy 的轮子平台标签。

  • 如果构建目录为空,则添加 .gitignore.hgignore 文件到构建目录。

  • 允许 install_subdir() 安装缺失的目录。

Christian Clauss, Daniele Nicolodi, Jonathan J. Helmus, Leo Singer, Loïc Estève, Michael Simacek, Ralf Gommers, Simon McVittie — 19-10-2024.

0.16.0

  • 正确检测到将共享库作为平台相关文件进行打包的轮子,即使它不包含编译的可执行文件或 Python 扩展模块。

  • 在 arm64 上将 11.0 作为最小 macOS 平台 ABI 标签:较低版本在 arm64 上不存在。

  • 改进对 $ARCHFLAGS 环境变量的解析。正确处理重复的 -arch 标志。

  • 尝试记录包含无法在标准输出流使用的编码中编码的 Unicode 字符的文件名时,不要中断。

  • 在 Windows 上放弃对 colorama 的依赖。

  • 在日志记录到不支持 ANSI 终端转义序列的流时,禁止所有 ANSI 终端转义序列的使用。

  • 修复错误消息的 ANSI 转义序列颜色。

  • 在可编辑安装中,也尊重传递给 Meson install_subdir() 函数的 exclude_dirsexclude_files 参数。

  • 使 pkgutil.iter_packages() 能够正确处理从可编辑安装中加载的模块。

  • 添加对 Meson custom_target() 函数安装目录的支持。

  • 在可编辑安装中,当在模块导入时触发重建时,会发出一个消息,表明该包正在重建,但在没有工作要做时会抑制所有输出。

Daniele Nicolodi, Loïc Estève, Ralf Gommers — 16-04-2024

0.15.0

  • 为轮子文件启用压缩。这可能导致轮子大小缩小几倍。

  • 在 Python 3.12 或更高版本上需要 Meson 1.2.3 或更高版本。Meson 1.2.3 不再需要 distutils,允许在 Python 3.12 或更高版本上删除对 setuptools 的依赖。

  • 在 Linux 上无条件需要 patchelf。如果在 $PATH 上找不到合适的 patchelf 可执行文件,则将 patchelf 包添加到构建依赖项中。这避免了在构建过程中两次运行 meson setup 来确定是否需要 patchelf 的情况。

  • 允许通过 $MESON 环境变量或 pyproject.toml[tool.meson-python] 下的 meson 键来配置用于构建过程的 meson 可执行文件。

  • 修复 FreeBSD 上的轮子平台标签生成。

  • 扩展对其他类 UNIX 系统的支持,并使测试在 FreeBSD 上通过。

  • 修复软件包元数据中的软件包名称规范化,并改进软件包名称验证。

  • 修复构建 RPATH 指向构建目录子目录时,的 RPATH 处理。

  • 修复为 PyPy 编译时对 Python 受限 C API 的支持。

  • builddir 配置设置重命名为 build-dir。为了向后兼容,buildir 配置设置仍然作为别名受支持。

Christoph Reiter, Daniele Nicolodi, Elliott Sales de Andrade, Ralf Gommers, Yue Yang — 26-10-2023

0.14.0

  • 不要运行 meson install 来构建轮子。这是不必要的,因为文件是从构建目录和源代码目录添加到轮子的。这不会影响对 meson install 选项的处理,这些选项由 meson-python 本身解释。

  • 在为 meson install 命令指定 --skip-subprojects 时遵守它。

  • 实现对 Meson install_subdir() 函数和类似安装函数的 exclude_directoriesexclude_files 参数的支持。这需要 Meson 1.1.0 或更高版本。

  • 实现对构建针对 Python 受限 API 的轮子的支持。从即将发布的 Meson 1.3.0 版本开始,可以轻松构建针对 Python 受限 API 的扩展模块。

  • pyproject.toml 不包含 version 字段,并且 version 未被声明为动态时,会引发错误,而不是默默地使用在 meson.build 中声明的版本。

  • 修复 sdist tarball 中源文件的时间戳。

  • 当设置 $ARCHFLAGS 时,将 objcobjcpp 编译器添加到生成的交叉文件中。

  • 大量文档改进。

Charles Brunet, Daniele Nicolodi, Henry Schreiner, Michał Górny, Ralf Gommers — 05-09-2023

0.13.2

  • 修复使用 $ARCHFLAGS 进行交叉编译时生成的交叉文件中的系统名称。

  • 修复对 null Meson 安装标签的处理。

Charles Brunet, Daniele Nicolodi — 22-06-2023.

0.13.1

  • 修复通过 $ARCHFLAGS 在 macOS 上进行交叉编译时的回归,其中交叉文件是在构建目录创建之前写入到构建目录的,从而导致错误。

  • 在通过 $ARCHFLAGS 在 macOS 上进行交叉编译时,不要求设置 $_PYTHON_HOST_PLATFORM

  • 在调用 meson install 时,添加 --quiet 选项。安装路径是 meson-python 实现的细节,通常对用户来说并不重要。

  • 修复在列出添加到轮子的文件时,覆盖当前行时的终端日志记录。

  • 改进在检测到跨越 purelibplatlib 轮子位置的包时发出的错误消息。

Daniele Nicolodi, Ralf Gommers — 28-04-2023.

0.13.0

  • 添加对可编辑安装的支持。

  • 调整传递给 meson setup 的默认构建选项。

  • 确保创建轮子或 sdist 构建工件的目录存在。修复使用 PDM 进行构建时的错误。

  • 修复通过 $ARCHFLAGS 在 macOS 上进行交叉编译时,C++ 编译器的指定。

  • 仅当指定的构建目录存在且是有效的 Meson 构建目录时,才将 --reconfigure 选项传递给 meson setup

  • --no-rebuild 选项传递给 meson install

  • 允许通过 pyproject.toml 或配置设置,通过 --tags 选项传递给 meson install 的 Meson 安装标签来选择要包含在轮子中的文件。

  • 除了在 Windows 上,不要使用 meson compile 间接方法来构建项目,因为在 Windows 上需要它来设置 Visual Studio 环境。

  • 如果设置了 $NINJA,但它不指向具有所需最小版本的 ninja 可执行文件,则不要将 ninja 添加到构建依赖项中。

  • 在运行时验证 Meson 是否满足最小所需版本。

  • 将本地文件和交叉文件放在构建目录中,而不是源代码目录中。

  • 放弃对 typing-extensions 软件包的依赖关系。

  • 在 Python 3.12 及更高版本上添加对 setuptools 的依赖。这修复了由于 Meson 依赖于 Python 3.12 中移除的 distutils 标准库模块而导致的构建错误。

  • 将所需的 pyproject-metadata 版本提升到 0.7.1。

  • 通过不将扩展模块文件名后缀与当前解释器接受的后缀进行比较,允许更多跨编译设置。

  • 当 Meson 要安装的文件无法映射到 wheel 位置时,抛出错误。

  • 当包在 platlibpurelib 之间分割时,抛出错误。

  • pyproject.toml 不包含 project 部分并且 Python 包元数据是从 meson.build 衍生而来时,不要生成警告。

  • 改进 pyproject.toml 验证错误的报告。

  • 修复 pyproject.toml 中工具特定选项的验证。特别是,允许在 tool.meson-python.args 表中指定不完整的选项集。

Daniele Nicolodi, Doron Behar, Eli Schwartz, Filipe Laíns, Lars Pastewka, Luigi Giugliano, Matthias Köppe, Peter Urban, Ralf Gommers, Stefan van der Walt, Thomas Li — 18-04-2023。

0.12.1

  • 修复了 $MACOSX_DEPLOYMENT_TARGET 环境变量意外重命名为 $MACOS_DEPLOYMENT_TARGET 的回归。

Filipe Laíns, Stefan van der Walt — 17-02-2023。

0.12.0

  • 对于 Python < 3.10 而不是仅对于 Python < 3.8,要求使用 typing_extensions 包。

  • 在预期错误时发出错误消息并引发 SystemExit

  • 修改错误消息以确保一致性。

  • 通过 $ARCHFLAGS 支持 setuptools 样式的 macOS 跨编译。

  • 允许通过 $_PYTHON_HOST_PLATFORM 覆盖 macOS 平台标签。

  • 在遇到未知配置设置时,在错误消息中包含与最相似已知选项名称的提示。

Daniele Nicolodi, Filipe Laíns, Henry Schreiner, Matthias Köppe, Thomas A Caswell — 22-12-2022。

0.11.0

  • 项目移至 mesonbuild 组织。

  • 通过内省 Python 解释器来确定 wheel 标签。

  • 允许用户通过 pyproject.tomltools.meson-python.args 表中的 distsetupcompileinstall 条目,或通过 dist-argssetup-argscompile-argsinstall-args 配置设置将选项直接传递给 Meson。

  • 如果可能,使用系统 ninja。否则,返回 ninja 作为构建依赖项。

  • mesonadd_dist_script 生成的文件包含在 sdist 中。

  • 在 Python 3.11 或更高版本上使用 tomllib

  • 删除 wheel 包依赖项。

  • 修复了未生成 entry_points.txt 文件的错误。

  • 修复了未检测到 Cygwin Python 扩展的错误。

Ben Greiner, Daniele Nicolodi, Filipe Laíns, Henry Schreiner, Matthias Köppe, Ralf Gommers, Sam Thursfield, Thomas Li — 21-11-2022。

0.10.0

  • 忽略 macOS 11 或更高版本上的次要版本,以匹配 pypa/packaging 的行为。

Filipe Laíns, Ralf Gommers — 05-10-2022。

0.9.0

  • 在 ABI 标签检测方面进行了更多修复。

  • 修复了在 x86_64 主机上运行的 32 位 Python 上的错误标签。

  • 修复 sdist 权限。

  • 修复了错误的 PyPy 标签。

  • 修复了 install_subdirs 未包含在 wheels 中的问题。

  • MACOSX_DEPLOYMENT_TARGET 考虑在内以进行平台标签。

  • 如果不需要,不要在二进制文件上设置 rpath。

Eli Schwartz, Filipe Laíns, Matthias Köppe, Peyton Murray, Ralf Gommers, Thomas Kluyver, Thomas Li — 29-09-2022。

0.8.1

  • 修复了标签检测代码中的 UnboundLocalError

Filipe Laíns, Ralf Gommers — 28-07-2022。

0.8.0

  • 修复了有时会生成错误的 ABI 标签。

  • 添加了针对缺少平台字符串中次要版本的 macOS 11 和 12 安装的解决方法。

Filipe Laíns — 26-07-2022。

0.7.0

  • 修复了 Meson 0.63.0 中生成的错误的 Python 和 ABI 标签。

  • 修复了项目许可证未包含在项目元数据中的问题。

Filipe Laíns, Ralf Gommers — 22-07-2022。

0.6.0

  • 项目重新许可为 MIT。

  • 在不支持的解释器中运行时报错。

  • 修复了略微损坏的 Debian 启发式方法。

  • pep621 依赖项更新为 pyproject-metadata

Filipe Laíns, Ralf Gommers, Thomas A Caswell — 21-06-2022。

0.5.0

  • 依赖项检测的改进。

  • 将未提交的更改包含在 sdists 中。

Filipe Laíns — 26-05-2022。

0.4.0

  • 为发布构建设置合理的默认参数。

Filipe Laíns — 06-05-2022。

0.3.0

  • 初始跨平台支持。

  • 捆绑库仍然只支持 Linux。

  • 添加初始文档。

  • 构建目录现在位于项目源代码中。

Filipe Laíns, Rafael Silva — 23-03-2022。

0.2.1

  • 修复了从 Meson 动态获取项目版本的问题。

Filipe Laíns — 26-02-2022。

0.2.0

  • 选择正确的 ABI 和 Python 标签。

  • 强制 Meson 使用正确的 Python 可执行文件。

  • 用内部供应商机制替换 auditwheel。

Filipe Laíns — 24-01-2022。

0.1.2

  • 修复了未运行 auditwheel 的问题。

Filipe Laíns — 12-11-2021。

0.1.1

  • 修复了与 Python < 3.9 的轻微兼容性问题。

Filipe Laíns — 28-10-2021。

0.1.0

  • 初始版本。

Filipe Laíns — 28-10-2021。