跳转到主要内容

更好的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

项目详情


下载文件

下载适合您平台的自定义文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

hpy-0.9.0.tar.gz (349.6 kB 查看哈希值)

上传时间 源代码

构建的分发

hpy-0.9.0-cp311-cp311-musllinux_1_1_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

hpy-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

hpy-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl (570.8 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

hpy-0.9.0-cp310-cp310-musllinux_1_1_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

hpy-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

hpy-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl (572.8 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

hpy-0.9.0-cp39-cp39-musllinux_1_1_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

hpy-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

hpy-0.9.0-cp39-cp39-macosx_10_9_x86_64.whl (569.8 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

hpy-0.9.0-cp38-cp38-musllinux_1_1_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

hpy-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

hpy-0.9.0-cp38-cp38-macosx_10_9_x86_64.whl (579.9 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64