Skip to content

Форматтер (oxfmt)

Сейчас мы портируем Prettier и Biome Formatter в Oxc, чтобы получить высокопроизводительный форматтер, совместимый с Prettier.

Обзор архитектуры

Форматтер Oxc опирается на те же ключевые идеи, что и Prettier, но с существенными оптимизациями производительности:

  • Модель документа: использует IR-документ Prettier и Biome (промежуточное представление)
  • Красивая печать: реализует алгоритм Вадлера (Wadler)
  • Интеграция с AST: использует быстрый парсер Oxc

Производительность

Стратегии оптимизации

  • Арен allocator: AST выделяется в bump-аллокаторе
  • Интернирование строк: повторное использование частых строк
  • Ленивые вычисления: откладывание дорогих операций

Текущие сложности

Технические

  1. Комментарии: сохранение позиций и оформления комментариев
  2. Особенности JavaScript: граничные случаи синтаксиса
  3. Скорость и совместимость: баланс между быстротой и побайтовым совпадением с Prettier
  4. Память: эффективная работа с большими файлами

Недостающие возможности

  • Совместимость с системой плагинов
  • Поддержка файлов конфигурации
  • Интеграции с редакторами
  • CLI
  • Протокол language server