- Buz는 Bun의 Rust 재작성 직전 커밋에서 출발해, 최신 Zig 기반의 호환 가능한 대체재를 목표로 개발 중인 초기 단계 포크임
- JavaScriptCore 벤더링 소스까지 전체 빌드 그래프를
build.zig로 옮기고 Zig에 소규모 패치를 적용해 1초 미만 증분 빌드를 구현함 - Rust 버전 Bun의 새 기능·버그 수정 테스트를 가져왔지만 실패하는 테스트가 많아, 업스트림 기능과 JavaScriptCore 변경을 계속 따라가야 함
- 사용되지 않는 코드 11,000줄 이상을 제거하고 일부 구현을 Zig 표준 라이브러리 중심으로 현대화하는 과정에서 여러 버그도 수정함
- 아직 프로덕션에 쓸 수 없으며, LLM과 사람의 감독을 함께 활용해 기술 부채를 줄인 뒤 LLM 없이도 유지보수하기 좋은 코드베이스를 만드는 것이 장기 목표임
프로젝트 목표와 개발 상태
- Buz는 Bun이 Rust로 재작성되기 전 마지막 커밋을 기반으로 한 개발 중인 포크임
- Bun과 호환되는 대체재이면서 기존보다 정돈된 코드베이스를 만드는 데 초점을 맞춤
- 개발이 매우 초기 단계라 프로덕션에 사용할 준비가 되지 않았음
- 유사한 Zig 기반 Bun 프로젝트가 이미 Ziggit에 공개된 상황에서 개발 작업의 중복을 피하고자 Buz를 공개함
- 공개 당시에는 해당 프로젝트를 아직 검토하지 않은 상태였음
최신 Zig 포팅과 증분 빌드
- Bun을 현재 업스트림 Zig로 포팅하고, 증분 재빌드를 위해 Zig에 소규모 패치를 적용함
- JavaScriptCore의 벤더링 소스를 포함한 전체 빌드 그래프를
build.zig에 통합함 - 이 구성으로 증분 빌드 시간이 1초 미만으로 줄어 개발 반복 주기가 빨라짐
- 프로젝트에는 증분 빌드 패치를 적용한 Zig
master서브모듈이 포함됨 - 당시 업스트림 Zig 커밋
2b1c663에서도 정상적으로 빌드 가능함
호환성 테스트와 업스트림 추적
- Rust 버전 Bun에 추가된 테스트를 가져왔으며, 새 기능과 버그 수정을 검증하는 테스트도 다수 포함됨
- 아직 통과하지 못하는 테스트가 많아 Bun 업스트림을 계속 따라잡아야 함
- 기능 호환성을 유지하면서 코드를 정리하고 기술 부채를 줄이는 작업도 병행함
- JavaScriptCore 변경 역시 지속해서 추적해야 함
코드베이스 정리와 현대화
- Bun에서 전혀 사용되지 않는 코드 11,000줄 이상을 제거함
- 일부 코드를 재작성·현대화하면서 Zig 표준 라이브러리 활용을 늘림
- 정리와 현대화 과정에서 여러 버그도 함께 수정함
- 기존 Bun 코드베이스는 약 60만 줄 규모이며, 정돈된 상태에 도달하려면 상당수 하위 시스템을 다시 작성해야 한다고 봄
LLM 활용과 기여 방침
- 복잡한 기존 코드를 정리하기 위해 LLM을 광범위하게 활용하되, 사람의 감독과 더 나은 개발 관행을 함께 적용할 계획임
- 코드베이스가 충분히 정돈됐다고 판단할 때까지 사람이 직접 작성한 기여는 받지 않을 방침임
- 기술 부채 축소와 관용적인 Zig 코드 작성을 우선하며, 수주 또는 수개월 안에 Rust Bun 1.4.0의 호환 대체재로 내놓을 수 있는 코드베이스를 목표로 함
- Sol 또는 Fable을 사용할 수 있는 개발자의 지원을 요청함
- 장기적으로는 LLM의 도움 없이도 유지보수하기 편한 코드베이스를 만들고, 개발 과정에서 Zig 역량도 높이려 함