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: lettere minuscole ASCII, inclusi i nomi dei tipi
- 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 il boot 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à enum, nomi nominali in maiuscolo, return, # 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à è ancora in corso: Windows x86-64 ha richiesto prove di esecuzione di Wine; macOS x86-64 attende l'esecuzione nativa Intel e macOS arm64 rimane esplicitamente solo cross-link.