[Fikir] v1 → v2 Ekosistem Yol Haritası — Derleyici Bittikten Sonraki Bağımlılık Sırası #111
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#111
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?)
#91 (LSP) ve #107 (CLI) artık "derleyici bittiğinde ne lazım" sorusuna katmanlı (Tier) cevaplar veriyor. Ama bu issue'lar birbirinden, #93 (fmt), #94 (time-travel debug), #95 (playground), #96 (test bloğu) ve #97 (paket yöneticisi)'den bağımsız okunursa, hangisinin hangisine bağımlı olduğu, hangi sıraya göre yapılırsa en az tekrar-iş (rework) çıkacağı kaybolur. Bu issue, "derleyici (Faz 0-4 + IR/VM) tamamlandı, artık ekosistemi inşa ediyoruz" senaryosunda bağımlılık sırasını tek bir yerde toplar — bir "v1 → v2 yol haritası".
Aşama A — "Derleyici bitti" anında neredeyse bedava gelenler
Bunlar, Faz 0-4'ün verilerini (Symbol Table, DiagnosticEngine, AST) farklı bir şekilde göstermekten ibarettir — yeni analiz gerektirmezler:
saqut check(#107 Tier 0)saqut explain <kod>(#107 Tier 1)saqut ast --format=tree/dot/table(#106)→ Önerilen ilk hafta: Bunların hepsi paralel, küçük PR'lar olarak yapılabilir; aralarında bağımlılık yok.
Aşama B — Tek bir mimari önkoşula bağlı olanlar: "Artımlı / Gömülebilir Derleyici"
LSP Tier 1-2 (#91),
saqut watch(#107), vesaqut repl(#107 Tier 1) hepsi aynı şeyi istiyor: derleyicinin C++ sınıflarının (Lexer, Parser, SymbolTable, DiagnosticEngine, ileride VM) tek seferlik CLI çağrısı dışında, uzun ömürlü bir süreçte tekrar tekrar, kısmi girdilerle çağrılabilmesi.→ Bu, "ekosistem" aşamasının TEK BÜYÜK mimari yatırımı. Bir kere yapılırsa Aşama A'nın Tier 2'leri (LSP references/rename, watch, repl) art arda ve hızlı gelir. Yapılmazsa her biri kendi geçici/yavaş çözümünü icat eder ve sonra hepsi yeniden yazılır.
Aşama C — Modül sistemine bağlı olanlar
#81-83 (import/modüller) bitmeden şunlar eksik kalır:
workspace/symbol, cross-file rename/references (#91)saqut build(#107 Tier 2) — "proje" kavramı modülsüz anlamsızsaqut pkg(#97) — paket = modül koleksiyonu→ Modül sistemi, ekosistem issue'larının ikinci büyük bağımlılık noktası.
Aşama D — VM'in "adım-adım çalışma" API'sine bağlı olanlar
#94 (zaman-yolculuğu debug) ve LSP Tier 4 DAP entegrasyonu (#91) aynı temel özelliği istiyor: VM'in
step()/ "bir IR komutu çalıştır, durumu döndür" şeklinde çağrılabilmesi.→ IR/VM tasarımı (#74-78) sırasında bu API baştan düşünülürse (VM'in
run()'ı zaten içeridestep()'i döngüde çağırıyor olsun), hem #94 hem DAP (#91 Tier 4) bunun üzerine ince katmanlar olarak gelir. Sonradan eklenirse VM'in dispatch döngüsü (#77) yeniden yazılır.Aşama E — Bağımsız / paralel yürüyebilenler (istenen an eklenebilir)
saqut fmt(#93) — sadece AST + (yorum-koruma çözümü) gerektirir, yukarıdaki hiçbir aşamaya bağlı değil.test{}bloğu (#96) —assertbuiltin'i (#89) yeterli, modül/LSP'ye bağımlı değil.Önerilen Genel Sıra (özet)
Açık Sorular
analyze()çağrısı arasında state tutabilmeli")? Bu, geriye dönük en maliyetli değişikliklerden biri olur.İmza/Yorum: Bu issue bir "yapılacak iş" değil, bir harita — #91, #93-98, #107 arasındaki gizli bağımlılıkları görünür kılmak için. Her aşama tamamlandığında bu harita güncellenmeli.