发布 Nuitka 2.0,Python 语言的编译器

发布了 Nuitka 2.0 项目,开发了一个编译器,用于将 Python 脚本转换为 C 表示形式,然后可以使用 libpython 将其编译为可执行文件,以最大程度地与 CPython 兼容(使用本机 CPython 工具来操作对象)。 与当前版本的 Python 2.6、2.7、3.3 - 3.11 完全兼容。 与 CPython 相比,编译后的脚本在 pystone 测试中表现出 335% 的性能提升。 项目代码在 Apache 许可下分发。

新版本的变化包括:

  • 添加了在包配置中使用变量的功能,允许您在编译时从已安装的包中查询值并使用这些值来定义后端。对配置中变量的支持使您能够以标准方式解决许多以前需要连接插件的任务。
  • 添加了对用户定义参数的支持,以影响每个包的配置。可以使用新的 get_parameter 函数读取参数并用于选择模块的行为(例如,您可以设置参数以禁用 Numba JIT 或 Torch JIT)。
  • 添加了选项“--include-onefile-external-data”来指定在配置中定义的数据文件模板,但在 onefile 模式下构建时必须与可执行文件分开提供。
  • 添加了“--cf-protection”选项来设置GCC中的CFI(控制流完整性)保护模式,该模式会阻止违反正常执行顺序(控制流)的行为。
  • 对于插件 yaml 文件,已经实现了为完整性检查创建校验和的功能,未来他们计划使用该功能来组织运行时验证。
  • 操作允许指定多个选项,用行分隔(使用新行作为分隔符)。例如:包含数据目录: | a=bc=d
  • 已经实现了循环类型的分析,将来将用于实现选择性优化。
  • 添加了优化以加快非共享和转义变量的处理速度。
  • 防膨胀插件的功能已得到扩展,现在可用于在使用streamlit、torch、knetworkx、distributed、skimage、bitsandbytes、tf_keras、pip、networkx和pywt库时减少数据包数量(基本上,绑定pytest、IPython、nose、triton 和 dask 被排除)。

来源: opennet.ru

添加评论