MELP Ne Yapabilir?

Dil tasarımından binary güvenliğine — temel özellikler.

🌍 1. Çok Dilli, Çok Sentakslı Yazım

MELP'te program mantığı dilden ve sözdizimi stilinden bağımsızdır. Aynı derleyici Türkçe, İngilizce, Rusça veya Japonca kaynak dosyasını okuyabilir. Yeni bir dil eklemek için tek yapılması gereken bir keywords.json dosyası yazmaktır — derleyici kaynak koduna dokunulmaz.

Bunun yanı sıra MELP üç farklı sözdizimi stilini destekler:

Doğal MELP (varsayılan)
function add(a; b)
    return a + b
end function
C-Stili
function add(a; b) {
    return a + b
}
Python-Stili
function add(a; b):
    return a + b

Kanonik kaynak: /ORTAK/dil/<dil_kodu>/keywords.json

İngilizce
function greet(name)
    print("Hello, " + name)
end function

function main()
    greet("World")
end function
Türkçe
fonksiyon selamla(isim)
    yaz("Merhaba, " + isim)
fonksiyon sonu

fonksiyon giriş()
    selamla("Dünya")
fonksiyon sonu

Tasarım İlkesi: Dil değişikliği algoritmanın kendisini değiştirmez. Normalizer, kaynak dildeki anahtar kelimeleri tek biçimli iç temsile (pmlp) çevirir ve derleyicinin geri kalanı yalnızca bu iç temsili görür.

🛡️ 2. Memory Safe — GC'siz, Annotation'sız Beta

MELP, varsayılan olarak global durum oluşturmaya izin vermez. Bu tek kural sayesinde bellek sızıntısı derleyici düzeyinde imkânsız hale gelir — ne çalışma zamanı Garbage Collector ne de Rust'ın borrow checker'ı gibi manuel annotation sistemi gerekir.

Dil Hız Memory Safety Ekstra Yük
C / C++ ❌ Manuel
Java / Python ❌ GC Garbage Collector
Rust Borrow checker annotation
MELP Hiçbiri — stateless-first

Stateless-First: Varsayılan tercih saf ve kısa ömürlü işlemlerdir. Global durum gerekiyorsa MELP sizi engellemez. Kullanıcı, bedeline katlanarak isterse MELP'i stateful olarak da kullanabilir.*

* Stateful kullanımın bedeli beklenenin ötesinde çok maliyetli değildir. MELP'in scope mekanizması bu durumun üstesinden gelecek şekilde planlanmıştır.

🔐 3. Yapısal Binary Güvenliği — EOK v1.0+

Binary'e sahip olmak, mantığa sahip olmak anlamına gelmez.

Klasik derleyiciler kaynak kodunun sembolik yapısını (fonksiyon adları, kontrol akışı, sabit değerler) binary içinde korur. IDA Pro, Ghidra veya benzeri bir araç bu binary'i açtığında programın mantığı büyük ölçüde okunabilir.

MELP farklı çalışır. EOK (Encryptic OK) mimarisinde binary, gerçek semboller yerine yalnızca indeks numaraları içerir. Bu indekslerin anlam tablosuna — "anahtar"a — sahip olmadan binary çalıştırılamaz, tersine mühendislik yapılamaz.

❌ Klasik binary:
Kaynak → [fonksiyon adları + veri + kontrol akışı] → IDA Pro ile okunabilir
✅ MELP binary (EOK):
Kaynak → [sadece indeks numaraları] → anahtarsız = anlamsız

Saldırı Senaryoları

Saldırı Sonuç
Binary ele geçirildi, anahtar yok Yürütülemez
Memory dump (çalışırken) Bellekte yalnızca indeksler — veri okunaksız
IDA Pro / Ghidra analizi Kontrol akışı ve semboller okunaksız
Binary kopyalanıp farklı ortamda çalıştırıldı Anahtar eşleşmediği için başlatılamaz

Hedef Kitle: Savunma sanayi, bankacılık ve kritik altyapı yazılımları için tasarlanmıştır. Fikri mülkiyet koruması iş modelinin merkezinde olan kuruluşlar için EOK doğrudan bir değer önerisidir.

Durum: EOK Phase 3 aktif — FBO tablo kompozisyonu çalışıyor, tip ve yapı metadatası indeksleniyor. Tam binary indeks şifreleme (Phase 4) MELP v1.0 ile kararlı sürüme geçecektir.

EFBO — Kuantum Dirençli Koruma Araştırma

