关于本章
本章主要记录我对cpython的实现的探索,主要出于我对python程序的运行机制的好奇。
关于cpython的实现的介绍非常多,本节将从软件工程的角度来分析cpython的实现。它作为一个非常成功的大型软件,其实现方式是值的软件工程师学习的,除此之外,其管理方式,质量保证等方面也是非常值得学习的。
cpython的实现可以作为一个成功的软件工程典范来进行学习:
- 如何做软件工程的
- 如何保证质量的
- 如何实现的
- 如何来进行协作开发
- 如何跨平台
这一系列都是值的我们学习的
主要以Unix-like system为例来进行说明,Windows平台的忽略。
这个系列我决定从 如下方面进行组织:
Part 1: Introduction to CPython
介绍python和cpython
Source Code
描述cpython的源代码组织,官方介绍:
cpython build system
描述cpython的build system,这部分是很多文章中都没有的,需要好好的进行介绍
Compiling CPython linux
The Python Language Specification
参见https://realpython.com/cpython-source-code-guide/#part-1-introduction-to-cpython
需要对其中涉及到的知识进行说明。
官方资源:
- Changing CPython’s Grammar¶
cpython实现分析
架构
compiler + interpreter/virtual machine
两者之间的接口是Python bytecode:
入口
沿着python程序的执行来逐步进行分析
参见Part 2: The Python Interpreter Process
Memory Management in CPython
bytecode
dis
— Disassembler for Python bytecode¶
TODO
python AST
https://greentreesnakes.readthedocs.io/en/latest/
cpython的指令是怎样的?
从AST→CFG→byte code
cpython提供了一些列的build-in type,build-in function供programmer使用,byte code是否是基于这些build-in的?即byte code最终被解释执行的时候其实调用的还是只写build-in的方法?我觉得应该是这样的。