Rust Glancer: Trình LSP cho Rust với mức tiêu thụ RAM thấp hơn 100 lần
Rust Glancer là một trình LSP (Language Server Protocol) thay thế cho rust-analyzer, được thiết kế với mục tiêu tối ưu hóa bộ nhớ, chỉ sử dụng khoảng 30MB RAM so với hàng GB của các công cụ hiện tại. Dự án do tác giả matklad phát triển trong 4 tháng, tận dụng mạnh mẽ sự hỗ trợ của LLM nhưng vẫn đảm bảo chất lượng mã nguồn, hứa hẹn mang lại trải nghiệm mượt mà hơn cho lập trình viên trên các máy có cấu hình thấp.

Rust Glancer: Trình LSP cho Rust với mức tiêu thụ RAM thấp hơn 100 lần
Rust Glancer là một dự án LSP (Language Server Protocol) đầy tham vọng, được thiết kế để thay thế rust-analyzer với mục tiêu giảm mạnh mức tiêu thụ bộ nhớ. Sau 4 tháng phát triển, công cụ này đã đạt đến trạng thái có thể sử dụng hàng ngày, mở ra hướng đi mới cho những lập trình viên Rust làm việc trên các máy có cấu hình hạn chế. Điểm đặc biệt là dự án được xây dựng với sự hỗ trợ đắc lực của LLM nhưng vẫn đảm bảo chất lượng mã nguồn và tư duy thiết kế của con người.
Vấn đề lớn về bộ nhớ của LSP hiện tại
Các trình LSP truyền thống cho Rust, điển hình là rust-analyzer, thường tiêu tốn hàng GB RAM khi phân tích các project lớn. Điều này gây khó khăn cho những nhà phát triển sử dụng máy tính có cấu hình thấp hoặc làm việc với nhiều workspace cùng lúc.
Mục tiêu của Rust Glancer là chỉ sử dụng khoảng 30MB RAM, giảm gần 100 lần so với các công cụ hiện có.
Hành trình từ "smart ctags" đến một LSP thực thụ
Ban đầu, tác giả chỉ định xây dựng một công cụ tìm kiếm biểu tượng nhẹ nhàng (smart ctags), nhưng dần dần, để hỗ trợ các tính năng cần thiết như closures, trait solving, và associated type projection, dự án đã phát triển thành một LSP hoàn chỉnh. Có ba cột mốc lớn nhất trong quá trình này:
- Khai triển macro khai báo (declarative macro expansion) – một thử thách lớn, nhưng đã tận dụng được hạ tầng sẵn có của rust-analyzer.
- Công cụ suy luận kiểu (type inference) thực thụ – khoảnh khắc tác giả thực sự hiểu cách hoạt động của "liên kết" các ràng buộc kiểu trong một bảng suy luận lớn, mang lại nhiều niềm vui nhất trong quá trình phát triển.
- Công cụ giải quyết trait (trait solver) chuyên nghiệp – sau nhiều lần thử nghiệm với các giải pháp hời hợt, tác giả đã quyết định tích hợp Chalk, một thư viện trait solver nổi tiếng, giúp đơn giản hóa đáng kể kiến trúc tổng thể.
Ngoài ra, một trong những phần mà tác giả tự hào nhất là hệ thống profiling tùy chỉnh, có thể đo lường hiệu năng, mức sử dụng bộ nhớ (cả ở mức native và qua jemalloc), so sánh trực tiếp với rust-analyzer, và chạy benchmark tự động trong CI. Chính thiết kế này đã giúp dự án tồn tại và phát triển nhanh chóng.
Sơ đồ bộ nhớ của Rust Glancer
Vai trò của LLM trong quá trình phát triển
Một điểm thú vị khác của Rust Glancer là cách nó được xây dựng: với sự hỗ trợ rất lớn từ các mô hình ngôn ngữ lớn (LLM), nhưng không phải theo kiểu "vibe coding". Tác giả khẳng định mỗi pull request đều được xem xét kỹ lưỡng, và lịch sử git cho thấy các thay đổi lớn (10k+ dòng) được thực hiện trong nhiều ngày, phản ánh sự chăm chút và kiểm soát chất lượng.
LLM có thể là những chuyên gia về lĩnh vực rất giỏi, nhưng không giỏi trong việc xây dựng các dự án lớn. Vòng lặp phát triển – "xây dựng, thử nghiệm, phát hiện lỗi thiết kế, và sửa chữa với LLM" – đã giúp tác giả học hỏi không ngừng.
Tác giả cũng thẳng thắn chia sẻ: "Đây là mã của tôi, nếu bạn coi nó là rác, hãy gọi nó là rác của tôi, không phải của AI." Điều này cho thấy trách nhiệm và sự chủ động của con người trong quá trình phát triển phần mềm hiện đại.
Kế hoạch tương lai
Rust Glancer đã sẵn sàng để một bộ phận người dùng sử dụng hàng ngày, và tác giả có những kế hoạch lớn trong các bản phát hành sắp tới:
- Tối ưu hiệu năng sâu hơn nữa, đặc biệt là trong quá trình indexing và xử lý phân mảnh bộ nhớ.
- Cải thiện suy luận kiểu và hỗ trợ cú pháp tốt hơn.
- Bổ sung code actions (ví dụ: implement missing trait fields, auto-import).
- Hỗ trợ proc macro tiềm năng với một ý tưởng độc đáo không cần thực thi mã không tin cậy.
- Một số tính năng như build scripts hoặc proc macro qua lời gọi trực tiếp sẽ không được hỗ trợ do yêu cầu thực thi mã không an toàn.
Tác giả cũng hy vọng sẽ chia sẻ thêm về các kỹ thuật thú vị như "aligning allocation lifetimes", mô hình "engine-as-a-subprocess", và "sharded cache" trong các bài blog sắp tới, nếu cộng đồng quan tâm.
Kết luận
Rust Glancer là một minh chứng ấn tượng cho thấy cộng đồng lập trình Rust luôn tìm tòi những giải pháp mới, không chỉ về tính năng mà còn về hiệu quả tài nguyên. Với mức tiêu thụ RAM cực thấp và triết lý phát triển minh bạch, dự án hứa hẹn sẽ là một lựa chọn hấp dẫn cho các lập trình viên Việt Nam đang làm việc trên các thiết bị có cấu hình khiêm tốn hoặc cần quản lý nhiều project cùng lúc.
Nếu bạn muốn tìm hiểu thêm hoặc thử nghiệm, hãy theo dõi trang GitHub của dự án và các bài viết chi tiết của tác giả trong thời gian tới.