v5.5.0
Full Changelog: v5.4.2...v5.5.0
pip install codecin==5.5.0[5.5.0] - 2026-09-24
以「Python 只做 CLI、Go 是唯一实现」为主线的架构收敛,配套标准库打包修复与 AOT 依赖加固。
详见 第二轮更新建议。
新增 (Added)
- 原生库改为"安装时编译":PyPI 包不再携带任何预编译库(
package-data与
MANIFEST.in都移除了*.dll/*.so/*.dylib)。setup.py: BuildPyWithNative
在构建时调用codecin/native/build.*用用户机器的 Go 工具链现场编译,
并把产物单独拷进安装目录 —— 所以pip install codecin(sdist)装完即带原生加速。
build.sh/build.bat相应改为只发布 sdist:若同时发布 wheel,pip 会优先装
wheel 而不执行构建,用户就拿不到原生加速。没有 Go 的用户可从 Release 下载预编译库。 - 原生库新增 ARM64 目标:Release 现在为 五种平台组合构建 c-shared 库 ——
linux/amd64、linux/arm64(ubuntu-24.04-arm)、darwin/amd64、darwin/arm64、
windows/amd64。
资产名带平台-架构后缀(如libcodecin_native-linux-arm64.so):
此前各平台产物同名,release汇总时会互相覆盖,只剩最后一个。 - 产物架构校验:每个原生库构建后都用
go version -m读出真实的GOOS/GOARCH
并断言与资产名一致,杜绝把错架构的库以 arm64/x64 的名义发出去。 - 原生库查找支持架构专属名:
codecin/native.py: _lib_candidates现在按
架构专属名 → 通用名 的顺序查找,同目录下同时存在两种架构的库时会优先选本机的那个。
变更 (Changed)
get_engine不再因原生库 ABI/符号不符而中断运行:此前只捕获OSError,
旁边放一个旧版或架构不符的库会抛AttributeError并让整个运行崩掉(哪怕
native.py承诺过"加载失败自动回退纯 Python")。现在同时捕获AttributeError,
逐候选继续尝试,全部失败时记一条 warning 再回退。- Go 侧不再提供 CLI:删除
codecin/native/cmd/codecin/(独立 Go CLI)、codecin/native/tmpdump/
与仅供 CLI 调用的codecin/native/aot/build.go。语言实现仍在 Go 侧
(CIN 编译器、字节码 VM、CROM、AOT stub),但只以库的形式存在;
CI 新增门禁断言codecin/native/下不存在package main。 - 唯一 CLI 入口是 Python:
python cpu.py/ 安装后的codecinconsole script。 - 内置标准库迁入包内:
lib/→codecin/lib/,并通过
[tool.setuptools.package-data]与新增的MANIFEST.in进入 wheel/sdist —— 修复
「pip install codecin之后所有import "lib/*.cin"直接编译失败」的问题。 - CIN import 解析规则 (B3):
import "./x.cin"/import "../x.cin"—— 相对当前 .cin 文件所在目录;- 其余任何形式(
import "x.cin"、import "lib/x.cin")—— 直接解析到
codecin 内置标准库codecin/lib/(lib/前缀保留为兼容写法)。
仓库内示例与测试已统一为裸名字形式。
- AOT 依赖检查与嵌入:
--build-exe现在会先解析 import 闭包做依赖完整性检查
(缺失/循环引用报AotError而不是等到go build失败),把依赖清单打印出来,
并在编译期把依赖库全部展开嵌入产物;数据段越界不再静默丢弃,而是报错并提示
--mem-size。Windows 目标未带.exe的输出路径会自动补上后缀。 - 发布与 CI:移除
release.yml的 Go CLI 构建矩阵;原生库资产补上架构维度
(macOS x64/arm64)并使用与本地一致的静态链接参数;workflow_dispatch现在
会 checkout 输入 tag;新增dist作业断言 wheel/sdist 内含 19 个内置标准库模块
并实际安装后跑一个使用标准库的程序;CI 补timeout-minutes与permissions,
覆盖率合并为一次运行并设--cov-fail-under=70。 - 移除旧的安装/打包脚本:
install.sh/install.ps1/codecin.spec/
codecin_linux.spec/build_win.bat已删除,相关文档同步更新为 pip 安装路径。
修复 (Fixed)
python cpu.py --help的首行版本号长期停留在Code CIN v5.3,现直接取
codecin.__version__(此前是全仓唯一残留的版本串)。--build-exe在程序文件不存在时抛裸FileNotFoundErrortraceback,现在与普通路径
一样给出Build Error面板。--build-exe传给build_program的显式输出路径在 Windows 上不再产生无法执行的
无扩展名文件。