Stato attuale

Questa è la pagina canonica sullo stato dell'implementazione pubblica per seed. La specifica della lingua corrente è seed/docs/lang-spec.md; i suoi capitoli grammaticali e semantici si trovano sotto seed/compiler/llvm. Un elemento della tabella di marcia non viene implementato semplicemente perché proposto; i cancelli completati richiedono la prova di chiusura nominativa.

Compilatore

seed/compiler/llvm è il compilatore e lanciatore del repository operativo. Gates 0-24 sono completi per i loro ambiti registrati. La pipeline verificata è:

source → lexer/parser → semantic graph → typed HIR/CFG
       → ownership/provenance/effects/loans → cleanup planning/verification
       → MIR → target layout/ABI → verified low MIR → LLVM

Importazioni di origine e .sdi l'emissione esegue la stessa catena di sicurezza obbligatoria. Il normale e ASan/UBSan le suite superano 1.496 controlli del compilatore più sette binari di unità alla base attuale. Gate-prove specifiche sono sotto seed/compiler/llvm/tests/GATE*_BASELINE.md.

Compilatore self-hosted

Il self-hosting completo è un percorso attivo Linux x86-64 governato da roadmap-self-hosted.md. Il compilatore operativo LLVM rimane l'oracolo semantico e ABI fino al cutover SH20.

SH0 ha congelato il file Linux x86-64 contratto di bootstrap, limite di dipendenza e tracciabilità. SH1 ha chiuso le librerie di livello compilatore e il substrato host. SH2 è in corso con l'implementazione di token, lexer, AST, parser, formattatore e sezioni minime di comandi frontend. Analisi semantica, IR del compilatore, the LLVM ponte, nativo x86-64/ELF l'emissione, il bootstrap nativo a virgola fissa, il runtime, il linker, la provenienza del rilascio e il passaggio operativo rimangono le porte successive. Non-Linux le porte vengono esplicitamente rinviate fino a dopo il primo passaggio.

Il Linux-l'allocatore nativo utilizza precise classi di lastre da 16 byte a 8 KiB, una cache di lastre vuote limitata a livello di processo e rimuove la mappatura di lastre vuote in eccesso. box<t> è un proprietario a puntatore singolo, mentre ?box<t> utilizza la sua nicchia nulla controllata e quindi occupa anche un puntatore. Schema-11 .sdi preserva la rappresentazione nominale di nicchia nulla attraverso la compilazione separata. Gate 18 interfacce schema-12 aggiungono ricevitori mutabili esclusivi, modelli generici, provenienza di ritorno preso in prestito e contratti fallibili sui limiti dell'applicazione. Gate 19 interfacce schema-13 aggiungono esatto target/profile/runtime identità e organismi pubblici in linea verificati. Gate 20 interfacce schema-14 preservano inoltre costanti scalari, testo, tuple, struct e array annidati immutabili pubblici per i consumatori elisi nel codice sorgente; il compilatore emette valori globali di sola lettura digitati e proiezioni controllate. Gate 21 ha una primitiva di capacità non inizializzata controllata utilizzata internamente dai buffer di byte e I/O; io.input_stream fornisce letture incrementali limitate, copie di crescita geometrica solo prefissi inizializzati e capacità di riserva diretta I/O è coperto dalla sua linea di base.

Gli alberi del compilatore sostituiti sono stati rimossi dopo il cutover. Le loro classificazioni comportamentali rilevanti sopravvivono in compiler/llvm/COMPATIBILITY.md e nelle regressioni migranti; non definiscono la semantica corrente del compilatore.

Gate stato

