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%。