17611538698
webmaster@21cto.com

Cython 3.0 历经五年正式发布,有重大更改

编程语言 0 1694 2023-07-21 07:13:00

图片

Cython 3.0由其联合开发人员Stefan Behnel博士宣布『正式发布』,他说这是“接近五年的漫长岁月”,该版本具有众多的新功能,包括“默认情况下Python 3语法和语义”。

下面是他的邮件全文:

图片

Cython的核心目标是使为Python编写C扩展变得更加容易,无论是为了速度还是为C库方便的接口。

在许多方面,Cython 3彻底清理和现代化了Cython体系。

它如今正式放弃了对早已过时的Python 2的支持,增加了对更新的Python功能(已经到Python 3.12)的支持,并扩展了“纯Python模式”的使用。

此次发行说明中写道,“Cython 3.0.0 是一项非常巨大的努力,它清理了许多旧Bug,引入了许多新功能,并引入了一些有价值的行为更改。

Cython现在支持所有版本的Python 3,包括即将推出的CPython 3.12的“实验性”支持,但它放弃了对Python 2.6的支持。

Cython 语义现在与 Python 3 在除法、幂运算符、打印、类、类型和下标方面完全保持一致。这是一项重大更改,但可以通过设置 language_level 编译器指令来还原。

此版本中改进了异常处理,Cython 实现的 C 函数默认会抛出异常,如果用户忘记在签名中添加 except 声明,它们也会报出异常。发布声明中还说,这是一个长期存在的错误来源之一,由于此项目是重大更改,因此开发者还可以禁用它。

此外,Cython还全面改进了与 C 和 C++ 的兼容性。

Cython 2.x和Cython 3.0之间的兼容性问题之前出现了Bug。一些尝试通过 pip 包管理器安装 AWS CLI(即命令行界面)的用户收到了错误信息。这个问题可以追溯到pip下载最新版本的Cython时,PyYAML是依赖项,PyYAML又是AWC CLI使用的软件包,导致安装在3.0发布后出现失败。修复是添加一个构建约束,即可继续使用 Cython 2.x,PyYAML 团队将其描述为“确保 libyaml 扩展构建在 Cython 3.0 发布时继续运行的权宜之计”。

受影响的不仅仅是 AWS CLI。另一位用户说:“这导致我们组织中的许多产品无法构建。请考虑这是快速合并和发布这个现在至关重要的公关的又一次请求。

Cython 现在已经超过 21 岁了。它最初的名字称为 Pyrex ,它于 2002 年首次发布。Pyrex被作者Greg Ewing描述为『或多或少添加了C数据类型的Python』。你可以编写函数,自由混合对Python和C数据的操作,所有Python引用计数和错误检查都是完全自动化的。

如今,已经 20多年过去,Behnel回溯了Cython的历史,以及它如何成为“Python数据生态系统的主要基石”。根据Behnel的说法描述,Cython的用途包括“将机器人发送到火星,将Django网站扩展到一亿用户,建立气候模型”等等小目标。

作者:洛逸

评论