Gates Stato Risultato
0-9 completo contratto linguistico, pipeline del compilatore, sicurezza, native/freestanding esecuzione, rafforzamento, cutover operativo
10 completo modello copy/move/borrow/clone/drop coerente
11 completo propagazione generale place/ownership/provenance tra aggregati, generici, attività, valori di funzione e .sdi
12 completo componenti modulari compiler/runtime e scalabilità forzata con controllo completo di 100.000
13 completo profili di rilascio sicuro e corpus di confronto C/Rust riproducibile
14 completo Windows chiuso sotto richiesto Vino; macOS chiuso dall'esecuzione Intel nativa richiesta, con arm64 mantenuto come host verificato separatamente
15 completo riproducibile package/lock/cache, perseguibile JSON diagnostica, LSP, doc/lint, build incrementali esatte, controlli di pubblicazione e risultati delle attività digitate
16 completo sicuro numeric/range/text/buffer/collection ergonomia, staging automatico della libreria principale, riduzione nativa prevedibile e prestazioni applicative rappresentative
17 completo artefatti dinamici e transazionali riutilizzabili coerenti con il profilo user/system installazione di binari, librerie e .sdi interfacce
18 completo ergonomia delle applicazioni basate sul linguaggio, librerie process/parse/I/O/math/buffer/slice/collection di base e migrazioni sicure dei benchmark
19 completo artefatti coerenti con il profilo, corpi in linea tra moduli, partizioni modificabili disgiunte controllate, archivi di campi diretti e metadati di alias con ambito di prova
20 completo costanti aggregate immutabili ricorsive, dati statici indirizzabili e interfacce schema-14 elise dal codice sorgente
21 completo buffer di proprietà in grado di riconoscere la capacità, trasferimento del prefisso inizializzato, crescita geometrica e streaming I/O
22 completo callback qualificati per l'effetto più attività strutturata neutrale in termini di runtime ABI e errore di allocazione esplicita dell'attività
23 completo cortocircuito da sinistra a destra &&/`
24 completo chiusure senza fuga, move/copy acquisizioni, callback mantenuti in scatola, interfacce schema-16 e associazioni mobili

Codifica sorgente e testo

Il caricatore convalida ogni sorgente come canonica UTF-8 prima della lexing e rifiuta i NUL incorporati, le codifiche troppo lunghe, i surrogati, il troncamento e i valori oltre lo scalare massimo di Unicode. Vengono convalidati anche i valori letterali stringa decodificati.

È implementata l'interpolazione f-string di fase 1 str, preso in prestito string, boole numeri interi incorporati. La costruzione produce effimero format_args senza allocazione heap; usi di produzione diretta file.write_*_format, mentre .to_string()? materializza esplicitamente una stringa di proprietà. La fase 2 implementa la conversione della base intera; delimitato width/fill/alignment; esatto fisso e deterministico scientific/general f32/f64 conversione senza libc; e la formattazione personalizzata statica diretta tramite prestiti senza allocazione display.display() -> str e debug.debug() -> str implementazioni.

Superficie linguistica implementata

La grammatica pulita attualmente non implementa l'eredità enum, nomi nominali in maiuscolo, return, # commenti, integrati chan<t>/send/recv, spawn distaccato, chiusure ricorsive, generatori, macro, eccezioni, async/await o sintassi della durata.

Proprietà e sicurezza

Il modello comune è: copiare scalari, spostare risorse, prendere in prestito visualizzazioni a copia zero e clonare esplicitamente. La pulizia viene eseguita esattamente una volta sulle uscite strutturate. Il panico, la trappola e l'interruzione non si rilassano né si svolgono nel lessico cleanup/destructors.

Ownership/place/provenance i fatti si propagano attraverso alias, blocchi, rami, punti fissi del loop, fields/nested campi, indici di array noti, tuple, ADT, option/result, aggregati generici, channels/tasks, funzione values/indirect chiamate, parameters/returns e eliso alla fonte .sdi. Gli spostamenti dell'indice dinamico degli elementi di risorsa rimangono rifiutati.

linear t ha una semantica esattamente una volta nelle stesse forme implementate. Le viste @borrow receiver/input-derived mantengono la provenienza senza sintassi di durata. Il codice non sicuro presuppone obblighi grezzi espliciti ma non disabilita la proprietà sicura dei valori circostanti.

Le chiusure semplici sono stack-backed e senza escape. Cattura la copia o lo sposta nel primo ordine di uso lessicale, rimane immutabile e viene pulito esattamente una volta. box |...| alloca esplicitamente un richiamabile di escape e restituisce result<box fn(...) -> t, alloc_error>; i callable boxed sono di solo spostamento, non clonabili, non inviabili e confinati nella regione quando viene allocata la regione. I callback seed utilizzano descrittori code/environment a puntatore singolo, mentre i puntatori alle funzioni della piattaforma rimangono sottili e accettano solo funzioni con nome.

Testo, byte e regioni

Concorrenza

spawn è strutturato: i gruppi di attività si esauriscono su ogni bordo lasciando il loro proprietario lessicale prima della pulizia. Cattura la copia o lo spostamento in base alle capacità; la condivisione è esplicita e i valori tra attività richiedono send/sync a seconda dei casi.

compiler/llvm/libs/task è una libreria generica ordinaria che fornisce canali di suddivisione della proprietà, unioni di attività one-shot digitate, eventi, cancellazioni, gruppi di attesa, semafori, barriere e blocchi. Il corpo generato direttamente ABI ritorna ancora void, quindi suffisso ? non può attraversare direttamente il confine dell'attività. Gate 15 aggiunge la superficie della libreria tipizzata task_result_new, task_result_complete_ok/error, e task_result_wait sugli stessi punti finali lineari e lessicalmente uniti. Possono essere utilizzati valori di funzione e chiusure dedotte @no_runtime_effects fn(...) richiedere un riepilogo completo e vuoto degli effetti di runtime; le chiamate indirette sconosciute e non qualificate rimangono rifiutate nei profili limitati. Le richiamate boxed non possono incrociarsi spawn perché non forniscono send.

Biblioteche e collegamenti

.sdi le interfacce preservano i tipi pubblici, generici templates/common istanze, effetti, proprietà, provenienza, distruttore, clone, bersaglio, build/runtime profilo, dipendenza e ABI identità. Lo schema 13 preserva i corpi in linea e gli hash dei corpi verificati; lo schema 14 aggiunge payload costanti immutabili ricorsivi pubblici verificati; lo schema 15 aggiunge contratti ad effetto richiamabili; lo schema 16 aggiunge firme richiamabili in un riquadro, corpi di chiusura in linea e identità di rappresentazione richiamabile. Un wrapper di libreria non pubblica una specializzazione del metodo orfano il cui proprietario del metodo generico proviene da un pacchetto importato; i consumatori elisi alla fonte rimaterializzano quell'istanza dal modello della dipendenza. Ospitato seed le librerie si collegano dinamicamente per impostazione predefinita; --static seleziona statico seed dipendenze. La pubblicazione degli artefatti è atomica e corrotta, con schema obsoleto, profilo, destinazione o ABI-Le interfacce non corrispondenti non vengono chiuse.

Il launcher incrementale build/run il percorso mette in scena pacchetti sicuri per i tipizzati I/O, visualizzazioni di processi, analisi di numeri interi, matematica portabile, buffer di byte, sezioni, box, rete, serializzazione, attività, raccolte generiche e wrapper di sistema. Gate 18 aggiunge lo schema-12 @mut vettori e sicuri benchmark/application consumatori; Gate 19 aggiunge lo schema-13 in linea math/system foglie e partizioni di fette disgiunte. Questi rimangono normali pacchetti importati, non linguaggi integrati nascosti.

Risoluzione del registro, lockfiles/download cache, pacchetto add/update, potatura della cache, generazione di documentazione, LSP e incrementale object/interface cache sono implementati da Gate 15 utensili. Gate 17 fasi del nucleo nudo e delle dipendenze manifeste ordinarie profile/target-qualified archivia dinamicamente per impostazione predefinita, riutilizza le generazioni installate senza ricompilazione e implementa la transazione user/system seed install più consapevole dei riferimenti seed uninstall. Esplicito --static e --static=all rimangono scelte di collegamento indipendenti.

Costruisci profili e prestazioni

--release utilizza seed-safe-o2-v1; --release-small utilizza seed-safe-oz-v1. Limiti, discriminanti, provenienza, proprietà e protezioni per la pulizia rimangono a meno che LLVM non li dimostri ridondanti. ThinLTO, PGO e collegamento statico sono opzioni esplicite indipendenti. Non esiste alcun profilo operativo non controllato.

Gate 13 confronta carichi di lavoro equivalenti numerici, di analisi, di raccolta, allocation/string, di attività strutturate, di rete, di chiamate dinamiche, di avvio, RSS e di dimensioni di artefatti con Clang C e Rust. Sull'host di chiusura, seed rimane entro l'obiettivo di runtime ordinario dello 0-10% per il corpus imposto. Questa è una prova del carico di lavoro controllato, non un'affermazione universale secondo cui ogni programma seed batte C/Rust.

Gate La mediana del controllo completo da 100.000 host di chiusura di 12 è di 0,41 s a 177.504 KiB contro budget di 3,00 s e 196.608 KiB. Vedi GATE12_BASELINE.md e GATE13_BASELINE.md per hardware/toolchain metadati e interpretazione.

Stato dell'obiettivo

Il supporto degli oggetti non è uguale al supporto ospitato degli eseguibili. La matrice canonica è compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv.

Obiettivo Livello attuale dichiarato
Linux x86-64 ospitato chiuso compile/link/run, static/dynamic librerie, impostazione predefinita nativa priva di libc
Linux AArch64 ospitato compile/link/runtime con policy runner; Comportamento static/dynamic coperto al livello dichiarato
Linux RISC-V64 riga ospitata di soli oggetti; il bagagliaio indipendente è separato
Windows x86-64 deterministico PE/DLL, servizi runtime inclusi owned/shared byte e file read/seek, FFI con parametri aggregati Microsoft x64, attività strutturate, rete, pacchetto ABI, rafforzamento del caricatore e riposizionabile SDL3 passaggio del pacchetto di giochi con Wine richiesto
macOS x86-64 Gate 14 chiuso dall'eseguibile Intel nativo richiesto, dylib/static, runtime, pthread, rete, pacchetto ABI e prove del caricatore
macOS braccio64 Nativo basato su SDK compile/link/run, runtime/ABI, scheduler, networking e prove di pacchetto su Apple Silicon; mantenuto separatamente dalla riga di chiusura Intel richiesta
Android braccio64 LLVM/object/static/shared/executable obiettivi più runtime JNI, packaging Gradle, API 21/29/37 Esecuzione ARM64 AVD, API-37 scenari di rilascio, prove del ciclo di vita strumentate dall'allocatore Garden e un ambito API-35 slice del dispositivo fisico; MP4 lifecycle/services trasmettere tutti e tre gli AVD del fumo
Android x86-64 LLVM/object/static/shared/executable compile/link compatibilità; no emulator/device richiesta di esecuzione
iOS braccio64 LLVM/object/archive/device-link e la prova del consumatore C/Swift/XCFramework generata, oltre all'oggetto Seed Garden model/assets/Apple-audio completo e alla creazione incrociata del pacchetto di applicazioni non firmato; L'esecuzione fisica del Garden, la firma e le prove di rilascio rimangono nell'ambito del lavoro del dispositivo
iOS braccio simulatore64 iOS Simulatore 26.5 ARM64 lifecycle/services, bytes/async, Interfaccia utente adattiva phone/tablet, input, rotazione, semantica, accessibilità XCUITest, esecuzione core MP4 condivisa e Seed Garden context/persistence/continuous-frame/Apple-AudioQueue copertura del prodotto
wasm32-WASI riga a livello di oggetto con servizi ospitati assenti mantenuta esplicita nella matrice Gate 14
libera installazione x86-64/AArch64/RISC-V64 prova di avvio senza libc sotto QEMU a Gate 7 livelli dichiarati

Gate 14 richiede Intel Runner, SDK, ABI, FFI, libreria dinamica, compilazione separata, corruzione, caricatore e regressione vengono superati. macOS arm64 rimane un host nativo etichettato in modo indipendente piuttosto che un sostituto della riga di chiusura Intel.

CLI e utensili

Il launcher del repository fornisce new, check, format, incrementale build, run, test, risoluzione del pacchetto, install/uninstall, doc, lint, LSP e publish --check, oltre all'inoltro diretto del flag del compilatore e file.sd -o output. Registro remoto publication/signing non è implementato; il comando di pubblicazione esistente esegue solo la convalida locale.

Il compilatore diretto formatta l'origine, stampa semantic/IR forme, emits/reads/hashes .sdi, emette LLVM/object/shared/static/binary artefatti, installazioni target/ABI- librerie qualificate ed esegue target supportati. Il suo aiuto eseguibile è l'elenco dei flag autorevoli:

seed/compiler/llvm/build/seed --help

Documentazione fonte di verità

Argomento Pagina
Specifica della lingua attuale seed/docs/lang-spec.md
Grammatica seed/compiler/llvm/LANGUAGE_GRAMMAR.md
Semantica seed/compiler/llvm/SEMANTIC_RULES.md
Utente syntax/CLI Riferimento lingua
Proprietà Proprietà
Integrazioni principali Core integrati
Runtime/backend Primitive di sistema
Gates seed/compiler/llvm/ROADMAP.md

I documenti storici possono descrivere llvm-v1, il prototipo v2 o directory di stub di assembly che non esistono più. Devono essere etichettati esplicitamente e non devono essere utilizzati come guida corrente in un linguaggio pulito.