Skip to content

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 05:18
· 17 commits to main since this release

[2.5.0] - 2026-08-29

新增

  • 重连竞速长期观察基建:StateTransitionRecorder(状态机合法转移、非 Connected 态编号归零、Connected 态编号严格递增、终态收敛的全程校验 + Connected→Connected 直连迁移计数)、Soak_ReconnectRacing_LongRun 竞速专用混沌(60% 动作并发竞速 + FIFO 完整性探针)、每夜 600s 双平台 soak CI(.github/workflows/soak.yml,北京时间 03:00,失败自动通知)。

变更

  • 大报文优化与归因:发送编码缓冲自适应初始尺寸(按连接记忆上一帧高水位、封顶 1MB——稳态尺寸相近的协议不再从 1KB 起爬几何增长梯子)。新增 64KB 三 codec 归因基准(byte[] 透传 / string+span / string+分配式),结论:框架纯成本距裸 TCP 仅 ≈20–30%,其余为 codec 写法税(span 重载可消除中间数组)与 string 消息固有税(UTF-16 物化 ≈2× 报文)。README 双语新增"大报文指南",bench/README 附归因表。

修复

  • 接受循环代次门控(#47 阶段二,竞速泄漏监听器 bug):用户重连与自动重连竞速产生多个并发 StartAsync 接受循环时,被取代的"僵尸"循环完成 accept 后可能看到 _server 已被新循环替换而跳过单客户端的监听器关闭——泄漏一个仍在监听但永无人 accept 的 socket,客户端 SYN 进入无人消费的 backlog 后 ConnectAsync 永久挂起(远比"拒绝"严重)。新增 _acceptLoopId 代次:每次 StartCore 递增,被取代的循环在取得 _acceptLock 后静默退出,监听器的创建/关闭/accept 只归属当代循环。由新增的重连竞速混沌(Soak_ReconnectRacing_LongRun,60% 动作占比并发竞速)复现并锁定。