Форматтер (oxfmt)
Сейчас мы портируем Prettier и Biome Formatter в Oxc, чтобы получить высокопроизводительный форматтер, совместимый с Prettier.
Обзор архитектуры
Форматтер Oxc опирается на те же ключевые идеи, что и Prettier, но с существенными оптимизациями производительности:
- Модель документа: использует IR-документ Prettier и Biome (промежуточное представление)
- Красивая печать: реализует алгоритм Вадлера (Wadler)
- Интеграция с AST: использует быстрый парсер Oxc
Производительность
Стратегии оптимизации
- Арен allocator: AST выделяется в bump-аллокаторе
- Интернирование строк: повторное использование частых строк
- Ленивые вычисления: откладывание дорогих операций
Текущие сложности
Технические
- Комментарии: сохранение позиций и оформления комментариев
- Особенности JavaScript: граничные случаи синтаксиса
- Скорость и совместимость: баланс между быстротой и побайтовым совпадением с Prettier
- Память: эффективная работа с большими файлами
Недостающие возможности
- Совместимость с системой плагинов
- Поддержка файлов конфигурации
- Интеграции с редакторами
- CLI
- Протокол language server