フォーマッタ(oxfmt)
現在高性能で Prettier 互換のフォーマッタになるよう、Prettier と Biome のフォーマッタを Oxc へ移植しています。
アーキテクチャの概要
Oxc フォーマッタは Prettier と同様の中核概念を保ちつつ、パフォーマンスを大きく最適化しています。
- Document モデル: Prettier / Biome と同様のドキュメント IR(中間表現)
- Pretty printing: Wadler の pretty printing アルゴリズム
- AST 連携: Oxc の高速パーサーを活かした処理
性能面の考慮
最適化の方向性
- メモリアリーナ: AST をバンプアロケータ上に確保
- 文字列の intern: 共通文字列の再利用
- 遅延評価: 高コストな処理の先送り
今の課題
技術的な難しさ
- コメント: 位置と体裁を壊さずに保持する
- JavaScript の癖: エッジケースの扱い
- 速度と互換: Prettier と完全一致に近づけつつ速くするトレードオフ
- メモリ: 巨大ファイルでも無駄を抑える
未整備・一部対応済み
- プラグイン互換
- 設定ファイル
- エディタ連携
- CLI
- Language Server Protocol