Skip to content

フォーマッター (oxfmt)

現在、Oxc に Prettier および Biome フォーマッターを移植中であり、高パフォーマンスかつ Prettier と互換性のあるフォーマッターの構築を目指しています。

アーキテクチャの概要

Oxc フォーマッターは、Prettier と同じコア概念に基づいて設計されていますが、顕著なパフォーマンス最適化が施されています。

  • ドキュメントモデル: Prettier および Biome のドキュメント IR(中間表現)を使用
  • プレーンプリント: Wadler のプレーンプリントアルゴリズムを実装
  • AST 統合: Oxc の高速パーサーを活用して最適なパフォーマンスを達成

パフォーマンスに関する考慮事項

最適化戦略

  • メモリアレイン: AST はバンプアロケータで割り当て
  • 文字列インターニング: 共通する文字列の再利用
  • 遅延評価: 高コストな計算を遅らせる

現在の課題

技術的な課題

  1. コメント処理: コメントの配置やフォーマットを保持すること
  2. JavaScript の特殊性: JavaScript 語法の端境ケースに対応すること
  3. パフォーマンスと互換性のバランス: 速度と正確な Prettier 出力の両立
  4. メモリ管理: 大容量ファイルの効率的扱い

欠落している機能

  • [ ] プラグインシステムとの互換性
  • [x] 設定ファイルのサポート
  • [ ] エディタ統合
  • [x] CLI ツール
  • [x] 言語サーバープロトコル