Geneză · cartă fondatoare · 2026

Scris de LLM-uri. Compilat pentru orice metal.

Cyr este dialectul nativ al lui Cyra — compilat AOT prin LLVM, de la servere până la un MCU gol. Fără VM, fără GC. Limbajul pe care îl scriu mașinile, acum pe metal.

Cod nativ, de la aplicația ta până la PID 1.

Pre-v0

Această pagină împărtășește primele idei, filosofia de geneză și așteptările pentru Cyr. Numele, relația trunchi/ramură, numele runtime-ului și ale CLI-ului, precum și un set de decizii fundamentale sunt fixate — dar Cyr încă nu este lansat. Ceea ce citești aici este o cartă, nu o versiune publicată.

Acolo unde BEAM este un zid.

Cyra excelează la ceea ce BEAM excelează: sisteme concurente, tolerante la erori, cu reîncărcare la cald. Dar clase întregi de muncă trăiesc sub acea linie. Astăzi un dezvoltator care lovește zidul trebuie să coboare la C, Rust sau Zig și să părăsească limbajul cu totul. Cyr este ieșirea de urgență care te ține în familie.

LLVM, AOT

Cyr compilează în avans în cod-obiect nativ prin LLVM — fără VM, fără JIT. Un binar autonom care rulează pe o platformă Tier-1 fără nimic instalat.

Runtime mic: cyrt

Un runtime mic legat în fiecare binar — alocator, handler de panică, intrinseci. Țintit la câteva sute de kiloocteți, nu megaocteți. Plauzibil pentru embedded și WASM.

.C

FFI C23

@external(c, "...") este singura suprafață nativă de interoperare. Apelează C și fii apelat de C cu semnături complete, lățimi explicite și nullabilitate explicită — fără glue scris de mână.

Aceeași sintaxă, același suflet

Flux exclusiv prin switch, Option/Result, tipuri explicite — gramatică ~85% identică cu Cyra. Competența și sursa traversează granița managed/nativ.

Arborescența

O gramatică, un nucleu de semantică, două backend-uri — așa cum C are o implementare hosted și una freestanding. Trunchiul este gramatica comună; cele două ramuri diverg doar acolo unde modelul de runtime le obligă.

// dialectul BEAM

Cyra

Cald și gestionat. Rulează pe o mașină.

  • Țintă Erlang VM — dinamic, reîncărcare la cald
  • Actoripid / ref / port
  • Numere întregi cu precizie arbitrară
  • :erlang.* FFI · Cyra.* stdlib

// dialectul nativ

Cyr

Bare metal. Este codul mașină.

  • Țintă LLVMAOT, binar static
  • FFI C23ptr<T>, @external(c, "...")
  • i64 implicit + bigint opțional
  • cyrt runtime · Cyr.* stdlib

De la aplicația ta până la PID 1.

Cyr țintește explicit dezvoltarea de sisteme și OS de nivel jos — până la și inclusiv un init/PID 1, demoni, drivere și cod freestanding bare-metal. Cu cât profilul este mai dur, cu atât limbajul se dă mai mult la o parte. Acoperirea lui Cyr este organizată în trei profiluri de execuție.

1

hosted

aplicație · demon · CLI

Un program nativ normal pe un OS complet. Întregul stack este disponibil, iar cyrt folosește heap-ul OS-ului și firele OS-ului.

cyrt complet + Cyr.* stdlib complet + libc
2

freestanding-hosted

init / PID 1 · binar static minimal

Un kernel este prezent, dar userland-ul este minimal. PID 1 nu ar trebui să tragă după el un libc complet — un strat subțire de syscall-uri directe vorbește cu kernel-ul.

cyrt + Cyr.Core + libc subțire / syscall-uri
3

bare-metal

kernel · bootloader · firmware · ISR

Niciun OS deloc. Aduci tu alocatorul; nu există fire, niciun libc, nicio derulare. Asamblare inline, volatile/MMIO, atomici, puncte de intrare personalizate.

doar cyrt-core · fără libc, fără alocator OS

Nativ, explicit, neambiguu

