Skip to content

フォーマッタ(oxfmt)

現在高性能で Prettier 互換のフォーマッタになるよう、Prettier と Biome のフォーマッタを Oxc へ移植しています。

アーキテクチャの概要

Oxc フォーマッタは Prettier と同様の中核概念を保ちつつ、パフォーマンスを大きく最適化しています。

  • Document モデル: Prettier / Biome と同様のドキュメント IR(中間表現)
  • Pretty printing: Wadler の pretty printing アルゴリズム
  • AST 連携: Oxc の高速パーサーを活かした処理

性能面の考慮

最適化の方向性

  • メモリアリーナ: AST をバンプアロケータ上に確保
  • 文字列の intern: 共通文字列の再利用
  • 遅延評価: 高コストな処理の先送り

今の課題

技術的な難しさ

  1. コメント: 位置と体裁を壊さずに保持する
  2. JavaScript の癖: エッジケースの扱い
  3. 速度と互換: Prettier と完全一致に近づけつつ速くするトレードオフ
  4. メモリ: 巨大ファイルでも無駄を抑える

未整備・一部対応済み

  • プラグイン互換
  • 設定ファイル
  • エディタ連携
  • CLI
  • Language Server Protocol