EOK'un üzerine inşa edilen EFBO (Encrypted FBO), post-quantum şifreleme yöntemleriyle FBO dispatch tablosunu korumayı hedefler. Klasik şifreleme algoritmalarının kuantum bilgisayarlar karşısında kırılgan olacağı varsayımına karşı proaktif bir mimari yanıttır.

Durum: EFBO aktif araştırma aşamasındadır. Beta sonrası yol haritasında yer almaktadır — mevcut EOK koruması bundan bağımsız olarak çalışır.

⚡ 4. LLVM Native Binary

MELP sözdizimsel bir deney değildir. Kaynak kod LLVM IR'e derlenir, ardından llc ve platform linker'ı aracılığıyla gerçek bir ELF binary üretilir. GC yok, interpreter yok, overhead yok.

Terminal
# LLVM IR görüntüle
bin/run_melp ornek.mlp --ir

# Native binary üret
melp_compiler ornek.mlp -o a.out

# Çalıştır — lli veya interpreter gerektirmez
./a.out

Üretilen binary, lli veya herhangi bir çalışma zamanı olmadan doğrudan işletim sistemi tarafından çalıştırılır. C/C++ ile karşılaştırılabilir performans hedefleri için LLVM optimizer geçişleri uygulanabilir.

🔄 5. Spawn + Channel

MELP, eşzamanlılık için dil düzeyinde spawn ve channel desteği sunar. Paylaşılan durum yerine mesaj geçişi modeli benimsenmiştir — bu yaklaşım stateless-first felsefesiyle tutarlıdır.

İngilizce — Spawn
spawn
    print("Paralel görev çalışıyor")
end spawn
Türkçe — Spawn
başlat
    yaz("Paralel görev çalışıyor")
başlat sonu

📦 7. OK Katmanı — STO · SAO · FBO Beta

MELP derleme hattının optimizasyon omurgası üç katmandan oluşur: STO (Smart Type Optimization) tip çıkarımını, SAO (Semantic-Aware Optimization) erişim örüntülerini analiz eder; FBO (Frontend-Backend Optimization) ise semantiği 32-bit indekse indirger. Modüller arası transfer yalnızca 4 byte indekstir; kütüphane seyahat etmez.

Geleneksel yaklaşım:
modül A → modül B: [fonksiyon kodu + bağımlılıklar + veri]
MELP FBO:
modül A → modül B: 0x002A → "math.sqrt stratejisini kullan"

32-bit indeks alanı: 4.294.967.296 giriş kapasitesi. EOK güvenlik katmanının ve ROK çalışma zamanı optimizasyonunun matematiksel temelidir. Erişim O(1) L1 cache hit; performans maliyeti neredeyse sıfıra yakındır.

🔁 8. State — FBO'nun Çalışma Zamanı Uzantısı Beta

Geleneksel dillerde state geçişi maliyetlidir: veri kopyalanır, bağımlılıklar taşınır, bellek sızar. MELP'te state FBO tablosunun bir indeksidir — modüller arası geçiş 4 byte, erişim O(1).

MELP state'i yasaklamaz, onu görünür kılar. state.init() ve state.close() ile state nerede başlar nerede biter açık olur.

MELP — State
import state

numeric function sayac()
    state.init()
    numeric n = state.get("n"; 0)
    state.set("n"; n + 1)
    state.close()
    return n
end function

Planlanan: Stage 7. Mevcut sürümde FBO altyapısı aktif; state modülü beta sürümüyle birlikte devreye girer.

🔢 9. Tip Sistemi — 3 Tip, Sıfır Tip Derdi

MELP'te yalnızca üç değişken tipi vardır:

TipAlt YapıKapsam
numericBigDecimal1 bit’ten binlerce byte’a kadar her sayı
stringBigStringHerhangi bir uzunlukta metin
booleandoğru / yanlış
numeric?NullableDeğer atanmamış olabilir; null / none alabilir
tuplei64 dizisi (heap)(a, b, c) literal; (x, y) = boyut destructuring

Klasik dillerde programcı “bu değişkene int8 mi, int64 mi, floatdouble mı ayırmalıyım?” derdine düşer. MELP’te bu dert yoktur. Kullanıcının tek yaptığı ihtiyacını olan tipi tanımlamaktır:

MELP — Tip Tanımı
numeric kucuk   = 1              -- STO: 1 bit yeterli, öyle depolar
numeric buyuk   = 9999999999999  -- STO: gereken byte’ı otomatik seçer
numeric pi      = 3,14159265358979323846
numeric miktar  = 1.000.000,45   -- Noktalı binlik ayraç
string  mesaj   = "Merhaba"
boolean aktif   = true

