[Fikir] Güvenlik ve Stabilite için Java Tarzı Tasarım Kararları (Sınır Kontrolü, Hata İzolasyonu) #109
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#109
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?)
saQut'ta kullanıcıya açık pointer yok (dil kimliği) — bu, C'nin en büyük güvenlik açığı kaynağı olan "pointer aritmetiği"ni baştan eliyor. Ama Java'nın asıl gücü bundan da fazlası: her hata kontrollü bir şekilde yakalanır, programın geri kalanı çökmeden devam edebilir (exception/hata izolasyonu) ve dizi sınırları her zaman kontrol edilir. Bu issue, bu ilkelerin saQut'a nasıl yansıyacağını tartışır.
Gelişme (Tavsiyeler)
int[3] notlar; notlar[5] = 1;gibi bir erişim — eğer boyut derleme zamanında biliniyorsa (E009zaten "array boyutu sabit değil" hatasını kapsıyor, ama "sabit boyut + sınır-dışı indeks" ayrı bir konu) derleme zamanındaE0xxile yakalanmalı; eğer indeks çalışma zamanı değeriyse (notlar[i],idöngü değişkeni), VM çalışma zamanında kontrol etmeli ve kontrollü bir "runtime error" üretmeli (C'deki sessiz bellek bozulmasının tam tersi).W002derleme-zamanı uyarısı var, ama çalışma zamanında gerçek bir bölme10 / xilex=0olursa ne olur?), dizi sınır taşması, derinlik taşması (call stack overflow, #78) — bunların hepsi aynı "RuntimeError" ailesinde, konum bilgisiyle (hangiprint/satırda patladı) raporlanmalı; VM segfault ile çökmemeli.assert/exception kullanımı, kullanıcı programındaki bir hatayı (örn. sınır-dışı erişim) VM crash'ine dönüştürmemeli — bu, VM geliştirilirken her runtime-error noktasında "bu durum kullanıcıya nasıl raporlanır" sorusunun sorulması demektir.Açık Sorular
R001,R002... "Runtime" öneki ile,E/W'den ayrı) mı açılmalı — IR/VM tasarım issue'larına (#74-78) not edilmeli.İmza/Yorum: "Güvenli dil" derken kastedilen genelde "bellek güvenliği" — saQut bunu zaten pointer'sızlıkla büyük ölçüde kazandı; kalan iş, çalışma zamanı hatalarını zarif bir şekilde raporlamak.