krabby: 빠른 Rust 컴파일러 만들기
6 days ago
11
- Krabby는 rustc의 느린 컴파일 속도를 개선하려는 성능 우선의 빈 슬레이트 Rust 컴파일러 구현임
- rustc의 체감 성능 개선은 이제 단일 함수 변경보다 API와 자료구조 변경에서 나오지만, 큰 코드베이스와 안정성 요구 때문에 대규모 변경이 어려운 상태임
- Krabby는 한 사람이 통제하는 작은 코드베이스에서 안정성을 우선하지 않고 컴파일러 구성요소를 함께 다시 설계해 새로운 최적화 기회와 응집력 있는 아키텍처를 찾으려 함
- 목표는 컴파일러 성능을 크게 높이려면 설계를 완전히 다시 생각해야 한다는 가설을 Rust처럼 복잡한 언어에서도 시험하는 데 있음
- 코드는 Codeberg의 krabby 저장소에 공개되어 있으며, 진행 상황은 Fediverse에 1~2주에 한 번 이상 올리는 것을 목표로 함
Krabby의 목표와 배경
- Rust는 선호하는 언어이지만 rustc 컴파일러는 눈에 띄게 느림
- rustc 성능 개선에는 이미 많은 사람이 노력 중이며, 단일 함수 변경으로 체감 성능을 올릴 수 있는 개선은 대부분 구현된 상태에 가까움
- 의미 있는 개선은 이제 API와 자료구조 변경에서 나오지만, rustc처럼 큰 코드베이스에서는 여러 기능 개발과 안정성 요구 때문에 대규모 변경이 사실상 어려움
- Krabby는 성능을 우선순위로 둔 빈 슬레이트 Rust 컴파일러 구현이며, rustc와 목표가 근본적으로 다름
- 작은 코드베이스를 한 사람이 통제하고 안정성을 우선하지 않기 때문에, 모든 구성요소를 서로 고려해 설계하면서 새로운 최적화 기회를 찾고 더 응집력 있는 아키텍처를 만들려는 접근임
- 컴파일러 성능을 크게 개선하려면 컴파일러 설계를 완전히 다시 생각해야 한다는 가설에서 출발함
- 대규모 아키텍처 최적화는 대상 언어와 관계없이 숨어 있을 수 있으며, 단순한 C 같은 언어뿐 아니라 Rust처럼 복잡한 언어에도 적용 가능하다는 점을 보이려 함
- 결과 설계가 Rust에 특화되더라도, 그 과정에서 배울 가치는 있다고 봄
프로젝트 상태와 공개 자료
- Krabby는 매우 큰 프로젝트이며, 완성 가능성이나 본인이 적임자인지는 확신하기 어려움
- 다만 코드 최적화와 완성도를 높이는 과정 자체를 좋아하고, 가치 있다고 여기는 목적을 위해 좋은 코드를 쓰는 즐거움이 현재까지 동력이 되고 있음
- 코드는 Codeberg의 krabby 저장소에 공개되어 있음
- 진행 상황은 Fediverse에 1~2주에 한 번 이상 올리는 것을 목표로 하며, 더 깊이 있는 긴 업데이트는 같은 사이트에 게시할 예정임
- 관심 있는 사람은 메일로 연락할 수 있음
-
관련 진행 글
-
Homepage
-
Tech blog
- krabby: 빠른 Rust 컴파일러 만들기