성능을 최우선으로 두고 Rust 컴파일러를 처음부터 새로 설계하는 프로젝트 krabby를 소개합니다.
2025년 11월 16일 업데이트; 작성자 arya dradjica
Rust는 내가 가장 좋아하는 프로그래밍 언어이지만, 그 컴파일러는 눈에 띄게 느립니다. rustc를 개선하기 위해 일하는 믿기 어려울 만큼 뛰어난 사람들이 많이 있으며, 컴파일 속도는 그들에게도 중요한 문제입니다. 이 시점에서는, 단일 함수에 대한 변경 하나만으로 성능을 눈에 띄게 개선할 수 있었다면 이미 구현되었을 것입니다. 이제 의미 있는 개선은 API와 데이터 구조의 변화에서 나오고 있는데, 이런 것들은 발전시키기가 훨씬 더 어렵습니다. rustc처럼 큰 코드베이스에서는 많은 기능이 동시에 작업되고 있고 안정성에 대한 필요도 있기 때문에, 이런 대규모 변화를 만드는 것은 사실상 불가능합니다. 저는 이런 변화를 천천히 점진적으로 밀어 넣을 방법을 찾아내는 사람들에게 깊이 감사하지만, 저는 다른 접근을 해 보고 싶습니다.
저는 컴파일러 아키텍처에 매료되어 있으며, 컴파일 성능을 급진적으로 개선하는 유일한 방법은 컴파일러를 설계하는 방식을 완전히 다시 생각하는 것이라고 가정합니다. 대상 언어가 무엇이든, 대규모 아키텍처 최적화는 언제나 아직 발견되기를 기다리고 있습니다. 이는 C처럼 단순한 편인 언어에서는 더 자명하게 느껴질 수 있지만, 저는 이것이 스펙트럼의 반대편 끝, 즉 Rust까지도 확장될 수 있음을 보여 주고 싶습니다. 그 결과로 나오는 설계는 대상 언어에 특화될 수 있지만, 그로부터 배우는 일은 언제나 가치가 있습니다.
Krabby는 성능을 우선순위로 두고 설계된, Rust 컴파일러의 백지 상태에서의 구현입니다. 이것은 rustc와는 근본적으로 다른 목표를 가집니다. 즉, 안정성이 문제가 되지 않는 환경에서 단 한 사람이 통제하는 작은 코드베이스입니다. 모든 구성 요소를 다른 모든 구성 요소까지 염두에 두고 설계함으로써, 저는 새로운 최적화 기회를 찾고 전체적으로 더 응집력 있는 아키텍처에 도달하기를 바랍니다.
이것을 거대한 프로젝트라고 부르는 것은 과소표현일 것입니다. 제가 이것을 끝낼 가능성이 얼마나 되는지도 모르겠습니다. 이런 프로젝트를 맡기에 제가 적합한 사람인지조차 모르겠습니다. 하지만 저는 코드를 최적화하고 완성도를 높이는 과정을 정말로 사랑하고, 지금까지는 좋은 코드를 작성하는 기쁨(특히 제가 가치 있다고 여기는 목적을 위한 코드라면 더욱)이 저를 꽤 잘 지탱해 주고 있습니다.
코드는 Codeberg에서 호스팅됩니다. 저는 제 진행 상황을 비교적 자주(적어도 1주 또는 2주에 한 번) Fediverse에서 올리기를 바라며, 더 깊이 있는 긴 형식의 업데이트는 이곳에 게시할 것입니다. 이것이 여러분이 흥미롭게 느끼는 프로젝트라면, 연락해 주세요; 여러분의 이야기를 듣고 싶습니다!
저작권 (c) 2025 arya dradjica. CC BY-NC-SA 4.0에 따라 라이선스가 부여됩니다. Jan Warchol의 Selenized 색상 구성을 사용합니다.