Cavvy 5.2.0 已知问题
本文件列出 5.2.0 版本中已知的限制与规避方案。
1. Windows 下 LLVMDisposeMessage 内存释放不可用
影响范围: 嵌入式 llc 模式(--use-embedded-llc)下 IR 解析出错时
问题描述: LLVM C API 在 Windows 环境下调用 LLVMDisposeMessage 可能导致访问冲突崩溃。这是由于 LLVM 某些 Windows 构建版本中,LLVMCreateMessage 返回的字符串并非由 malloc 分配,导致 LLVMDisposeMessage(内部调用 free)行为未定义。
当前状态: 已将对应内存释放调用注释掉,存在轻微内存泄漏(仅在错误路径上)。
规避方案:
- 错误路径泄漏仅发生在 IR 验证失败时,不影响正常编译流程
- 如果频繁触发此问题,建议避免在 Windows 上使用
--use-embedded-llc,改用默认的 clang 后端
计划修复版本: 5.3.0(等待 LLVM 官方修复或找到更安全的释放策略)
2. Windows 多线程编译竞态
影响范围: 所有 Windows 构建
问题描述: Rust 增量编译在 Windows 上因文件锁定竞争导致偶发编译失败。目前已在全局关闭增量编译(codegen-units = 1 结合 incremental = false)。
当前状态: 增量编译已关闭,编译速度有所下降但稳定性已恢复。
规避方案: 无。这是 Rust 编译器在 Windows 上的已知问题。
3. 错误码尚未完全标准化
影响范围: 诊断系统
问题描述: 虽然本版本引入了 error_code 字段,但错误码的分配尚未完全标准化,部分变体可能使用临时错误码。
当前状态: 错误码方案已启用但仍在演进中。
计划修复版本: 5.3.0(发布完整的错误码参考文档)
4. cay-ast / cay-pl / cay-sir 构建号为 2
影响范围: 新工具
问题描述: 三个新工具的构建号(build 2)显著低于其他工具的构建号(如 cayc 为 build 47),表示这些工具处于早期阶段。
当前状态: 功能基本可用但可能缺少边缘情况处理。
5. 关闭增量编译后的重编译性能
影响范围: 所有开发者
问题描述: 增量编译关闭后,增量修改后的重编译时间可能比之前长 1.5x-2x。
规避方案:
- 考虑使用
sccache进行编译缓存 - 对于日常开发,可选择性开启
codegen-units(风险自负)