GitHub - ityonemo/clr: 用于生命周期和其他细化类型的检查器

这是关于 Zig 语言的 CLR(Checker of Lifetimes and other Refinement types)项目的总结:

  • 项目背景与目标:Zig 是一种“不安全”的语言,内存管理需手动进行,存在安全隐患。受 Rust 的 MIRI 项目启发,探索能否通过“边车”软件对 Zig 中间表示进行静态分析,以实现比 Zig 原生更高的安全性。
  • 主要内容

    • CLR 实现:用 Elixir 实现了 Zig 的借用检查等功能,通过分析 Zig 的“AIR”中间表示进行。
    • 具体示例:包括未定义使用、栈指针逃逸、分配错误、单元跟踪等四类测试,展示了 CLR 对不同内存安全问题的检测能力。
    • 未完成工作:控制流分析、支持除“run”外的 Zig 命令、分析模块配置、模块或外部导入等功能未实现。
    • 未来期望:Zig 团队应考虑规范和锁定 AIR,并制定相关计划,虽不认为应将其作为语言的主要部分,但可作为基础的一部分,给予工具制造者支持。
  • 结论:虽构建 CLR 并非极其容易,但也不算太难,证明了对 Zig 进行静态分析的可行性和潜力。
阅读 16
0 条评论