Skip to content

Ferramentas de AST

A tarefa AST Tools mantém todos os artefatos gerados: builder de AST, visitantes, traits como ContentEq e ContentHash, tipos TypeScript etc.

Arquivos gerados incluem:

  • crates/oxc_ast/src/generated/ast_builder.rs
  • crates/oxc_ast/src/generated/visit.rs
  • crates/oxc_ast/src/generated/visit_mut.rs
  • crates/oxc_ast/src/generated/derive_content_eq.rs
  • crates/oxc_ast/src/generated/derive_content_hash.rs
  • npm/oxc-types/src/generated/types.d.ts

Contexto

O tempo de compilação em Rust já é alto; gerar esse volume com procedural macros só piora.

Forçar geração no cargo build adia quem usa o projeto como dependência.

Builds cheios ou incrementais podem regredir muito.

RFC

Discussão na RFC: codegen AST related codes:

Requisitos

  • Nada de build.rs publicado para o usuário
  • Todo código gerado versionado em git
  • Sem nightly obrigatório
  • Tipos marcados #[ast] no Rust são a fonte de verdade — parseamos e gravamos um schema
  • Evitar procedural macros pesadas na compilação

Fluxo

  • alteração no repositório
  • watch deteta
  • parse de tipos #[ast]
  • gravação do schema AST
  • geração a partir do schema e escrita nos arquivos

Infraestrutura

Detalhes adicionais em breve.