害羞

主要观点:作者加入Topiary团队后,尝试用其格式化 Bash,起初因 Tree-sitter Bash 语法存在问题未成功,两年后该语法及 Topiary 都有发展,Nicolas Bacquey 解决问题使 Bash 成为“支持语言”,并对比了 Topiary 和shfmt这两个 Bash 格式化工具。
关键信息:

  • 起初 Tree-sitter Bash 语法有问题,两年后 Nicolas Bacquey 解决,Bash 成为支持语言,Topiary v0.6 中 Bash 格式化状态良好。
  • shfmt是 Bash 的事实上的格式化工具,写于 Go 语言,活跃维护多年。
  • Topiary 目前在区分行续行与其他标记边界、“对齐块”(特别是注释)、字符串插值格式化等方面不如shfmt,但在处理某些shfmt不喜欢的构造以及实现“重写规则”方面有优势。
  • 比较两者吞吐量,Topiary 比shfmt快约 3 倍,且 idempotency 检查的惩罚可忽略,输入大小对吞吐量有影响。
  • 作者在写博客期间对 Topiary 的 Bash 支持进行了调整,使其表现更好,Topiary 虽有不足但已成为 Bash 生态系统的竞争者。
    重要细节:
  • 列举了 Bash 语法中的一些怪异之处,如尾随注释、case 语句、数组索引计算、命令替换与算术扩展区分等。
  • 详细说明了 Topiary 与shfmt在处理各种 Bash 构造上的差异,包括数组索引赋值、 brace 展开等。
  • 介绍了比较吞吐量的实验方法,包括选取脚本、随机化、拼接输入等步骤,并给出了实验结果。
  • 提及在写博客期间对 Topiary 的 Bash 格式化规则进行的调整内容。
阅读 9
0 条评论