返回资讯中心
外部精选
软件工程
#开发者实时流

pyscriptc:将Python应用编译为单文件可执行程序的AOT编译器

来源标题:Pyscriptc: An AOT compiler for Python to distribute your app in one file

pyscriptc是一款将纯Python工作负载编译为独立单文件可执行程序的AOT编译器,无需运行时虚拟环境或Docker层。它支持模式匹配和生成器表达式直接编译为原生机器码,标准库也包含在编译目标内,可避免JIT预热和GC尖峰带来的执行不确定性。目前提供零依赖原生二进制、带C接口的共享库以及可选的island回退三种输出形式。

Hacker News 最新espetro2026/11/13 · 今天12 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

pyscriptc 将纯 Python 工作负载编译为独立的单一可执行文件。无需运行时虚拟环境。无需 Docker 层。 标准库工作负载几何平均值 受支持子集遵循 CPython 3.14.9 语义 针对受支持子集,编写地道且富有表现力的 Python 代码。pyscriptc 将模式匹配和生成器表达式直接编译为原生机器码,标准库也是编译目标的一部分。 确定性执行,没有 JIT 预热悬崖,也没有 GC 尖峰 在发布前捕获类型不匹配和边界违规 def classify(tag: str) -> str: match tag: case "stream": return "streaming" case "ping" | "pong": return "keepalive" return "unknown" $ 目前有两种接口面。一个统一的编译器。 面向你的基础设施所需的执行接口面,无需重写任何一行 Python 代码。目前这意味着零依赖的原生二进制文件、带 C 接口面的共享库,以及可选的孤岛回退。 点击任意层级或圆点查看详情 01/纯原生二进制 零依赖。机器码。一个自包含文件。 你的 Python 源码被编译为优化的原生汇编。没有捆绑的解释器,没有容器膨胀,没有 virtualenv。对于受支持子集内的程序,只需一个自包含的二进制文件(约半兆字节)。 独立单一二进制 交付一个零运行时依赖的自包含可执行文件。将其放入 distroless 容器、裸金属服务器或嵌入式设备中。 实测内核加速 在 Linux x86_64 上,计算内核的几何平均加速比为 22.8 倍,峰值 RSS 比 CPython 3.14.9 低 5.3 倍。 面向所有真实架构 一条命令即可为 Linux x86_64 和 aarch64,以及 aarch64 和 x86_64 macOS 编译。 --emit binding 将模块编译为共享库并附带一个 ctypes 加载器,因此 CPython 可以导入你的类型化函数,无需 Python.h 或扩展构建。--emit lib 生成一个带有 pyscriptc.h 的静态库,用于嵌入。 ctypes 加载器,无需构建矩阵 生成的绑定模块使用 ctypes.CDLL 加载共享库,并直接向 CPython 暴露类型化函数,无需针对每个版本维护 ABI 矩阵。 静态库与头文件 --emit lib 生成 libpyscriptc.a、pyscriptc.h 和一个用于移动端和嵌入式目标的 module.modulemap。 外部运行器已在路线图中 从 Rust、Go 或 C++ 二进制文件中调用编译后的 Python 是计划中的下一步,目前尚未发布。 当你的代码调用深度耦合的 C 扩展或尚未迁移的动态元编程时,你可以选择启用孤岛回退:编译后的核心以原生速度运行,只有未编译的调用会分支到宿主 CPython 运行时。 可选启用,而非自动启用 孤岛通过回退层级选择性启用:--fallback=cpython 将无法编译的定义路由到嵌入的宿主 CPython。 实测孤岛下限 孤岛路由的调用与原生代码在同一基准测试套件中运行:它们目前保持宿主 CPython 的速度(实测 1.0-1.2 倍),而程序其余部分以原生方式降低并运行在原生速度。 审计与移除路径 清晰的编译器诊断会准确显示哪些调用触发了孤岛,为你的团队提供一份达成完全原生构建的检查清单。 跨架构的单命令编译,无需针对每个目标配置 sysroot 或 SDK,支持纯包,并提供有文档记录的、编号的差异说明。 随处部署 面向任何云或桌面平台的单命令交叉编译。无需针对每个目标配置 sysroot 或 SDK。 PyPI 包支持 将纯 Python 包直接编译为机器码。消除虚拟环境搭建、wheel 构建矩阵障碍以及生产容器中的运行时依赖膨胀。前 100 个 PyPI 包每晚都会针对固定套件进行跟踪;实时细分数据位于兼容性网站上。 CLI 优先的编译器 从终端控制编译器,或在 CI 脚本中自动化。完全访问 IR 阶段、LLVM 输出和诊断代码。 共享库与头文件 --emit binding 将类型化模块编译为共享库(.so、.dylib、.dll)外加一个 ctypes 加载器,因此 CPython 可以调用你的类型化函数,无需 Python.h 或扩展构建。 CPython 3.14 对等性 受支持子集遵循 CPython 3.14.9 语义。编写地道的标准 Python:模式匹配、标准异常处理和生成器表达式都会编译为原生机器指令。 深度静态类型验证和边界检查。在二进制文件到达生产服务器之前,识别类型不稳定、未装箱标量泄漏和动态回退屏障。 在两分钟内开始将标准类型化 Python 编译为独立可执行文件。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →