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.
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ă.
De ce există Cyr
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.
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.
cyrtUn 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.
@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ă.
Flux exclusiv prin switch, Option/Result,
tipuri explicite — gramatică ~85% identică cu Cyra. Competența și
sursa traversează granița managed/nativ.
Un limbaj, două dialecte
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
Cald și gestionat. Rulează pe o mașină.
pid / ref / port:erlang.* FFI · Cyra.* stdlib// dialectul nativ
Bare metal. Este codul mașină.
ptr<T>, @external(c, "...")bigint opționalcyrt runtime · Cyr.* stdlibAcoperire sisteme & OS
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.
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.
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.
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.
Vezi-l în acțiune
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ă.
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; }
}
Ce este deja fixat
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 implicit; aritmetica declanșează o capcană implicit.
wrapping, saturating și bigint
sunt opțiuni explicite.
nil este retras din tipurile non-Option. Null trăiește
doar în spatele ptr/any la zidul C.
Recursivitatea în poziție de coadă — inclusiv recursivitatea mutuală — rulează în stivă constantă. O garanție semantică la nivelul CIR, nu credință în LLVM.
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.
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.
Poziționare cinstită
Cyr nu este „Cyra 2.0” și nu diverge în sintaxă. Este un singur limbaj cu două backend-uri — nu două limbaje care concurează.
Cyr face parte din același proiect — aceleași unelte, aceeași comunitate — nu un produs rival cu identitate proprie.
pid, ref, port, spawn,
receive, send sunt eliminate. Orice lucru de tip actor
este o bibliotecă, nu o primitivă de limbaj.
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.
Filosofia de design
„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.