Un fragment de driver cu FFI C23, layout împachetat, Option în loc de null și recursivitate de coadă care rulează în stivă constantă — totul în sintaxă Cyra familiară.

driver.cyr
module Sensor.Driver {
    use Cyr.Result;

    // C23 FFI — the single native interop surface
    @external(c, "read_register")
    fn read_register(addr: ptr<u32>) -> u32;

    @repr(packed)
    struct Reading { id: u16; value: i32; }

    // switch-only flow; Option<T> for absence, never null
    pub fn decode(raw: u32) -> Option<Reading> {
        switch raw {
            0 => None;
            _ => Some(Reading { id: 1, value: raw as i32 });
        }
    }

    // guaranteed constant stack — TCO holds at the CIR layer
    fn sum(xs: list<i64>, acc: i64) -> i64 {
        switch xs {
            []        => acc;
            h :: rest => sum(rest, acc + h);   // i64 traps on overflow
        }
    }

    @entry
    pub fn main() -> i32 { 0; }
}

Decizii fundamentale

Cyr pornește de la premisele pe care Cyra le-a stabilit deja, plus un set de uși cu sens unic ratificate de consiliul de filosofie la geneză. Acestea sunt așteptările la care Cyr se angajează.

i64

Fără overflow silențios

i64 implicit; aritmetica declanșează o capcană implicit. wrapping, saturating și bigint sunt opțiuni explicite.

?:

Absență doar prin Option

nil este retras din tipurile non-Option. Null trăiește doar în spatele ptr/any la zidul C.

TCO garantat

Recursivitatea în poziție de coadă — inclusiv recursivitatea mutuală — rulează în stivă constantă. O garanție semantică la nivelul CIR, nu credință în LLVM.

&

ARC, fără borrow checker

Memoria este ARC + arenă opțională + weak. Siguranța este mutată în valorile implicite ale compilatorului, nu în adnotări de lifetime scrise de autor — alegerea corectă pentru un corpus scris de LLM.

!!

unsafe zgomotos, minimal

Dereferențierea brută a ptr<T> și down-cast-urile any trăiesc doar în interiorul unsafe — greppabile și auditabile.

::

Un stdlib Cyr.* separat

Cyr își rescrie biblioteca standard nativ. Portabilitatea trăiește în gramatică, nu în numele bibliotecilor — o linie use este întotdeauna cinstită cu privire la dialectul ei.

Ce nu este Cyr

Nu o rescriere sau un fork

Cyr nu este „Cyra 2.0” și nu diverge în sintaxă. Este un singur limbaj cu două backend-uri — nu două limbaje care concurează.

Nu un brand separat

Cyr face parte din același proiect — aceleași unelte, aceeași comunitate — nu un produs rival cu identitate proprie.

Nu modelul actor

pid, ref, port, spawn, receive, send sunt eliminate. Orice lucru de tip actor este o bibliotecă, nu o primitivă de limbaj.

Nu o pledoarie generală pentru sisteme

Cyr este pentru oamenii care iubesc deja Cyra și acum vor să scrie stratul de sub aplicațiile lor — nu o pledoarie către publicul general al programării de sisteme.

Decis deliberat, o singură dată

„Continuitatea sursei și a competenței”

Maxima pragmatică a lui Peirce este testul lui Cyr: ce diferență concretă face Cyr pe care „Cyra plus folosește pur și simplu C” nu o face? Răspunsul — continuitatea sursei și a competenței peste granița managed/nativ — guvernează fiecare alegere de design.

„Gramatică comună, bibliotecă cinstită”

Dialectele împart ~85% din sintaxa lor — adevăratul activ transferabil. Ele nu împart în mod deliberat numele bibliotecilor: coerența aparține sintaxei și CLI-ului; cinstea aparține spațiului de nume.

„Douăzeci și unu de filosofi, o singură cartă”

Cele Patru Cauze ale lui Aristotel încadrează efortul; Popper numește ce ar falsifica succesul; antinomiile lui Kant țin consiliul cinstit. Optsprezece domenii de design deschise au fost citite de toți cei douăzeci și unu, iar deciziile fundamentale ratificate — consiliul funcționează ca organon, deschis pe GitLab.