相关工作¶
Pyrex [Pyrex] 是 Cython 最初基于的编译器项目。Cython 语言的许多功能和主要设计决策都是由 Greg Ewing 在该项目中开发的。如今,Cython 超越了 Pyrex 的能力,提供了与 Python 代码和 Python 语义的更高兼容性,以及更优越的优化和与 NumPy 等科学 Python 扩展的更好集成。
ctypes [ctypes] 是 Python 的外部函数接口 (FFI)。它提供与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。它可以用来用纯 Python 代码包装这些库。与 Cython 相比,它的主要优势在于它位于标准库中,可以直接从 Python 代码中使用,无需任何额外的依赖项。主要缺点是它的性能,由于所有操作都必须先通过 Python 代码,因此会受到 Python 调用开销的影响。Cython 作为一种编译语言,可以通过将更多功能和长时间运行的循环移到快速 C 代码中来避免大部分这种开销。
SWIG [SWIG] 是一个包装代码生成器。它可以很容易地解析 C/C++ 头文件中的大型 API 定义,并为大量编程语言生成直接的包装代码。然而,与 Cython 不同的是,它本身不是一种编程语言。薄包装很容易生成,但包装需要提供的功能越多,用 SWIG 实现它就越困难。另一方面,Cython 使得为 Python 语言编写非常复杂的包装代码变得非常容易,并且可以根据需要在任何地方将其设置为薄或厚。此外,还存在用于解析 C 头文件并使用它来生成 Cython 定义和模块骨架的第三方代码。
ShedSkin [ShedSkin] 是一个实验性的 Python 到 C++ 编译器。它使用一个非常强大的全模块类型推断引擎从(受限的)Python 源代码生成 C++ 程序。主要缺点是它不支持调用 Python/C API 来执行它不支持的本地操作,并且只支持很少的标准 Python 模块。
M. Dufour, J. Coughlan, ShedSkin, https://github.com/shedskin/shedskin
David M. Beazley 等人,SWIG:一个易于使用的工具,用于将脚本语言与 C 和 C++ 集成,http://www.swig.org。