跳转到主要内容

更好的Python C API

项目描述

HPy:更好的Python API

Build Documentation Join the discord server at https://discord.gg/xSzxUbPkTQ

网站: hpyproject.org
社区: HPy Discord服务器
邮件列表: hpy-dev@python.org

摘要

HPy是用于在C中扩展Python的更好的API。旧的C API针对CPython的当前实现。它公开了很多内部细节,这使得它很难

  • 为其他Python实现(例如PyPy、GraalPy、Jython、IronPython等)实现它:
  • 在CPython本身内部尝试新事物:例如使用GC而不是引用计数,或移除GIL
  • 保证二进制稳定性

HPy是Python扩展的新API和ABI规范,与Python实现无关,旨在隐藏和抽象内部细节,以便它

  • 即使底层Python内部发生重大变化,也能保持二进制兼容性
  • 不会阻碍CPython和其他Python的内部进步

请阅读文档以获取更多关于HPy动机、目标和功能的信息,例如

  • 调试模式以提供更好的开发者体验
  • 支持从CPython API到HPy的增量迁移
  • CPython ABI以在CPython上获得原始性能
  • 以及其他功能

想看看HPy API在代码中的样子吗?请查看我们的快速入门示例

您可能还对HPy的API参考感兴趣。

此存储库包含CPython解释器的API和ABI规范及其实现。支持原生HPy的其他解释器(如GraalPy和PyPy)提供了它们自己的内置HPy实现。

我为什么要关心这些内容呢?

  • 现有的C API正在成为CPython以及语言本身进化的一个问题:这个项目使得进行实验成为可能,这些实验可能会在未来“官方”采用

  • 对于PyPy来说,它将带来明显的速度优势:例如,数据科学家将能够同时获得快速C库和快速Python代码的好处,这是目前难以实现的事情

  • 当前的实现过于依赖于CPython,并且已被证明对几乎所有其他替代实现都是一个问题。拥有一个设计用于在两个不同实现上良好工作的API将使未来的工作更加容易:从2到N比从1到2要容易得多

  • 可以说,它比庞大的CPython C API更容易学习和理解

参见Victor Stinner的《Python性能:过去、现在、未来》

HPy是什么意思?

HPy中的"H"代表"handle"(句柄):新API的一个关键思想是使用完全不可见句柄来表示和传递Python对象。

捐赠给HPy

成为财务贡献者,帮助我们维持HPy社区:捐赠给HPy