Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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(风险自负)