v3.0.0¶
v3.0.0 是 eltdx 3.0 Rust 重写的首个正式版本。用户继续通过 Python 安装和调用;变化集中在 7709 协议与传输运行核心。
主要变化¶
- 21 个 7709 命令的参数规范化、请求帧、响应解析和 raw 字段保留由 Rust 强类型实现。
- 默认
TdxClient()、SocketTransport和PooledSocketTransport使用同一 Rust Engine。 - 每个 Engine 保持一个单所有者 Supervisor;单 worker 使用 current-thread 快速路径,两个以上共享 Tokio multi-thread worker 执行 Slot I/O、解压和协议处理。
- 默认从持久测速排名中选择最快2台服务器、每台4条连接;支持 canary 握手、受控分批建连和160条以上连接配置。
- Engine 对 raw、decoded 和 push 设置全局字节上限,diagnostics 提供当前值、上限和峰值。
- 请求使用一个 absolute deadline,覆盖 admission、连接、握手、发送、响应和最多一次 manifest 允许的安全重试。
- pin 使用 epoch/Slot/lease/pin identity,pin-local 调用共享全局 waiting permit 上限。
- push buffer 同时限制帧数和 bytes,溢出时保留最新帧并显式报告一次 gap。
close()具有 1 秒本地清理硬门;失败关闭可重试清理,但实例不能 reopen。- native 等待周期检查 Python signal;fork 子进程必须创建新 client。
Python 兼容边界¶
以下入口继续保留:
TdxClient/Client、所有模块化业务 API 和自定义 Transport 注入;- 现有公开 dataclass、异常继承、分页、序列化和
include_raw行为; eltdx.protocol的 frame、registry、build/decode/parse 兼容门面;SocketTransport、PooledSocketTransport、pin()、push 和 diagnostics;- Helpers、F10、MCP、CLI 和工作日服务。
ActorSnapshot、actors 和 actor_alive 名称为公开兼容保留;它们映射 Rust Slot task。旧 Python Actor、Broker、PushBuffer 和 per-command wire 模块不再进入运行路径或 wheel。
3.0 不重新引入 2.0 已删除的扁平 client.get_* API,也不提供纯 Python 7709 fallback。
安装和平台¶
发布后普通用户仍使用:
正式版产物为 Windows x64、manylinux x64/ARM64、macOS x64/ARM64 五个独立 ABI3 wheel 和一个包含 Cargo workspace、Python 源码、docs、tests、scripts 的 sdist。
wheel tag 为 cp310-abi3,覆盖普通 GIL CPython 3.10-3.14。不支持 PyPy、free-threaded CPython、musllinux 或未列出的组合。没有匹配 wheel 时需要 Rust 1.89 从 sdist 构建,或继续使用最后一个 2.x。
迁移注意¶
公开业务调用无需改写。部署环境需要确认平台存在匹配 wheel;曾经复制 Python 包目录或 native 二进制的环境应完全卸载旧副本后重新安装,以避免 ABI mismatch。
依赖旧 transport 私有成员、Python Actor/Gate/Lease/Ticket 类型或 per-command builder/parser 模块的代码不属于兼容范围,需要迁移到公开 Transport、protocol facade 和 diagnostics。
验证和发布状态¶
正式版已完成首次编译、Rust 单元/属性、21 命令 golden、Python 公共合同、loopback 故障、压力资源、性能、真实主站、五 wheel 加一 sdist 安装,以及文档/发布验证十轮流程。
发布流水线只接受与 Cargo/Python 版本完全一致的 v3.0.0 标签;同一批产物在五个平台完成安装验证后直接上传 PyPI 并创建 GitHub Release,不在发布阶段重新构建。