AST 도구
AST 도구 작업은 모든 생성된 파일을 관리하는 우리 비밀 무기입니다.
이 도구에는 AST 빌더, 방문자(방문 패턴), ContentEq 및 ContentHash와 같은 특성, 그리고 TypeScript 유형이 포함되며, 이 모든 것이 기계적으로 생성됩니다.
예를 들어 다음 파일들은 자동으로 생성됩니다:
crates/oxc_ast/src/generated/ast_builder.rscrates/oxc_ast/src/generated/visit.rscrates/oxc_ast/src/generated/visit_mut.rscrates/oxc_ast/src/generated/derive_content_eq.rscrates/oxc_ast/src/generated/derive_content_hash.rsnpm/oxc-types/src/generated/types.d.ts
배경
러스트의 컴파일 시간은 유명하게 느립니다. 또한 이렇게 많은 코드를 프로시저 매크로를 사용해 생성하면 문제는 더욱 악화됩니다.
빌드 시에 코드 생성이 완료될 때까지 사용자가 기다려야 한다면, 하류 프로젝트의 개발 경험에 큰 지장을 초래할 것입니다.
냉장 및 증분 빌드 시간 모두 매우 크게 저하될 수 있습니다.
RFC
팀은 RFC: AST 관련 코드 생성에서 이 주제를 논의하고 다음과 같은 요구 사항과 사용자 스토리를 합의했습니다:
요구 사항
- 사용자에게
build.rs를 공개하지 않음. - 모든 생성된 코드는 깃에 커밋됨.
- 나이트리 버전 사용 금지.
- 러스트 코드가 진실의 근원이며,
#[ast]로 표시된 타입을 파싱해야 함. - 가능한 한 컴파일 시간 프로시저 매크로를 피함.
워크플로우
- 사용자가 저장소 내 코드를 변경.
- 변경 감지 도구가 이를 감지.
#[ast]로 표시된 모든 타입을 파싱.- 모든 AST 타입의 세부 정보를 스키마에 기록.
- 스키마에서 코드를 생성하고 파일에 저장.
인프라
추가 세부 정보는 곧 제공될 예정입니다.
