RISC-V 现在正式被 CPython 支持:Tier 3 平台的里程碑
Python 团队宣布,RISC-V 架构现在正式被 CPython 支持为 Tier 3 平台。这是 Python 支持新架构的一个重要里程碑,也是 RISC-V 生态系统成熟的体现。本文详细介绍这个消息的背景、技术细节以及对开发者的影响。
背景:什么是 RISC-V
RISC-V 简介
RISC-V 是一个开源的指令集架构(Instruction Set Architecture,ISA),诞生于加州大学伯克利分校。它的特点:
- 开源免费:RISC-V 是完全开源的,任何人都可以免费使用,不需要支付授权费
- 模块化设计:RISC-V 采用模块化设计,基础指令集很小,可以根据需要扩展
- 简洁优雅:RISC-V 的指令集设计简洁,易于学习和实现
- 社区驱动:RISC-V 由国际开源社区维护,有大量的公司和组织参与
- 无历史包袱:RISC-V 是全新设计的,没有 x86、ARM 等架构的历史包袱
RISC-V 的发展现状
近年来,RISC-V 发展迅速:
- 硬件:越来越多的公司推出 RISC-V 处理器,包括微控制器、嵌入式处理器、桌面处理器、服务器处理器等
- 软件:操作系统(Linux、FreeBSD 等)、编译器(GCC、LLVM)、解释器等越来越多地支持 RISC-V
- 生态:RISC-V 国际基金会成员超过 3000 家,包括 Google、微软、华为、阿里、英伟达等大公司
- 应用:RISC-V 被用于物联网、嵌入式系统、存储、网络、人工智能、超级计算等领域
- 中国市场:中国公司在 RISC-V 上投入很大,推出了多款 RISC-V 处理器
为什么 Python 需要支持 RISC-V
Python 作为最流行的编程语言之一,支持 RISC-V 有重要意义:
- 生态完整性:Python 支持 RISC-V 是 RISC-V 软件生态完整的重要标志
- 开发者需求:越来越多的开发者在 RISC-V 上开发,需要 Python
- 嵌入式和物联网:RISC-V 在嵌入式和物联网领域应用广泛,Python 是这些领域的常用语言
- AI 和数据科学:RISC-V 在 AI 领域的应用越来越多,Python 是 AI 和数据科学的首选语言
- 教育和研究:RISC-V 在教育和研究领域很受欢迎,Python 也是教学常用语言
CPython 的平台支持层级
Tier 系统介绍
CPython 对不同平台的支持分为多个层级(Tier),每个层级有不同的支持程度和要求:
Tier 1(最高支持)
Tier 1 平台是 CPython 核心团队正式支持的平台,有最高的保证:
- CI 测试:每次提交都在这些平台上运行完整的测试套件
- 构建保证:保证可以在这些平台上构建
- Bug 修复:这些平台上的 bug 会被优先修复
- 发布保证:每个版本都会在这些平台上发布二进制安装包
- 平台:通常包括 Windows、macOS、Linux(x86_64)等主流平台
Tier 2(良好支持)
Tier 2 平台有较好的支持,但保证程度低于 Tier 1:
- CI 测试:有 CI 测试,但可能不是每次提交都运行
- 构建保证:通常可以构建,但偶尔可能有问题
- Bug 修复:bug 会被修复,但优先级低于 Tier 1
- 发布:可能发布二进制安装包,也可能只提供源码
- 平台:包括一些较新的或市场份额较小的平台
Tier 3(最佳努力支持)
Tier 3 平台是"最佳努力"支持的平台:
- 社区支持:主要由社区贡献者支持,核心团队不保证
- CI 测试:可能有 CI 测试,也可能没有
- 构建:可能可以构建,但不保证
- Bug 修复:bug 修复依赖社区贡献
- 发布:通常只提供源码,不提供二进制安装包
- 平台:包括新支持的平台、小众平台、实验性平台
RISC-V 现在被支持为 Tier 3 平台,这是正式支持的第一步。未来如果 RISC-V 的市场份额和社区活跃度增加,可能升级为 Tier 2 甚至 Tier 1。
技术实现细节
支持工作的内容
根据文章,CPython 对 RISC-V 的支持工作包括:
- 构建系统适配:修改 configure 脚本和 Makefile,支持 RISC-V 架构的检测和构建
- 平台特定代码:添加或修改 RISC-V 特定的代码,如原子操作、内存屏障、线程本地存储等
- 汇编代码:如果有手写汇编代码(如某些性能关键路径),需要添加 RISC-V 版本
- 测试适配:确保测试套件在 RISC-V 上可以运行,修复平台特定的测试失败
- CI 集成:在 CI 系统中添加 RISC-V 的构建和测试(可能使用模拟器或真实硬件)
- 文档更新:更新文档,说明 RISC-V 的支持状态和构建方法
挑战和解决方案
在支持 RISC-V 的过程中,可能遇到的挑战和解决方案:
1. 原子操作
不同架构的原子操作指令不同:
- x86 使用
lock前缀 - ARM 使用
ldrex/strex或ldar/stlr - RISC-V 使用
lr/sc(load-reserved/store-conditional)或amo(atomic memory operation)
CPython 的原子操作抽象层需要支持 RISC-V 的指令。
2. 内存屏障
内存屏障(memory barrier)的语义在不同架构上有差异:
- RISC-V 有
fence指令,支持多种内存排序语义 - 需要确保 CPython 的内存屏障抽象在 RISC-V 上正确实现
3. 线程本地存储(TLS)
线程本地存储的实现方式在不同架构上不同:
- RISC-V 使用
tp(thread pointer)寄存器指向 TLS 区域 - 需要确保 CPython 的 TLS 实现在 RISC-V 上正确工作
4. 调用约定
不同架构的函数调用约定不同:
- 参数传递的寄存器和顺序
- 返回值的寄存器
- 栈对齐要求
- 被调用者保存 vs 调用者保存的寄存器
CPython 的 C 代码和 FFI(如 ctypes、cffi)需要遵循 RISC-V 的调用约定。
5. 字节序和对齐
- RISC-V 通常是小端序(little-endian),但也支持大端序
- 数据对齐要求可能与其他架构不同
- 需要确保 CPython 的序列化/反序列化代码在 RISC-V 上正确
测试和验证
支持 RISC-V 需要充分的测试和验证:
- 构建测试:确保 CPython 可以在 RISC-V 上成功构建
- 完整测试套件:运行完整的 Python 测试套件(
python -m test),确保所有测试通过 - 性能测试:运行性能基准测试,确保没有严重的性能回归
- 长期运行测试:长时间运行测试,检测内存泄漏和稳定性问题
- 真实硬件测试:在真实的 RISC-V 硬件上测试,而不仅仅是模拟器
- 社区测试:鼓励社区用户在各种 RISC-V 硬件上测试并报告问题
对开发者的影响
1. 在 RISC-V 上使用 Python
现在,开发者可以在 RISC-V 硬件上使用 Python:
- 嵌入式开发:在 RISC-V 微控制器上运行 MicroPython 或 CPython
- 服务器开发:在 RISC-V 服务器上运行 Python Web 应用
- AI 开发:在 RISC-V AI 加速器上运行 Python AI 框架
- 桌面开发:在 RISC-V 桌面电脑上运行 Python 桌面应用
- 教育和研究:在 RISC-V 教学平台上使用 Python
虽然目前是 Tier 3 支持,但基本功能应该可以正常工作。
2. 构建和安装
在 RISC-V 上安装 Python:
从源码构建
# 下载源码
wget https://www.python.org/ftp/python/3.15.0/Python-3.15.0.tgz
tar xzf Python-3.15.0.tgz
cd Python-3.15.0
# 配置
./configure --enable-optimizations
# 构建
make -j$(nproc)
# 安装
sudo make altinstall
使用包管理器
一些 RISC-V Linux 发行版可能已经打包了 Python:
# Debian/Ubuntu
sudo apt install python3
# Fedora
sudo dnf install python3
# Arch Linux
sudo pacman -S python
3. 注意事项
在 RISC-V 上使用 Python 时,需要注意:
- C 扩展兼容性:一些包含 C 扩展的 Python 包可能还不支持 RISC-V,需要从源码编译
- 性能:RISC-V 处理器的性能可能与 x86/ARM 有差异,某些操作可能更慢或更快
- 平台特定 bug:作为 Tier 3 平台,可能存在一些平台特定的 bug
- 社区支持:遇到问题时,可能需要自己解决或向社区求助
- 二进制包:PyPI 上可能没有 RISC-V 的预编译 wheel 包,需要从源码编译
4. 为 RISC-V 做贡献
如果你在 RISC-V 上使用 Python 时遇到问题,可以为支持工作做贡献:
- 报告 bug:在 Python 的 bug 追踪系统(bugs.python.org)上报告 RISC-V 特定的 bug
- 提交补丁:修复 bug 并提交补丁
- 测试:在不同的 RISC-V 硬件上测试,报告测试结果
- 文档:改进 RISC-V 相关的文档
- CI:帮助设置和维护 RISC-V 的 CI 系统
- 推广:在社区中推广 Python on RISC-V,吸引更多贡献者
RISC-V 与 Python 的未来
短期展望
在短期内(1-2 年),Python on RISC-V 的发展可能包括:
- 稳定性提升:随着更多用户测试和反馈,RISC-V 支持的稳定性会不断提升
- 更多包支持:越来越多的 Python 包会支持 RISC-V,提供预编译的 wheel
- 性能优化:针对 RISC-V 架构的性能优化,如利用 RISC-V 的特定指令
- CI 改进:更完善的 RISC-V CI 系统,确保每次提交都在 RISC-V 上测试
- 可能升级为 Tier 2:如果 RISC-V 的市场份额和社区活跃度增加,可能升级为 Tier 2
长期展望
在长期(3-5 年),Python on RISC-V 的发展可能包括:
- Tier 1 支持:如果 RISC-V 成为主流架构,Python 可能将其升级为 Tier 1
- 深度优化:针对 RISC-V 架构的深度优化,包括 JIT 编译器、向量扩展支持等
- RISC-V 特定功能:利用 RISC-V 的独特功能,如自定义扩展、向量处理等
- 嵌入式 Python:更轻量级的 Python 实现,适合资源受限的 RISC-V 嵌入式设备
- AI 加速:与 RISC-V AI 扩展的集成,加速 Python AI 工作负载
对整个生态的影响
Python 支持 RISC-V 对整个生态的影响:
- RISC-V 软件生态:Python 的支持是 RISC-V 软件生态成熟的重要标志,会吸引更多开发者和公司
- Python 社区:Python 社区会更加关注 RISC-V,吸引更多贡献者
- 硬件厂商:RISC-V 硬件厂商会更加重视 Python 支持,优化硬件和驱动
- 教育和研究:RISC-V + Python 会成为教育和研究的重要平台
- 行业应用:在物联网、嵌入式、AI、服务器等领域,RISC-V + Python 的组合会得到更多应用
总结
RISC-V 正式被 CPython 支持为 Tier 3 平台,是一个重要的里程碑。
核心要点:
- 背景:RISC-V 是开源指令集架构,发展迅速,在嵌入式、物联网、AI 等领域应用广泛
- 支持层级:CPython 的平台支持分为 Tier 1(最高支持)、Tier 2(良好支持)、Tier 3(最佳努力支持),RISC-V 现在是 Tier 3
- 技术实现:包括构建系统适配、平台特定代码、汇编代码、测试适配、CI 集成、文档更新等
- 挑战:原子操作、内存屏障、线程本地存储、调用约定、字节序和对齐等架构差异
- 对开发者的影响:可以在 RISC-V 上使用 Python,但需要注意 C 扩展兼容性、性能、平台特定 bug 等
- 未来展望:短期稳定性提升和更多包支持,长期可能升级为 Tier 1 并进行深度优化
- 生态影响:Python 支持 RISC-V 对 RISC-V 软件生态、Python 社区、硬件厂商、教育研究、行业应用都有积极影响
Python 支持 RISC-V 不仅是技术上的成就,更是开源社区协作的典范。Python 社区和 RISC-V 社区的结合,将推动两个生态的共同发展。
对于开发者来说,现在是了解和尝试 Python on RISC-V 的好时机。无论是在嵌入式设备、开发板还是服务器上,Python + RISC-V 的组合都值得探索和期待。
正如文章作者所说,这是一个令人兴奋的里程碑。RISC-V 的未来是光明的,Python 在其中将扮演重要角色。
原文链接:https://blog.python.org/2026/08/riscv-now-officially-supported/