Sid의 안식년 주요 프로젝트는 Ruby LSP 인덱서의 성능 개선에 있습니다. 현재 Ruby LSP는 코드베이스 내의 클래스, 메서드, 모듈 등 다양한 엔티티 정보를 파싱, 순회, 저장하는 인덱싱 과정을 언어 서버 시작 시마다 수행합니다. 그러나 이 방식은 대규모 코드베이스(예: Shopify의 코어 Rails 모놀리스)의 경우 약 90초의 긴 인덱싱 시간을 소요하며, 캐싱 부재로 인해 매번 처음부터 인덱스를 구축해야 하는 비효율성이 존재합니다. 또한, 인덱스가 약 2.2GB에 달하는 상당한 메모리를 차지하고 있으며, Ruby LSP 내부 구성 요소로만 존재하여 다른 서비스에서 접근할 수 없다는 한계가 있습니다. Sid는 이러한 문제점들을 해결하기 위해 성능, 캐싱, 메모리 사용량 개선에 기여하고 있습니다. 초기 벤치마크에서는 Ruby와 Rust 구현을 비교했으며, Rust가 더 빠른 성능을 보임을 확인했습니다.
안식년 동안 Sid는 기술적 깊이를 더하기 위해 두 권의 전문 서적을 탐독하고 있습니다. 첫 번째는 인터프리터, 컴파일러, 프로그래밍 언어에 대한 이해를 돕는 ‘Crafting Interpreters’입니다. 이 책을 통해 Sid는 Ruby로 ‘Lox’ 인터프리터를 구현하며 코드 분석 단계들의 상호 관계를 직관적으로 파악하고 있습니다. 이는 Ruby LSP가 소스 코드를 나타내는 AST(Abstract Syntax Tree)를 생성하기 위해 Prism에 의존하는 방식과 밀접하게 연관됩니다. 두 번째는 ‘The Rust Programming Language’로, Rust의 독특한 프로그래밍 패러다임을 학습하고 있습니다. 특히, 소유권(ownership) 및 빌림(borrowing)과 같은 Rust의 핵심 개념들이 왜 컴파일러에 의해 강제되는지 그 근본적인 이유를 명확히 이해하게 되었으며, 이는 메모리 관리 효율성과 데이터 경쟁 방지에 기여함을 깨달았습니다. 이러한 학습은 Ruby LSP 인덱서의 성능 향상을 위한 Rust 적용 가능성을 탐색하는 데 중요한 기반이 됩니다.
Sid는 안식년 시작 전 명확한 목표들을 수립했습니다. 여기에는 학습에 대한 열정 재점화, 오픈소스 프로젝트에 대한 기여, 안식년 경험에 대한 글쓰기, 기술적 학습 내용에 대한 심층적인 글쓰기, 기술 역량의 폭과 깊이 확장, 그리고 즐거운 시간 보내기가 포함됩니다. 현재까지 이러한 목표들을 순조롭게 달성하고 있으며, 앞으로도 더 많은 기술적 글쓰기를 통해 학습 내용을 공유할 예정입니다.