-- Nullable tip (v1.2)
numeric? yas    = null           -- atanmamış olabilir
string?  ad     = "Ali"

-- Safe navigation operatörü
string sonuc = kullanici?.isim

-- Type cast
numeric n = deger as numeric

-- Tuple
tuple boyut = (1920; 1080)
(numeric w; numeric h) = boyut

STO (Smart Type Optimization) derleme zamanında değişkenin gerçek kullanımını analiz eder ve bellekte minimum yer kaplayacak şekilde temsil eder. İster 1 bit’lik bir bayrak, ister binlerce byte’lık bir sayı olsun — STO bunu kullanıcı adına otomatik çözer. IEEE 754 kısıtı yoktur; finansal ve akademik hesaplamalar RAM sınırına kadar %100 doğrulukla çalışır.

🐛 10. Yerleşik debug Anahtar Kelimesi

Kaynak kodda hata noktası işaretlemek için ayrı kütüphane ya da araç gerekmez. debug dil düzeyinde bir anahtar kelimedir. Üretim derlemesinde (--release) sıfır maliyet — kod ve sembol üretilmez.

MELP — Debug
function hesapla(x)
    debug  -- burada dur, değerleri göster
    return x * 2
end function

--release ile derlendiginde tüm debug ifadeleri derleme zamanında kaldırılır. Üretim binary'inde sıfır iz.

💀 11. Ölü Modül Felsefesi

Stateless-first mimarinin doğal sonucu: modüller varsayılan olarak ölüdür. Hiçbir modül kendi başına kaynak tahsis etmez ya da bellekte yer kaplamaz. Bir modülü kullanan modül diriltir ve iş bitince öldürür — atıl kaynak sıfır, çöp toplayıcıya gerek yoktur.

Sonuç: Memory leak derleyici düzeyinde imkânsızdır — GC veya borrow checker olmadan. Bellekte tutulan tek şey 4-byte FBO indeksidir; nesnenin kendisi seyahat etmez.

📌 12. Adlandırılmış Kapsamlar — scope

scope ad ile iç içe bloktan temiz koşullu çıkış sağlanır. Derin döngülerde bayrak değişkeni ya da exception gerekmez.

MELP — Scope
scope islem
    for i = 0 to 100
        for j = 0 to 100
            if bul(i; j) then
                exit scope islem  -- iç içe döngüden temiz çıkış
            end if
        end for
    end for
end scope

🧱 13. Struct + Fonksiyon — Class Yok

MELP'te veri struct ile, davranış bağımsız fonksiyonlarla tanımlanır. OOP hiyerarşisi olmadan aynı modelleme gücü, çok daha az karmaşıklık.

MELP — Struct + Enum + Match
struct Nokta
    numeric x
    numeric y
end struct

enum Renk
    Kirmizi
    Yesil
    Mavi
end enum

match renk
case Kirmizi
    print("kırmızı")
end case
end match

🗂️ 14. Modüler Mimari

Her modül tek sorumluluğa sahiptir; merkezi orkestratör yasaktır. Derleme sırası otomatik dependency graph'tan belirlenir — döngüsel bağımlılık derleme zamanında hata olarak raporlanır.

Tasarım İlkesi: Modüller arasında doğrudan state paylaşımı yoktur. İletişim FBO indeksleri üzerinden gerçekleşir; bu mimari EOK güvenliğini ve stateless-first felsefesini pekiştirir.

🌐 15. Platform Bağımsız Beta

Bir kere yaz, her yerde çalıştır. LLVM altyapısı sayesinde aynı kaynak kod Linux, macOS ve Windows için native binary üretir. Çapraz derleme için ayrı araç gerekmez.

Mevcut durum: Linux x86-64 tam desteklenmektedir. macOS ve Windows desteği beta sürümüyle birlikte gelecektir.

🎯 16. Öz-Derleme Hedefi

v1.0 milstonunda MELP derleyicisi kendini MELP ile derleyecektir. Bu hedefe "self-hosting" denir ve bir dilin olgunluk göstergesidir. Stage 0 (C++ → C++) ve Stage 1 (MELP → C++) aşamalarından sonra Stage 2 (MELP → MELP) tamamlandığında bu hedef gerçekleşmiş olacak.

Aşama Kaynak Hedef Durum
Stage 0 C++ C++ ✅ Tamamlandı
Stage 1 .mlp C++ (bootstrap) Geliştirme
Stage 2 .mlp .mlp (self-hosting) Planlı

Deneyin

Tüm bu özellikleri tarayıcıdan, kurulum yapmadan test edebilirsiniz.