CLI Referansı
Bu sayfa bir pratisyenin ihtiyaç duyduğu tüm saqut alt komutlarını ve
bayraklarını kapsar. Derleyiciyi kurmak için Hızlı Başlangıç
sayfasına bak.
Alt komutlar
Bölüm başlığı “Alt komutlar”Bir programı derler ve çalıştırır.
saqut run program.sqt| Bayrak | Amacı |
|---|---|
--jit |
Programı VM yerine deneysel MIR JIT ile çalıştırır |
--dont-optimize |
Sabit katlama ve ölü kod elemeyi kapatır |
--gc-threshold=N |
Bayt cinsinden GC eşiği; 0 varsayılanı kullanır, negatif değer toplamayı kapatır |
--gc-stats |
Çıkışta GC istatistiklerini yazar |
--profile |
Aşama başına süreleri raporlar |
--verbose |
Aşama ilerlemesini yazar |
-- args |
-- işaretinden sonrasını programa geçirir; sys::args() ile okunur |
Optimizasyon varsayılan olarak açıktır. --dont-optimize kapatır;
--optimized eski komutların çalışmaya devam etmesi için no-op olarak hâlâ
kabul edilir.
Varsayılan ve referans arka uç bytecode VM’dir. --jit, programı deneysel MIR
JIT ile çalıştırır; JIT’in VM ile aynı çıktıyı ve aynı çıkış kodunu üretmesi
zorunludur. Gömülü çalışma zamanlı AOT (--output ikilisi) hâlâ
planlanmaktadır.
saqut run program.sqt -- girdi.txt 42tokens
Bölüm başlığı “tokens”Token akışını JSON olarak yazar.
saqut tokens program.sqtHer token; tür, metin, satır, sütun ve byte ofseti içerir. Söz dizimi vurgulayıcı veya özel araç yazmak için kullanışlıdır.
Soyut söz dizimi ağacını JSON olarak yazar.
saqut ast program.sqtsaqut ast program.sqt --optimized--optimized bayrağı, sabit katlama ve ölü kod eleme sonrası ağacı yazar.
Orijinal AST korunur; optimizasyon bir klon üzerinde çalışır.
symbols
Bölüm başlığı “symbols”Sembol tablosunu JSON olarak yazar.
saqut symbols program.sqtTüm fonksiyonları, değişkenleri, struct’ları, enum’ları ve tiplerini gösterir. Kapsam bilgisi içerir.
Ara kodu (üç adresli kod) yazar.
saqut ir program.sqtsaqut ir --cfg program.sqtsaqut ir --dont-optimize program.sqt--cfg, düz talimat listesi yerine kontrol akış çizgesini yazar: her temel
blok, öncülleri, ardılları ve sonlandırıcısıyla birlikte. Dallanmaların ve
döngülerin nasıl yerleştiğini görmek için kullanılır.
--dont-optimize, IR’yi sabit katlama ve ölü kod elemeden önceki haliyle
gösterir; optimize edicinin tam olarak neyi değiştirdiğini görmenin yolu budur.
Yalnızca anlamsal analiz yapar; hata ve uyarıları JSON olarak bildirir.
saqut check program.sqtÇıkış kodu 0 hatasız demektir. Sıfır olmayan değer hata bulunduğunu belirtir. Uyarılar çıkış kodunu etkilemez.
Tek bir ifadeyi veya deyimi etkileşimli olarak çalıştırır.
saqut exec "3 + 4 * 2"Sonucu doğrudan yazar. Dosya oluşturmadan hızlı denemeler için kullanışlıdır.
Bir programın çalışma süresini ölçer.
saqut bench program.sqt [--jit] --runs=<iterations>JIT, zamanlama iterasyonlarından önce bir kez ısıtılır. Zamanlama tablosu çalıştırma süresini derleme/ısıtma süresinden ayrı gösterir.
Performansı adil karşılaştırma
Bölüm başlığı “Performansı adil karşılaştırma”Her dilde aynı algoritmayı, aynı girdiyi, aynı çıktı davranışını, aynı optimizasyon seviyesini ve aynı tekrar sayısını kullan. En az iki sayı bildir:
- derleme/ısınma süresi: ilk ölçülen çalışmadan önce geçen süre;
- kararlı çalışma süresi: kurulumdan sonra tekrar edilen program gövdesinin süresi.
saQut için zamanlama tablosundaki vm-execute ve jit-execute değerlerini
kullan. saQut JIT ısınmasını, başka bir dilin önceden derlenmiş binary süresiyle
karşılaştırma. C++, Rust, Go veya Java karşılaştırmasında compiler ve bayrakları,
runtime sürümünü, makineyi, işletim sistemi sürümünü, girdi boyutunu ve GC veya
sınır kontrollerinin açık olup olmadığını yaz. Tek bir VM/JIT oranı yerel bir
ölçümdür; evrensel dil sıralaması değildir.
lsp / dap
Bölüm başlığı “lsp / dap”Dil Sunucusunu veya Hata Ayıklama Adaptörünü başlatır. Bunlar VS Code eklentisi tarafından kullanılır, doğrudan çalıştırılmaz:
saqut lspsaqut dapSık kullanılan desenler
Bölüm başlığı “Sık kullanılan desenler”# Tam içgözlemle çalıştırsaqut run --gc-stats --profile program.sqt
# Çalıştırmadan önce kontrol etsaqut check program.sqt && saqut run program.sqt
# İki arka ucu aynı programda karşılaştırsaqut run program.sqt > vm.txtsaqut run --jit program.sqt > jit.txtdiff vm.txt jit.txt
# Optimizasyonun neyi değiştirdiğini görsaqut ast program.sqt --json > optimize.jsonsaqut ast program.sqt --dont-optimize --json > ozgun.jsondiff ozgun.json optimize.json