Мэдээ

RAM-ийг 100 дахин бага зарцуулдаг "Rust Glancer" LSP танилцуулагдлаа: `rust-analyzer`-ийн үндэслэгч хүртэл хүлээн зөвшөөрөв

TOGTOKHTOGTOKH·2026 оны наймдугаар сарын 22·0 үзсэн·
RAM-ийг 100 дахин бага зарцуулдаг "Rust Glancer" LSP танилцуулагдлаа: `rust-analyzer`-ийн үндэслэгч хүртэл хүлээн зөвшөөрөв

Rust хэлээр код бичдэг хөгжүүлэгч бүрийн сайн мэддэг нэг том "өвчин" бий: Төсөл томорч, хэдэн арван crates хамаарал нэмэгдэх тусам VS Code эсвэл Neovim дээр ажиллаж буй rust-analyzer хэдэн гигабайт RAM эзэлж, комьпютерийг гацааж эхэлдэг. 8GB, 16GB санах ойтой зөөврийн компьютер дээр энэ нь бүр ч хүнд тусдаг.

Тэгвэл энэ асуудлыг сууриар нь шийдэх зорилготой "Rust Glancer" нэртэй цоо шинэ Rust LSP (Language Server Protocol) төсөл нээлттэй зарлагдлаа. Хамгийн сонирхолтой нь уг төсөл ердийн төслүүд дээр 100MB-аас ч бага санах ой ашиглан type inference, trait solving, goto definition, completions зэрэг LSP-ийн үндсэн үйлдлүүдийг маш хурдан гүйцэтгэж чадаж байна.

Энэхүү дэвшлийг rust-analyzer-ийг анх үндэслэн зохион бүтээсэн Алексей Кладов (matklad) өөрийн блогтоо өндрөөр үнэлж, архитектурын задлан шинжилгээ хийсэн нь дэлхийн технологийн нийгэмлэгт шуугиан тарив.


Яагаад rust-analyzer тийм их RAM иддэг байсан бэ?

rust-analyzer-ийн зохиогч matklad-ийн өөрөө хүлээн зөвшөөрснөөр, өнөөгийн rust-analyzer нь анхнаасаа "нарийн төвөгтэй, DOM загвартай incremental refactoring" хийхэд зориулагдсан архитектуртай бүтээгдсэн:

  1. Rowan Syntax Tree: Syntax модны зангилаа бүрийг тусад нь объект болгон хадгалж, кодын жижиг өөрчлөлтийг DOM мод шиг шууд шинэчилдэг бүтэц ашигладаг. Энэ нь бичих явц дахь refactoring-д сайн ч санах ойн асар их overhead үүсгэдэг.
  2. Хамаарлуудын хэт гүн индекслэлт: Төсөлд буй таны хэзээ ч сөхөж харахгүй мянга мянган гадны санг (dependencies) бүтнээр нь задалж, санах ойд хадгалдаг.
  3. Procedural Macros: Процедурын макронуудыг ажиллуулж тэлэх үйл явц нь хэмжээг хэд дахин томруулдаг.

Үр дүнд нь энгийн төсөл ачааллахад л 2GB–6GB RAM төвөггүй зарцуулагддаг байв.


Rust Glancer: 100MB-ийн хязгаарт яаж багтав?

Rust Glancer нь өөр гүн ухаанаар бүтээгдсэн. Түүний гол давуу талууд болон техникийн шийдлүүд:

  • Flat / Array-Based AST: Объект бүрт тусдаа pointer үүсгэхийн оронд бүх AST бүтцийг дараалсан массив (flat list of arrays) хэлбэрээр нягтаршуулж хадгалдаг. Энэ нь CPU-ийн cache-д ээлтэй бөгөөд санах ойн зарцуулалтыг огцом бууруулдаг.
  • Lazy & Shallow Indexing: Таны код дээр ашиглагдаж буй 99% гадны сангуудыг зөвхөн өнгөц (shallow) индексжүүлж, зөвхөн хөгжүүлэгчийн яг одоо нээсэн идэвхтэй файлын функцийн их биеийг (function body) гүн задлан шинжилдэг.
  • Шууд дахин ачаалах (Persistent Cache): Editor-оо хаагаад дахин нээхэд бүх төслийг эхнээс нь индексжүүлж суух шаардлагагүй. Индекс дискэнд хадгалагдах тул нээх агшинд шууд бэлэн болдог.

Туршилтаар M1 MacBook Pro (8GB RAM) дээр rust-analyzer их хэмжээний санах ой эзэлж, индексийг 14 секундэд хийж байхад, Rust Glancer 9 секундэд дуусгаж, RAM зарцуулалт нь 100MB-аас хэтрэхгүй тогтвортой байжээ.


matklad: "Rowan нь ердөө 1%-ийн тохиолдолд л хэрэгтэй байсан"

Алексей Кладов энэ талаар:

"rust-analyzer-т ашигласан Rowan мод нь incremental parsing-д дажгүй ч энэ нь ердөө 1%-ийн хэрэглээ байсан. Харин бодит амьдрал дээрх 99% хэрэгцээ бол таны хэзээ ч засварлахгүй олон зуун сангуудыг хамгийн бага санах ойгоор хурдан унших явдал юм. Rust Glancer-ийн харуулж буй энэ арга барил үнэхээр гайхалтай." хэмээн онцолжээ.

Гэхдээ Rust Glancer нь одоогоор хөгжүүлэлтийн дөнгөж 4 дэх саран дээрээ явж буй төсөл тул procedural macro-ийн бүрэн гүйцэтгэл, маш нарийн refactoring үйлдлүүд дээр rust-analyzer-ийг бүрэн орлох болоогүй байна. Гэсэн хэдий ч энэ нь хөнгөн жинтэй, хурдан LSP хайж буй Rust сонирхогчид болон хязгаарлагдмал нөөцтэй орчинд (жишээ нь, алсын сервер, контейнер, 8GB RAM-тай төхөөрөмж) ажилладаг инженерүүдэд томоохон гарц болж байна.


Дүгнэлт

Хөгжүүлэгчийн багаж хэрэгсэл (DevTools) улам нүсэр, санах ой их шаарддаг болсон өнөө үед "Rust Glancer" нь өгөгдлийн бүтцийн зөв сонголт ба lazy тооцоолол хичнээн том үр дүнд хүрч болохыг харууллаа. VS Code болон бусад LSP дэмждэг editor-ууд дээр туршиж үзэх боломжтой өргөтгөл (extension) нь хэдийн нийтийн хүртээл болоод байна.

Эх сурвалж:

  • matklad (Aleksey Kladov) блог: matklad.github.io/2026/08/21/rust-glancer.html
  • Rust Glancer албан ёсны танилцуулга: rust-glancer.github.io/blog/hello-world/

Сэтгэгдэл

Ачаалж байна...