{"name":"Zerdali","url":"https://traip.org/projects/zerdali","tagline":"Özellikle yapay zeka modelleri için yaratılmış bir programlama dili: bir fonksiyonun ne yaptığı ve neye dokunduğu imzasında yazılı.","overview":"**Yapay zeka modelleri için yaratılan, yapay zeka modelleri tarafından daha kolay kullanılabilen, bir fonksiyonun ne yaptığını, hangi veriye dokunduğunu imzasında taşıyan, derleyicisi bunu denetleyen bir programlama dili.**\n\n```zerdali\nfn exists(name: Str@personal) -> Bool@public !{fs.read}\n```\n\nBu tek satırda çoğu dilin söyleyemediği iki şey var:\n\n- `!{fs.read}` — bu fonksiyonun yapabileceği efektlerin **tam listesi**.\n  Bildirmediğin bir efekti yaparsan derlenmiyor.\n- `@personal` → `@public` — verinin nereye gidebileceği, ve bunun daralabildiği\n  tek nokta: `declassify`, ve **yazılı bir gerekçe** istiyor.\n\n## Neden var\n\nEfekt sistemi de bilgi akışı da yirmi yıldır biliniyor, ve her biri bir yerlerde\nuygulanmış durumda — ama hiçbir zaman *aynı imzada*. Koka, Eff, Frank ve Unison\nefekti tipe koyuyor; bilgi akışı yok. Jif ve FlowCaml damgayı tipe koyuyor; efekt\nsistemi yok. OCaml 5'te efekt mekanizması var ama tipin dışında. Haskell'de tek\nbir `IO` hem dosya okumayı hem süreç başlatmayı kapsıyor — *bir şey oluyor* diyor,\n*ne olduğunu* değil.\n\nYani bugün ya bir fonksiyonun diske uzandığını bilebiliyorsun, ya bir değerin\nkişisel veri olduğunu. İkisini birden tek imzadan değil.\n\nZerdali bu boşluk için var. İki soru aslında tek soru: *bu kod neye uzanabilir, ve\niçinden dışarı ne çıkabilir?*\n\n## Bunun getirdikleri\n\n- **`zerdali audit`** — koşmadan önce okunabilen bir yetki raporu: her fonksiyonun\n  efektleri, her damganın eriştiği yer, her daraltma gerekçesiyle.\n- **`zerdali test`** — testler **hiçbir yetki verilmeden** koşuyor. Gerçek diske\n  uzanan test düşer; dosyaya ihtiyacı olan test onu dilin içinde *karşılar*. Sahte\n  (mock) çerçevesi yok, çünkü gerekmiyor.\n- **Sonlanma** ya yapısal olarak kanıtlanıyor ya da imzada `!{div.loop}` olarak\n  yazılıyor. Burada \"saf\", \"yan etkisiz **ve** sonlanır\" demek.\n\n## Kimin için\n\nKişisel veriye dokunan, ne yaptığı denetlenebilir olması gereken programlar yazan\ngeliştiriciler için — ve dili kısa bir belgeden öğrenip doğru yazması beklenen\nLLM'ler ve ajanlar için. İkinci hedef iddia olarak bırakılmadı, ölçüldü: üç\nsatıcıdan on üç model, 2.7k simgelik tek bir dil kartıyla.","howItWorks":"## Ne kurulur, ne çalışır\n\nDağıtılan şey **derlenmiş bir ikili**: `zdc`. Statik bir ELF — sanal makine yok,\nyorumlayıcı yok, libc bile yok. Kurup çalıştırmak için makinede hiçbir şeyin\nbulunması gerekmiyor, ve derlediği programlar da aynı şekilde tek başına\nkoşuyor. Çalışma zamanı diye bir katman yok.\n\nDerleyici kendi kodunu doğrudan üretiyor: kendi x86-64 kodlayıcısı ve kendi ELF\nyazıcısı var. Arada assembler yok, linker yok.\n\n## Doğruluk nasıl ölçülüyor\n\nBir dilin tek uygulaması varsa, o uygulamanın davranışı dilin *tanımı* olur —\nhatası da tanımın parçası olur, çünkü onu yanlışlayacak bir şey yoktur. Bu\nprojede iki ölçüt var, ve ikisi de iddia değil, her değişiklikte koşan birer\nölçüm:\n\n**Bağımsız ikinci bir uygulama.** Aynı programda aynı belirteçleri, aynı\nimzaları, aynı tanıları, aynı ara kodu ve **aynı baytları** üretmek zorundalar;\nayrıldıkları her nokta bir hatadır. İkisi de on altı komutun hepsini cevaplıyor\n(`check`, `run`, `build`, `test`, `audit`, `doc`, `fmt`, `fix`, `holes`,\n`debug`, `explain`, `spec`, `search`, `serve`, `lsp`, `pkg`) ve bir kural\ndeğişikliği ikisine birden iniyor. Bu ölçüt uygulama ayrı bir dilde yazıldı,\nçünkü kâhin denetlediği şeyden bağımsız olmalı: aynı dilde yazılsaydı ikisi aynı\nyanlış varsayımı paylaşabilir ve karşılaştırma hiçbir şey görmezdi.\n\n**Sabit nokta.** `zdc` kendi kaynağını derlediğinde ortaya kendisiyle bayt bayt\naynı bir ikili çıkıyor. Bu bir özellik değil, bir *kanıt*: kod üretiminin,\ndenetleyicinin ve bağlayıcının bir milyon dokuz yüz bin baytın tamamında aynı\nkararı iki kez verdiği anlamına geliyor. Tek bir bayt kaysa ölçüm düşer.\n\n## Denetleyicinin yaptığı\n\n- **Efekt satırı** — çıkarımla değil, imzayla. Bir efekt ya imzada bildirilir ya\n  da bir tutucuda (`handle`) karşılanır. Karşılandığında imzadan **düşüyor**.\n- **Bilgi akışı** — damgalar tipin parçası. `name`den türeyen her şey kişisel\n  kalıyor, *karşılaştırma bile* (hangi dalın seçildiği de bir bilgi).\n- **Sonlanma** — dilde döngü yok; her yineleme özyinelemeyle. Bir çağrı döngüsüne\n  katılan her fonksiyon `!{div.loop}` bildirmek zorunda, özyineleme **yapısal\n  olarak** küçülmedikçe. Kanıt bilinçli olarak basit tutuldu: `n - 1` insan\n  gözüyle küçülüyor ama denetleyici onu aramıyor — kanıtın *okunabilir* kalması,\n  kanıtlanan kümenin büyümesinden değerli sayıldı.\n- **Sahiplik** — `own Buf` kopya yerine yerinde yazma yapıyor. İmzada yazılı,\n  çıkarılmıyor: çıkarım iki uygulamada da aynı cevabı vermek zorunda kalırdı,\n  yani dilin tanımının parçası olurdu.\n\n## Arka uç\n\nYerel x86-64 kod üretimi, kendi ELF yazıcısı ve kendi çalışma zamanı. `buf_dot`\ngibi çekirdekler SSE2 ile vektörleşmiş. Dış bağımlılık yok, derleme sonrası\nçalışma zamanı yok.\n\n## LLM'ler için\n\n`LLM.md` — yaklaşık 2.7k simge, ve dilin *tamamı*. Ölçümde modele bundan başka\nbir şey verilmiyor; gönderdiği program derlenip koşuluyor, yeşil değilse geri\ndönen tek şey **derleyicinin kendi tanısı** oluyor. Her hata çiğnediği kuralı\ntaşıyor ve yapabildiğinde yazılacak satırı söylüyor.","limitations":"Dürüst durum: bu dil **kendine karşı** çok iyi sınanmış, başka hiç kimse\ntarafından sınanmamış.\n\n- **Bağımsız inceleme yok.** Kendi geliştirmesi dışında kullanıcısı da yok.\n- **Differential'ın söylediği şey sınırlı.** İki uygulamanın *aynı* olduğunu\n  söylüyor, *doğru* olduğunu değil. Bu projede bulmaya değer her hata, korpusta\n  onu koşturan bir program olmadığı için görünmezdi — ve o programı yazana kadar\n  görünmez kaldı.\n- **Yığın taşması bir tanı değil, bir çökme.** Sonsuz özyinelemeye giren bir\n  program 8 MB'lık yığını tüketip segfault veriyor. Dil bunu *bildirmeyi* zaten\n  şart koşuyor (`!{div.loop}`), ama bildirilmiş bir ıraksama koşulduğunda\n  söylediği şey yalnızca \"sinyal 11\" oluyor.\n- **Platform:** yalnız Linux x86-64. Başka mimari, başka işletim sistemi yok.\n- **Bellek tavanı:** derleyici kendini derlerken yaklaşık 8 GB istiyor.\n- **Ekosistem yok.** Paket yöneticisi (`zdc pkg`) var ama paket kaydı yok;\n  standart kütüphane küçük.\n- **Dil küçük tutuldu.** Adsız fonksiyon yok, tek yönlü sonlanma kanıtı, tek\n  sahipli tampon dönüşü gibi bilinçli sınırlar var. Bunlar eksik değil karar;\n  hangisinin hangisi olduğu `V1.md`de yazılı.\n\nKataloğa yazılan ölçümler ekip beyanıdır; buradakiler de öyle — ama hepsi depoda\nduran ve tekrar koşturulabilen betiklerden geliyor.","field":"Diğer","stage":"Beta","demoKind":"Açık kaynak","links":{"demo":"https://github.com/kissoid/zerdali/releases/tag/v1.0.0","video":null,"repository":"https://github.com/kissoid/zerdali","documentation":"https://github.com/kissoid/zerdali#readme","paper":null},"image":"https://traip.org/media/cmtg8nk2q0004v1ozlywrrl5n","license":"MIT","organization":null,"city":null,"tags":["programlama-dili","efekt-sistemi","bilgi-akisi","tip-sistemi","derleyici","self-hosting","llm-icin-tasarim","differential-testing"],"team":[{"name":"Mehmet Adem Şengül","role":"Tasarım ve geliştirme","profile":null}],"documents":[{"title":"README","description":"Dilin tanıtımı: neden var, on örnek, ve ölçüm.","url":"https://github.com/kissoid/zerdali#readme"},{"title":"LLM.md — dil kartı","description":"~2.7k simge, ve dilin tamamı. Ölçümde modellere verilen dosyanın kendisi.","url":"https://github.com/kissoid/zerdali/blob/master/LLM.md"},{"title":"documentation.ai.md","description":"Makine-önce başvuru: her komut, her bayrak, dürüst bir durum bloğu.","url":"https://github.com/kissoid/zerdali/blob/master/docs/i18n/documentation.ai.md"},{"title":"SPEC.md","description":"Kuralların normatif hâli.","url":"https://github.com/kissoid/zerdali/blob/master/SPEC.md"},{"title":"GUIDE.md","description":"Öğretici.","url":"https://github.com/kissoid/zerdali/blob/master/GUIDE.md"},{"title":"V1.md","description":"v1 ne demek, ve sınırlar nerede — hangisi karar hangisi eksik.","url":"https://github.com/kissoid/zerdali/blob/master/V1.md"},{"title":"Model ölçümü","description":"Üç satıcı, on üç model, model başına 20 koşu. Yöntem ve görev kırılımı.","url":"https://github.com/kissoid/zerdali/blob/master/docs/model-benchmark.md"},{"title":"Örnekler","description":"On dosya, her biri tek bir şey öğretiyor; çıktıları testle doğrulanıyor.","url":"https://github.com/kissoid/zerdali/tree/master/examples"},{"title":"CHANGELOG.md","description":"Sürüm günlüğü.","url":"https://github.com/kissoid/zerdali/blob/master/CHANGELOG.md"},{"title":"v1.0.0 — indirilebilir paketler","description":"Debian/Ubuntu için .deb, Linux x86-64 tarball, ve Windows/macOS/Linux için ölçüt uygulama. Altı süit yeşil olmadan hiçbiri paketlenmedi.","url":"https://github.com/kissoid/zerdali/releases/tag/v1.0.0"}],"releases":[{"version":"1.0.0","date":"2026-08-30","changes":"İlk sürüm. İmzada denetlenen efekt satırları ve bilgi-akışı damgaları; efekt tutucuları; veri tipleri ve tüketici `match`; kanıtlanan ya da bildirilen sonlanma; `Buf`/`own`; modüller ve içeriğe göre kilitlenen bağımlılıklar; on altı komutluk araç zinciri (LSP ve JSON-RPC dahil); libc'siz yerel x86-64 arka uç. İki uygulama aynı programda aynı baytları üretiyor ve `zdc` kendini bayt bayt yeniden üretiyor. Artefaktlar: .deb, Linux x86-64 tarball, ve yalnız ölçüt uygulamayı taşıyan bir zip."}],"metrics":[{"label":"İlk turda doğru yazan model","value":"13 modelin 10'u 20/20 yeşil","context":"en iyi ikisi 20/20 ilk turda; ölçüm 2026-08-30, model başına 4 görev × 5 koşu"},{"label":"Modellerin en çok çarptığı kural","value":"no-implicit-declassification (46)","context":"efekt satırı yalnız 13 — bilgi akışı öğrenilmesi gereken tek gerçek yeni şey"},{"label":"Dil kartı","value":"~2.7k simge","context":"dilin tamamı; modele bundan başka bir şey verilmiyor"},{"label":"Derleyici ikilisi","value":"~1,9 MB statik ELF","context":"çalışma zamanı yok, libc yok, dinamik bağ yok"},{"label":"Kendini yeniden üretme","value":"bayt bayt aynı","context":"zdc kendi kaynağını derlediğinde onu üreten ikilinin aynısı çıkıyor"},{"label":"Zerdali'de yazılmış test","value":"73","context":"tests.zd 42 + assert_tests.zd 31; ikisi de iki koşucuda birebir aynı"},{"label":"Komut","value":"16","context":"check, run, build, test, audit, doc, fmt, fix, holes, debug, explain, spec, search, serve, lsp, pkg"}],"metricsNote":"Ölçümler projeyi geliştiren ekibin kendi bildirdiği değerlerdir; TRAIP tarafından bağımsız olarak doğrulanmamıştır.","publishedAt":"2026-08-30T20:36:42.564Z","updatedAt":"2026-08-31T16:21:47.403Z"}