CPython 实现原理
  • README
  • 一、简介
    • 1.1 如何使用此书
    • 1.2 额外材料和学习资料
  • 二、获取 CPython 源码
    • 2.1 源代码里有什么?
  • 三、准备你的开发环境
    • 3.1 选IDE还是编辑器?
    • 3.2 安装Visual Studio
    • 3.3 安装Visual Studio Code
    • 3.4 安装JetBrains Clion
    • 3.5 安装Vim
    • 3.6 总结
  • 四、编译 CPython
    • 4.1 在 macOS 上编译 CPython
    • 4.2 在 Linux 上编译 CPython
    • 4.3 安装自定义版本
    • 4.4 make 快速入门
    • 4.5 CPython 的 make 目标
    • 4.6 在 Windows 上编译 CPython
    • 4.7 PGO 优化
    • 4.8 总结
  • 五、Python 语言和语法
    • 5.1 为什么 CPython 是用 C 语言而不是用 Python 语言来实现
    • 5.2 Python 语言规范
    • 5.3 分析器生成器
    • 5.4 重新生成语法
    • 5.5 总结
  • 六、配置和输入
    • 6.1 配置状态
    • 6.2 构建配置
    • 6.3 从输入构建模块
    • 6.4 总结
  • 七、基于语法树的词法分析和解析
    • 7.1 具象语法树生成器
    • 7.2 CPython 解析器-分词器
    • 7.3 抽象语法树
    • 7.4 要记住的术语
    • 7.5 一个示例:添加一个约等于比较运算法
    • 7.6 总结
  • 八、编译器
    • 8.1 相关源文件
    • 8.2 重要的专业术语
    • 8.3 实例化一个编译器
    • 8.4 未来标志和编译器标志
    • 8.5 符号表
    • 8.6 核心编译过程
    • 8.7 汇编
    • 8.8 创建一个 Code Object
    • 8.9 使用 Instaviz 展示 Code Object
    • 8.10 一个示例:实现约等于操作符
    • 8.11 总结
  • 九、求值循环
    • 9.1 构建线程状态
    • 9.2 构建帧对象
    • 9.3 帧的执行
    • 9.4 值栈
    • 9.5 例子:在列表中添加元素
    • 9.6 总结
  • 十、内存管理
    • 10.1 C 中的内存分配
    • 10.2 Python 内存管理系统设计
    • 10.3 CPython 内存分配器
  • 十一、并行和并发
    • 11.1 并行和并发模型
    • 11.2 进程的结构
    • 11.3 多进程并行
    • 11.4 多线程
    • 11.5 异步编程
    • 11.6 生成器
    • 11.7 协程
    • 11.8 异步生成器
    • 11.9 子解释器
    • 11.10 总结
  • 十二、对象和类型
    • 12.1 本章的例子
    • 12.2 内置类型
    • 12.3 对象和可变长度对象类型
    • 12.4 类型类
    • 12.5 布尔和整数类型
    • 12.6 Unicode 字符串类型
    • 12.7 字典类型
    • 12.8 总结
  • 十三、标准库
    • 13.1 Python 模块
    • 13.2 Python 和 C 模块
  • 十四、测试套件
    • 14.1 在 Windows 上运行测试套件
    • 14.2 在 Linux 或 MacOS 上运行测试套件
    • 14.3 测试标志
    • 14.4 运行特定测试
    • 14.5 测试模块
    • 14.6 测试工具
    • 14.7 总结
  • 十五、调试
  • 十六、基准测试、性能分析和追踪
  • 十七、下一步计划
    • 17.1 为 CPython 编写 C 扩展
    • 17.2 改进你的 Python 应用程序
    • 17.3 为 CPython 项目做贡献
    • 17.4 继续学习
  • 十八、附录
    • 18.1 C 预处理器
    • 18.2 基础 C 语法
    • 18.3 总结
  • 致谢
Powered by GitBook
On this page
  • 安装
  • 本书的推荐扩展
  • 使用高级代码导航和扩展
  • 配置任务和启动文件
Edit on GitHub
  1. 三、准备你的开发环境

3.3 安装Visual Studio Code

Microsoft Visual Studio Code 是一个可扩展的代码编辑器,其带有在线插件市场。

它是使用 CPython 的绝佳选择,因为它通过集成的 Git 界面来支持 C 和 Python。

安装

Visual Studio Code(有时称为 VS Code)的简单安装程序可在 code.visualstudio.com 上获得。

开箱即用的 VS Code 具有必要的代码编辑功能,但一旦安装了扩展,它就会变得更加强大。

你可以通过从顶部菜单中选择 View/Extensions 来访问 Extensions 面板:

截图不译。

在 Extensions 面板中,你可以按名称或按其唯一标识符(例如ms-vscode.cpptools)搜索扩展。在某些情况下,有许多名称相似的插件,因此请使用唯一标识符以确保安装的是正确的插件。

本书的推荐扩展

有几个对 CPython 有用的扩展:

  • C/C++(ms-vscode.cpptools) 提供对 C/C++ 的支持,包括 IntelliSense、调试和代码高亮显示。

  • Python (ms-python.python) 为编辑、调试和阅读 Python 代码提供了丰富的 Python 支持。

  • reStructuredText(lextudio.restructuredtext) 为 reStructuredText 提供了丰富的支持,reStructuredText 是 CPython 文档中使用的格式。

  • Task Explorer(spmeesseman.vscode-taskexplorer) 在 Explorer 选项卡中添加了一个 Task Explorer 面板,使启动 make 任务变得更加容易。

安装这些扩展后,你需要重新加载编辑器。

本书中的许多任务都需要命令行。你可以通过选择 Terminal/New Terminal 将集成终端添加到 VS Code 中。终端将出现在代码编辑器下方:

截图不译。

使用高级代码导航和扩展

安装插件后,你可以执行一些高级代码导航。

例如,如果右键单击 C 文件中的函数调用并选择 Go to References,VS Code 将在代码库中找到对该函数的其他引用:

截图不译。

Go to References 对于发现函数的正确调用形式非常有用。

如果单击或将鼠标悬停在 C 宏上,则编辑器会将该宏扩展为已编译代码:

截图不译。

要跳转到函数的定义,请将鼠标悬停在对它的任何调用上,然后在 macOS 上按 Cmd + Click 或在 Linux 和 Windows 上按 Ctrl + Click。

配置任务和启动文件

VS Code 使用工作区目录中的 .vscode 文件夹。如果此文件夹不存在,请立即创建。你可以在此文件夹中创建以下文件:

  • tasks.json 用于执行项目的命令的快捷方式;

  • launch.json 配置调试器(参见“调试”一章);

  • 其他插件特定的文件。

如果尚不存在 tasks.json 文件,请在 .vscode 目录中创建一个 。这个 tasks.json 文件将帮助你开始:

cpython-book-samples/11/tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "windows": {
                "command": "PCBuild/build.bat",
                "args": ["-p", "x64", "-c", "Debug"]
            },
            "linux": {
                "command": "make -j2 -s"
            },
            "osx": {
                "command": "make -j2 -s"
            }
        }
    ]
}

使用 Task Explorer 插件,你将在 vscode 组中看到已配置任务的列表:

截图不译。

在下一章中,你将了解更多关于编译 CPython 的构建过程。

Previous3.2 安装Visual StudioNext3.4 安装JetBrains Clion

Last updated 2 years ago