러스트(Rust) 개발 환경의 핵심 도구인 언어 서버 프로토콜(LSP) 구현체에 새로운 바람이 불고 있습니다. 'Rust Glancer'라는 이름의 이 프로젝트는 기존의 사실상 표준인 'rust-analyzer'가 가진 높은 메모리 사용량 문제를 해결하기 위해 등장했습니다. 합리적인 규모의 프로젝트에서 100MB 미만의 RAM 사용량을 목표로 하며, 실제 시연에서도 100MB를 넘지 않는 인상적인 결과를 보여주었습니다. 이는 rust-analyzer가 대규모 프로젝트에서 16GB RAM까지 사용하는 것과 비교하면 엄청난 절감 효과입니다.
Rust Glancer는 rust-analyzer와는 다른 아키텍처를 채택했습니다. rust-analyzer가 증분 질의 데이터베이스인 'salsa'와 부분 무효화를 지원하는 구문 트리 'rowan'을 사용해 메모리 기반의 증분 분석을 수행하는 반면, Rust Glancer는 분석 결과를 파일 시스템에 보존하고 필요할 때만 메모리로 불러오는 방식을 사용합니다. 이 덕분에 편집기를 재시작해도 기존 색인을 즉시 재사용할 수 있으며, M4 Max 기준 엔진 사용 가능까지 5초, 전체 색인 8초로 rust-analyzer보다 빠른 색인 성능을 보여주었습니다. 현재 타입 추론, 트레이트 풀이, 선언적 매크로 확장 등 주요 LSP 기능을 지원하며 VS Code 확장으로 시험해볼 수 있습니다.
물론 이러한 메모리 절감에는 몇 가지 절충점이 있습니다. 파일 시스템에서 데이터를 읽고 역직렬화하는 방식은 메모리에서 직접 읽는 것보다 본질적으로 느릴 수 있으며, 키 입력 단위의 정확성이나 완성도에서는 아직 rust-analyzer가 앞섭니다. 예를 들어, 새 항목은 문서를 저장하기 전까지 색인되지 않습니다. 또한, 신뢰할 수 없는 코드를 실행해야 하는 빌드 스크립트나 프로시저 매크로(proc macro) 호출은 지원하지 않을 방침입니다. 하지만 LLM(대규모 언어모델)을 적극 활용하여 4개월 만에 개발된 이 프로젝트는 저사양 컴퓨터를 사용하거나 메모리 효율성을 극대화하려는 개발자들에게 매우 유용한 대안이 될 것입니다. 개발자는 LLM을 도구로 활용하되, 코드에 대한 최종 책임은 본인에게 있다는 철학으로 프로젝트를 이끌고 있습니다.
Rust Glancer의 등장은 Rust 개발 생태계에 중요한 의미를 가집니다. 그동안 rust-analyzer의 높은 메모리 사용량은 특히 메모리가 부족한 환경이나 여러 프로젝트를 동시에 작업하는 개발자들에게 큰 부담이었습니다. Rust Glancer는 이러한 문제를 해결하며, 더 많은 개발자가 Rust를 사용하고 접근할 수 있도록 진입 장벽을 낮추는 데 기여할 수 있습니다. 특히 임베디드 시스템 개발이나 구형 하드웨어 사용자들에게는 매우 반가운 소식일 것입니다. 앞으로 성능 최적화, 코드 액션 및 구문 지원 확대 등 지속적인 개선이 이루어질 예정이어서, Rust 개발자들의 선택지가 더욱 넓어질 것으로 기대됩니다.