Skip to content

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

  1. Comentários: preservar posição e formatação dos comentários
  2. Peculiaridades do JavaScript: tratar casos extremos da sintaxe
  3. Desempenho versus compatibilidade: equilibrar velocidade com saída idêntica ao Prettier
  4. 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