Formatador (oxfmt)
Estamos portando o Prettier e o formatador do Biome para o Oxc, para termos um formatador de alto desempenho e compatível com o Prettier.
Visão geral da arquitetura
O formatador do Oxc repete os mesmos conceitos centrais do Prettier, mas com otimizações grandes de desempenho:
- Modelo de documento: usa o IR (representação intermediária) de documento do Prettier e do Biome
- Pretty printing: implementa o algoritmo de pretty printing de Wadler
- Integração com AST: aproveita o parser rápido do Oxc para máximo desempenho
Considerações de desempenho
Estratégias de otimização
- Arena de memória: AST alocado em bump allocator
- Internação de strings: reutiliza strings comuns
- Avaliação preguiçosa: adia cálculos caros
Desafios atuais
Desafios técnicos
- Comentários: preservar posição e formatação dos comentários
- Peculiaridades do JavaScript: tratar casos extremos da sintaxe
- Desempenho versus compatibilidade: equilibrar velocidade com saída idêntica ao Prettier
- Gestão de memória: lidar bem com arquivos grandes
Funcionalidades em falta
- Compatibilidade com sistema de plugins
- Suporte a arquivo de configuração
- Integrações com editores
- Ferramenta de CLI
- Language Server Protocol