Hasty Briefsbeta

双语

My Formatter Will Never Be as Fast as Ruff

a year ago
  • #zig
  • #code-formatting
  • #tree-sitter
  • 作者用Zig语言基于tree-sitter构建了一个通用代码格式化工具,旨在实现多语言格式统一。
  • 初期基准测试表现良好,但在大文件处理上显著落后于Python格式化工具Ruff。
  • 性能分析显示79%时间消耗在AST解析阶段,而非格式化逻辑本身。
  • 尝试优化tree-sitter(解析器复用/自定义分配器/部分解析)收效甚微。
  • Tree-sitter必须全文件解析的设计,使其在格式化场景中不如Ruff专用解析器高效。
  • Ruff通过为Python优化的手写递归下降解析器及跳过非必要AST特性实现极速。
  • 尽管存在性能差距,作者仍肯定tree-sitter的多语言适配价值。
  • 当前项目已实现约90%的Black格式化规则兼容,计划最终达成100%。