Global değil — her değişken kendi dosyasına (modülüne) aittir.
ES6 modül mantığı: ortak global alan yok, yalnızca modül kapsamlı değişkenler.
İlgili: #53 (IRFunction.moduleId), #54 (Symbol.sourceModule)
Teknik borç: TODO.md #modül-scope başlığı
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
#45 — BAND, BOR, SHL, SHR (binary) ve BNOT (unary ~) opcode'ları eklendi.
Bileşik atama &=, |=, <<=, >>= destekleniyor.
Sabit katlama güncellendi. ^ (XOR) CARET çakışması nedeniyle atlandı.
#38 — LOAD_GLOBAL / STORE_GLOBAL opcode'ları eklendi (Seçenek A: gerçek global slot).
IRProgram.globalCount + globalNames; Interpreter.globalSlots_.
Global init ifadeleri main'in başında üretiliyor.
Tüm fonksiyonlar global alana erişebilir.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sorun: IR üretici && ve || için case içermiyordu, default koluna
düşüp LOAD_CONST 0 üretiyordu — değişken operandlarda her zaman
false dönüyordu (sabit katlama yolu zaten doğruydu).
Düzeltme: her iki operatör artık dallanma olarak üretiliyor:
a && b → JIF_FALSE (a false ise b'yi atla)
a || b → JIF_TRUE (a true ise b'yi atla)
JIF_TRUE yeni opcode olarak eklendi (instruction.hpp + interpreter.cpp).
do-while'ın mevcut "== 1 karşılaştırması" geçici çözümü bu opcode'dan
faydalanabilir — ayrı düzeltme (B4).
Test: tests/golden/logic/short_circuit.sqt — yan etkinin gerçekten
atlandığını çıktıyla kanıtlar (12/12 test yeşil).
ADR: docs/adr/ADR-008-kisa-devre-mantiksal-operatorler.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>