-
Rust로 처음부터 구현된 JavaScript 엔진으로, ECMAScript 사양을 거의 완전하게 지원하는 구조
- 현재 ECMAScript 언어의 97% 이상을 통과하며, test262 기반 테스트로 검증된 상태
-
V8의 Ignition 설계와 SerenityOS의 LibJS에서 영감을 받아, 대부분의 구성요소를 의존성 최소화 방식으로 직접 구현
-
바이트코드 VM, 압축형 가비지 컬렉터, 커스텀 RegExp 엔진과 파서를 포함해 사양에 맞는 내장 객체와 함수 제공
- 아직 프로덕션용으로는 미완성이지만, ES2025 수준의 기능을 갖춘 Rust 기반 JS 엔진 개발의 중요한 진전
Brimstone 개요
- Brimstone은 Rust로 완전 새로 작성된 JavaScript 엔진으로, ECMAScript 사양을 충실히 구현하는 것을 목표로 함
- 현재 ECMAScript 언어의 97% 이상을 지원하며, test262 테스트를 통과
- 아직 프로덕션 환경에서는 사용 준비가 되지 않은 진행 중인 프로젝트임
설계 및 구현
-
ECMAScript 사양을 직접 구현하며, V8과 SerenityOS의 LibJS에서 설계적 영감을 받음
- 대부분의 엔진 구성요소를 의존성 없이 직접 구현하되, ICU4X만 예외적으로 사용
- 주요 구성 요소:
-
V8 Ignition을 참고한 바이트코드 기반 VM
-
매우 unsafe한 Rust 코드로 작성된 압축형 가비지 컬렉터
-
커스텀 RegExp 엔진과 파서
- 사양에 맞는 내장 객체 및 함수 구현
빌드 및 실행
- 표준 Cargo 명령어로 빌드 및 실행 가능
-
cargo build로 bs 실행 파일 생성
-
cargo run으로 소스에서 직접 실행
- JavaScript 파일 실행 예시:
cargo build
./target/debug/bs ./hello.js
Hello world!
테스트 체계
- 공식 test262를 포함한 1·3자 통합 테스트 세트를 활용
-
커스텀 통합 테스트 러너 포함 (cargo brimstone-test 명령으로 실행)
- 단위 및 스냅샷 테스트는 cargo test로 수행
- 추가 테스트 정보는 tests/README.md에서 확인 가능
미구현 기능
-
ES2024까지의 모든 기능과 2025년 2월 TC39 회의 기준 Stage 4 제안 대부분 구현
- 아직 미지원 기능:
-
SharedArrayBuffer
-
Atomics