seed Panoramica
seed è un linguaggio di sistema tipizzato staticamente, imperativo e orientato alle espressioni. Mira a una leggibilità semplice simile a Python, ove possibile, mantenendo il controllo C/Rust-class su layout, esecuzione, collegamento e accesso hardware di basso livello.
Il linguaggio non ha GC, sintassi di durata, rimozione delle eccezioni, runtime asincrono nascosto o libc obbligatorio. I costi come l'allocazione, la clonazione profonda, la conservazione del conteggio dei riferimenti, il blocco, le chiamate di sistema e il caricamento dinamico sono espliciti.
Identità attuale
- nome della lingua:
seed - estensione sorgente:
.sd - codifica sorgente: UTF-8
- testo: di proprietà
stringe preso in prestitostr, entrambi validi UTF-8 - identificatori: ASCII; i nomi dei valori utilizzano maiuscole minuscole, tipi nominali e le varianti utilizzano UpperCamelCase
- costanti: ASCII maiuscolo serpente
- compilatore: compilatore operativo pulito LLVM sotto
compiler/llvm
Modello fondamentale
- copiare scalari;
- spostare le risorse possedute;
- prendere in prestito visualizzazioni di sola lettura senza allocazione;
- clonare esplicitamente;
- pulire i valori gestiti in tempo reale esattamente una volta sulle uscite strutturate;
- utilizzare
linear tper obblighi esattamente una volta; - utilizzare
unsafesolo per operazioni grezze sottoposte a audit; - utilizzare gli ADT,
result/opzione, esaustivomatch, e?per portata recuperabile; - utilizzare librerie strutturate
spawne ordinarie task/channel invece di async/await.
Piccolo nucleo ed ecosistema
File, reti, processi, serializzazione, formattazione, raccolte e sincronizzazione risiedono in librerie compilate separatamente. Le librerie ospitate sono condivise dinamicamente per impostazione predefinita; il collegamento statico è esplicito. I programmi indipendenti, il kernel, il driver e i programmi di avvio utilizzano la stessa lingua con profili di runtime limitati.
Limiti attuali
Il compilatore pulito implementa stringhe f di fase 1 e fase 2 per testo, bool, numeri interi, numeri in virgola mobile IEEE-754, specificatori di formato e statici display/debug tratti. Non implementa l'eredità typeADT basati su ADT, nomi nominali del caso serpente inferiore, ret, elif, # commenti, integrati chan<t>/send/recv, spawn distaccato, macro o un handle a livello di lingua restituito direttamente da spawn. La libreria delle attività fornisce risultati strutturati tipizzati. Pacchetti riproducibili, LSP, doc/lint e gli artefatti incrementali esatti vengono implementati da Gate 15 utensili.
Gate 14 la portabilità è chiusa per le sue righe registrate: Windows x86-64 passa sotto Wine richiesto, e macOS x86-64 chiuso dall'esecuzione Intel nativa richiesta. La matrice canonica è compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv, di cui macOS rimane la riga arm64 cross-link-only; quella linea di base afferma che non deve essere presentata come eseguita finché un corridore arm64 fidato non supera la suite. Il supporto degli oggetti non è uguale al supporto ospitato degli eseguibili.