[Fikir] LSP Sunucusu — Derleyici Tamamlandığında Tam Yetenek Haritası (Tier 1-4) #91
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#91
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Bu issue'nun ilk hâli "derleyici bitmeden LSP'ye gerek yok, v0'da sadece hover/diagnostic yeter" diyordu. Ama soru şu: derleyici (Faz 0-4 + IR/VM) tamamen bittiğinde, "artık tam çalışan bir LSP istiyoruz" dersek ne lazım? Bu revizyon, LSP (Language Server Protocol, Dil Sunucusu Protokolü) yeteneklerini katmanlı bir kontrol listesi olarak ele alır: hangileri "olmazsa LSP'ye LSP denmez" (Tier 1), hangileri "kullanılabilirliği büyük sıçratır" (Tier 2), hangileri "modern/parlak ama sonra eklenebilir" (Tier 3), hangileri "v2/derin entegrasyon" (Tier 4).
Önkoşul (her tier'den önce): Artımlı derleme (incremental compilation) altyapısı — editördeki her tuş vuruşunda tüm projeyi/dosyayı baştan derlemek kabul edilemez gecikmeye yol açar. LSP sunucusu, AST + Symbol Table'ı bellekte tutmalı, sadece değişen dosyayı (ve onu import edenleri, #81-83) yeniden analiz etmelidir. Bu, "derleyici bir kütüphane olarak da kullanılabilir olmalı" (Faz 0-4'ün C++ API'sinin CLI'dan ayrı, gömülebilir bir arayüzü olması) anlamına gelir — büyük bir mimari karardır ve Tier 1'in önkoşuludur.
Tier 1 — "LSP" Denebilmesi İçin Olmazsa Olmaz
textDocument/publishDiagnosticsDiagnosticEngine(Faz 0) çıktısı — gerçek zamanlı kırmızı çizgilertextDocument/hoverExpressionNode.resolvedType(Faz 3) — değişkenin/ifadenin tipini gösterirtextDocument/definition(tanıma git)Symbol.definitionLoc(Faz 2)textDocument/completion(otomatik tamamlama)Bu dördü olmadan editör deneyimi "düz metin editörü + harici terminal"den farksızdır — bu yüzden Tier 1, derleyici bitince hemen başlanacak iş.
Tier 2 — Kullanılabilirliği Büyük Sıçratır
textDocument/references(tüm kullanımları bul)Symbol.referenceslistesi (Faz 2) — zaten toplanıyor, sadece LSP'ye expose etmek yeterlitextDocument/documentSymbol(dosya özeti/outline)FunctionDecl/StructDecllistesi (AST)textDocument/rename(güvenli yeniden adlandırma)referenceslistesi üzerinden toplu düzenleme — Faz 2'nin "iki geçişli toplama" doğruysa bu neredeyse bedava gelirtextDocument/signatureHelp(fonksiyon çağrısında parametre ipucu)Type)Tier 3 — Modern/Parlak, Sonradan Eklenebilir
textDocument/semanticTokensIdentifier'ın değişken mi fonksiyon mu olduğunu tipe göre renklendirir)textDocument/codeAction(hızlı düzeltmeler)saqut fix(#107 Tier 2) — "did you mean X?" önerisini tek tıkla uygulamatextDocument/formattingsaqut fmt(#93) çıktısını doğrudan kullanırtextDocument/inlayHint(satır-içi tip ipuçları)resolvedType— örn.int x = 1;satırının yanında soluk: intgöstermek (ADR-010 literal adaptasyonunun görünür kanıtı)Tier 4 — Derin Entegrasyon / v2
workspace/symbol(proje-geneli sembol arama)CallExpressionNode+Symbolilişkisiworkspace/symbol'ün üzerine inşa edilirAçık Sorular
SymbolTable,DiagnosticEngine) tek dosyalık CLI çağrısı dışında, uzun ömürlü bir süreç içinde tekrar kullanılabilir şekilde tasarlanmasını gerektirir — bu mimari kısıt Faz 2-3 sırasında (sınıflar yazılırken) not edilmeli, sonradan eklemek çok daha maliyetli olur.step()) fonksiyonunun VM API'sinin parçası olması bu issue'yu önemli ölçüde kolaylaştırır.İmza/Yorum: Önceki hâlde "v0'da gerek yok" denmişti — bu doğru ama eksikti. Doğru çerçeve: derleyici bittiğinde Tier 1, neredeyse "ücretsiz" gelir (veriler zaten orada); LSP'nin asıl maliyeti mimari önkoşulda (artımlı derleme) ve Tier 4'te (DAP) yoğunlaşır.
[Fikir] LSP (Language Server Protocol) Sunucusu Mimarisito [Fikir] LSP Sunucusu — Derleyici Tamamlandığında Tam Yetenek Haritası (Tier 1-4)