PyPy
初始版本 | mid 2007年 |
---|---|
穩定版本 | 7.3.3[1] (2020年11月21日,2個月前) |
源代码库 | |
编程语言 | RPython |
操作系统 | 跨平台 |
类型 | Python解释器和编译器工具链 |
许可协议 | MIT許可證 |
网站 | https://www.pypy.org/ |
项目背景
PyPy是Python开发者为了更好地Hack Python创建的项目。此外,PyPy比CPython更灵活,易于使用和试验,以制定具体的功能在不同情况的实现方法,可以很容易实施。该项目的目标是,让PyPy比C实现的Python更为容易地适应各个项目和方便裁剪。[2]
项目现状
PyPy是Armin Rigo开发的,Python语言的动态编译器,是Psyco的后继项目。PyPy的目的是,做到Psyco没有做到的动态编译。
PyPy开始只是研究性质的项目。但是开发非常成熟,在2007年中旬发布了1.0 Release版本后,大家关注的焦点是,能否在2008年出现可供生产环境使用的版本。
它支持Python语言的所有核心部分以及大多数的Python语言标准库函数模块,并且通过了Python语言的test suite。但是,Pypy无法支持官方的C/Python API,导致无法使用例如Numpy,Scipy等重要的第三方库。与CPython的区别可以去看它的兼容性页面存档备份,存于页面.
PyPy还提供了JIT编译器和沙盒功能,因此运行速度比CPython要快,以及可以安全地运行一些不被信任的代码。PyPy还有一个单独的支持微线程的版本。
PyPy的实现与原理
- 其实这么说并不准确,准确表达应为用RPython实现的Python。RPython是Python的一个子集,虽然RPython不是完整的Python,但用RPython写的这个Python实现却可以解释完整的Python语言。
PyPy的第二部分:编译器
- 这是一个编译RPython的编译器,或者说这个编译器有一个RPython的前端。目前也只有这一个前端,不过它的后端却有不少,亦即这个编译器支持许多的目标语言,比较重要的有:C,CIL,Javascript等。
註釋
參考文獻
- Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis, 2007. RPython: a Step Towards Reconciling Dynamically and Statically Typed OO Languages. In Proc. Dynamic Language Symposium (DLS), 2007. ACM Press.
- Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, 2009. Tracing the meta-level: PyPy's Tracing JIT Compiler. In Proc. ICOOOLPS, 2009. ACM Press.
- Corbet, Jonathan. . LWN.net. 11 May 2011 [2018-01-06]. (原始内容存档于2017-12-26).
- von Eitzen, Chris. . The H (Heinz Heise). 21 November 2011 [2018-01-06]. (原始内容存档于2018-02-17).
- Rose, John. . Oracle developer blog. 2 December 2011 [2018-01-06]. (原始内容存档于2012-05-26).
- . Decisionstats blog. [2018-01-06]. (原始内容存档于2018-01-07).
外部链接
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.