Statut actuel

Il s'agit de la page canonique publique sur l'état de la mise en œuvre pour seed. La spécification linguistique actuelle est seed/docs/lang-spec.md; ses chapitres de grammaire et de sémantique vivent sous seed/compiler/llvm. Un élément de la feuille de route n’est pas mis en œuvre simplement parce qu’il est proposé ; les portes terminées nécessitent leur preuve de fermeture nommée.

Compilateur

seed/compiler/llvm est le compilateur et lanceur de référentiel opérationnel. Les Gates 0-24 sont complets pour leurs portées enregistrées. Le pipeline vérifié est :

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

Importations d'origine et .sdi émission exécuter la même chaîne de sécurité obligatoire. La normale et ASan/UBSan les suites réussissent 1 496 vérifications du compilateur plus sept binaires unitaires à la base de référence actuelle. Gate-des preuves spécifiques sont sous seed/compiler/llvm/tests/GATE*_BASELINE.md.

Compilateur auto-hébergé

L'auto-hébergement complet est une piste active Linux x86-64 régie par roadmap-self-hosted.md. Le compilateur opérationnel LLVM reste l'oracle sémantique et ABI jusqu'au basculement SH20.

SH0 a gelé le Linux x86-64 Contrat d'amorçage, limite de dépendance et traçabilité. SH1 a fermé les bibliothèques de niveau compilateur et le substrat hôte. SH2 est en cours avec la mise en œuvre de tranches de jeton, lexer, AST, analyseur, formateur et commandes frontales minimales. Analyse sémantique, IR du compilateur, le LLVM pont, natif x86-64/ELF l'émission, l'amorçage natif à virgule fixe, le temps d'exécution, l'éditeur de liens, la provenance de la version et le basculement opérationnel restent des portes ultérieures. Non-Linux les ports sont explicitement différés jusqu'après le premier basculement.

Le Linux-l'allocateur natif utilise des classes de dalles précises de 16 octets à 8 Ko, un cache de dalles vides limité à l'échelle du processus et démappe les dalles vides en excès. box<t> est propriétaire d'un seul pointeur, tandis que ?box<t> utilise sa niche nulle auditée et occupe donc également un pointeur. Schéma-11 .sdi préserve la représentation nominale de niche nulle lors d’une compilation séparée. Gate 18 interfaces schéma-12 ajoutent des récepteurs mutables exclusifs, des modèles génériques, une provenance de retour emprunté et des contrats faillibles de limite d'application. Gate 19 interfaces schéma-13 ajoutent exactement target/profile/runtime identité et organismes publics en ligne vérifiés. Gate 20 interfaces schéma-14 préservent en outre les constantes publiques immuables scalaires, texte, tuple, structure et tableau imbriqué pour les consommateurs à source élidée ; le compilateur émet des globales typées en lecture seule et des projections vérifiées. Gate 21 a une primitive de capacité non initialisée auditée utilisée en interne par les tampons d'octets et I/O; io.input_stream fournit des lectures incrémentielles limitées, des copies de croissance géométrique uniquement les préfixes initialisés et une capacité de réserve directe I/O est couvert par sa ligne de base.

Les arborescences du compilateur remplacées ont été supprimées après le basculement. Leurs classifications comportementales pertinentes survivent dans les régressions compiler/llvm/COMPATIBILITY.md et migrées ; ils ne définissent pas la sémantique actuelle du compilateur.

Gate statut

Gates Statut Résultat
0-9 complet contrat de langue, pipeline du compilateur, sécurité, native/freestanding exécution, durcissement, basculement opérationnel
10 complet cohérent copy/move/borrow/clone/drop modèle
11 complet propagation générale de place/ownership/provenance à travers les agrégats, les génériques, les tâches, les valeurs de fonction et .sdi
12 complet Composants modulaires compiler/runtime et évolutivité de contrôle complet renforcée à 100 000
13 complet profils de libération sûrs et reproductibles C/Rust corpus de comparaison
14 complet Windows fermé sous le vin requis ; macOS fermé par l'exécution Intel native requise, avec arm64 maintenu comme hôte vérifié séparément
15 complet reproductible package/lock/cache, exploitable JSON diagnostics, LSP, doc/lint, builds incrémentielles exactes, contrôles de publication et résultats de tâches saisis
16 complet en sécurité numeric/range/text/buffer/collection ergonomie, mise en scène automatique de la bibliothèque centrale, réduction native prévisible et performances des applications représentatives
17 complet artefacts dynamiques réutilisables et transactionnels cohérents avec le profil user/system installation de binaires, de bibliothèques et .sdi interfaces
18 complet ergonomie des applications axée sur le langage, bibliothèques de base process/parse/I/O/math/buffer/slice/collection et migrations de référence sécurisées
19 complet artefacts cohérents avec le profil, corps en ligne inter-modules, partitions mutables disjointes vérifiées, magasins de champs directs et métadonnées d'alias à portée de preuve
20 complet constantes d'agrégation récursives immuables, données statiques adressables et interfaces à source schéma-14
21 complet Tampons propriétaires sensibles à la capacité, transfert de préfixe initialisé, croissance géométrique et streaming I/O
22 complet rappels qualifiés par effet plus tâche structurée neutre en termes d'exécution ABI et échec explicite d'allocation de tâche
23 complet court-circuit de gauche à droite &&/`
24 complet fermetures sans évasion, move/copy captures, rappels conservés encadrés, interfaces schéma-16 et liaisons mobiles

Encodage source et texte

Le chargeur valide chaque source comme étant canonique UTF-8 avant le lexing et rejette les NUL intégrés, les codages trop longs, les substituts, la troncature et les valeurs au-delà du scalaire maximum d'Unicode. Les littéraux de chaîne décodés sont également validés.

L'interpolation de chaîne f de phase 1 est implémentée pour str, emprunté string, bool, et des entiers intégrés. La construction produit de l’éphémère format_args sans allocation de tas ; utilisations de sortie directe file.write_*_format, tandis que .to_string()? matérialise explicitement une chaîne possédée. La phase 2 implémente la conversion de base entière ; délimité width/fill/alignment; exact fixe et déterministe scientific/general f32/f64 conversion sans libc ; et un formatage personnalisé statique direct grâce à des emprunts sans allocation display.display() -> str et debug.debug() -> str mises en œuvre.

Surface de langage implémentée

La grammaire propre n'implémente pas actuellement l'héritage enum, noms nominaux en majuscules, return, # commentaires, intégrés chan<t>/send/recv, apparition détachée, fermetures récursives, générateurs, macros, exceptions, async/await, ou syntaxe à vie.

Propriété et sécurité

Le modèle courant est le suivant : copier des scalaires, déplacer des ressources, emprunter des vues sans copie et cloner explicitement. Le nettoyage s'exécute exactement une fois sur les sorties structurées. Les opérations de panique, d'interruption et d'abandon ne déroulent pas et n'exécutent pas le lexical cleanup/destructors.

Ownership/place/provenance les faits se propagent à travers des alias, des blocs, des branches, des points fixes de boucles, fields/nested champs, index de tableau connus, tuples, ADT, option/result, granulats génériques, channels/tasks, fonction values/indirect appels, parameters/returns, et élidé à la source .sdi. Les déplacements à index dynamique des éléments de ressource restent rejetés.

linear t a une sémantique exactement une fois dans ces mêmes formes implémentées. Les vues @borrow receiver/input-derived conservent la provenance sans syntaxe à vie. Le code non sécurisé suppose des obligations brutes explicites mais ne désactive pas la propriété sécurisée des valeurs environnantes.

Les fermetures simples sont empilées et ne s'échappent pas. Capture la copie ou le déplacement dans le premier ordre d'utilisation lexicale, reste immuable et nettoie exactement une fois. box |...| alloue explicitement un appelable d'échappement et renvoie result<box fn(...) -> t, alloc_error>; Les callables en boîte sont à déplacement uniquement, non clonables, non envoyables et limités à une région lorsqu'une région est allouée. Les rappels de départ utilisent un pointeur unique code/environment descripteurs, tandis que les pointeurs de fonctions de plate-forme restent minces et n'acceptent que les fonctions nommées.

Texte, octets et régions

Concurrence

spawn est structuré : les groupes de tâches s'écoulent sur chaque bord, laissant leur propriétaire lexical avant le nettoyage. Capture une copie ou un déplacement selon ses capacités ; le partage est explicite et les valeurs transversales nécessitent send/sync le cas échéant.

compiler/llvm/libs/task est une bibliothèque générique ordinaire fournissant des canaux de partage de propriété, des jointures de tâches typées en une seule fois, des événements, des annulations, des groupes d'attente, des sémaphores, des barrières et des verrous. Le corps engendré directement ABI revient toujours void, donc postfix ? ne peut pas franchir directement la limite de la tâche. Gate 15 ajoute la surface de la bibliothèque typée task_result_new, task_result_complete_ok/error, et task_result_wait sur les mêmes points finaux linéaires et lexicalement joints. Les valeurs de fonction et les fermetures déduites peuvent utiliser @no_runtime_effects fn(...) pour exiger un résumé complet et vide des effets d'exécution ; les appels indirects inconnus et non qualifiés restent rejetés dans les profils restreints. Les rappels encadrés ne peuvent pas se croiser spawn parce qu'ils ne fournissent pas send.

Bibliothèques et liens

.sdi les interfaces préservent les types publics, génériques templates/common instances, effets, propriété, provenance, destructeur, clone, cible, build/runtime profil, dépendance et ABI identité. Le schéma 13 préserve les corps en ligne et les hachages de corps vérifiés ; le schéma 14 ajoute des charges utiles constantes immuables récursives publiques vérifiées ; le schéma 15 ajoute des contrats à effet callable ; le schéma 16 ajoute des signatures appelables encadrées, des corps de fermeture en ligne et une identité de représentation appelable. Un wrapper de bibliothèque ne publie pas de spécialisation de méthode orpheline dont le propriétaire de méthode générique provient d'un package importé ; les consommateurs dont la source a été supprimée rematérialisent cette instance à partir du modèle de dépendance. Hébergé seed les bibliothèques sont liées dynamiquement par défaut ; --static sélectionne statique seed dépendances. La publication d'artefacts est atomique et corrompue, avec un schéma obsolète, un profil, une cible ou ABI-Les interfaces incompatibles échouent à la fermeture.

Le lanceur incrémental build/run chemin étapes paquets sûrs pour tapé I/O, vues de processus, analyse d'entiers, mathématiques portables, tampons d'octets, tranches, boîtes, mise en réseau, sérialisation, tâches, collections génériques et wrappers de systèmes. Gate 18 ajoute le schéma-12 @mut vecteurs et coffre-fort benchmark/application les consommateurs ; Gate 19 ajoute le schéma-13 en ligne math/system feuilles et cloisons de tranches disjointes. Il s’agit de packages importés ordinaires, et non de langages intégrés cachés.

Résolution du registre, lockfiles/download cache, paquet add/update, élagage du cache, génération de documentation, LSP et incrémentiel object/interface le cache sont implémentés par le Gate 15 outillages. Gate 17 étapes pour les dépendances manifestes de base et ordinaires profile/target-qualified les magasins dynamiques par défaut, réutilisent les générations installées sans recompilation et implémentent les transactions transactionnelles user/system seed install plus soucieux des références seed uninstall. Explicite --static et --static=all restent des choix de liaison indépendants.

Créer des profils et des performances

--release utilise seed-safe-o2-v1; --release-small utilise seed-safe-oz-v1. Les limites, les discriminants, la provenance, la propriété et les gardes de nettoyage demeurent à moins que LLVM les prouve redondants. ThinLTO, PGO et la liaison statique sont des options indépendantes explicites. Il n’existe aucun profil opérationnel non contrôlé.

Gate 13 compare les charges de travail équivalentes numériques, d'analyse, de collecte, allocation/string, de tâches structurées, de mise en réseau, d'appel dynamique, de démarrage, RSS et de taille d'artefact à Clang C et Rust. Sur l'hôte de fermeture, seed reste dans la plage cible d'exécution ordinaire de 0 à 10 % pour le corpus appliqué. Il s'agit d'une preuve de charge de travail contrôlée, et non d'une affirmation universelle selon laquelle chaque programme seed bat C/Rust.

Gate La médiane de vérification complète de 100 000 s de l'hôte de fermeture 12 est de 0,41 s à 177 504 Kio, contre des budgets de 3,00 s et 196 608 Ko. Voir GATE12_BASELINE.md et GATE13_BASELINE.md pour hardware/toolchain métadonnées et interprétation.

Statut cible

La prise en charge des objets n'est pas la même chose que la prise en charge des exécutables hébergés. La matrice canonique est compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv.

Cible Niveau déclaré actuel
Linux x86-64 Bibliothèques compile/link/run, static/dynamic hébergées fermées, par défaut natif sans libc
Linux AArch64 hébergé compile/link/runtime avec politique de coureur ; Comportement static/dynamic couvert à son niveau déclaré
Linux RISC-V64 ligne hébergée uniquement sur les objets ; le coffre autoportant est séparé
Windows x86-64 déterministe PE/DLL, services d'exécution comprenant owned/shared octets et fichier read/seek, FFI à paramètres agrégés Microsoft x64, tâches structurées, mise en réseau, package ABI, le durcissement du chargeur et le déplacement SDL3 forfait de jeu pass sous le vin requis
macOS x86-64 Gate 14 fermé par l'exécutable Intel natif requis, dylib/static, runtime, pthread, mise en réseau, package ABI, et preuve du chargeur
macOS bras64 Natif piloté par SDK compile/link/run, runtime/ABI, planificateur, mise en réseau et preuves de packages sur Apple Silicon ; maintenu séparément de la rangée de fermeture Intel requise
Android bras64 LLVM/object/static/shared/executable cibles plus le runtime JNI, l'empaquetage Gradle, API 21/29/37 Exécution ARM64 AVD, API-37 scénarios de publication, des preuves de cycle de vie instrumentées par Garden Allocator et une analyse de portée API-35 tranches de périphérique physique ; MP4 lifecycle/services transmettre les trois AVD de fumée
Android x86-64 LLVM/object/static/shared/executable compile/link compatibilité; non emulator/device demande d'exécution
iOS bras64 LLVM/object/archive/device-link et les preuves de consommation C/Swift/XCFramework générées, ainsi que l'objet Seed Garden model/assets/Apple-audio complet et la construction croisée de bundles d'applications non signés ; L'exécution physique du jardin, la signature et la publication des preuves restent un travail de périphérique limité
iOS bras de simulation64 iOS 26.5 Simulateur ARM64 lifecycle/services, bytes/async, interface utilisateur adaptative phone/tablet, saisie, rotation, sémantique, accessibilité XCUITest, exécution du noyau MP4 partagé et Seed Garden context/persistence/continuous-frame/Apple-AudioQueue couverture du produit
wasm32-WASI ligne au niveau de l'objet avec les services hébergés absents maintenue explicite dans la matrice Gate 14
autoportant x86-64/AArch64/RISC-V64 preuve de démarrage sans libc sous QEMU aux niveaux déclarés Gate 7

Gate 14 requis Intel Runner, SDK, ABI, FFI, bibliothèque dynamique, compilation séparée, corruption, chargeur et régression sont satisfaits. macOS arm64 reste un hôte natif étiqueté indépendamment plutôt qu'un substitut à la ligne de fermeture Intel.

CLI et outillage

Le lanceur de référentiel fournit new, check, format, incrémentiel build, run, test, résolution du paquet, install/uninstall, doc, lint, LSP et publish --check, plus le transfert direct des indicateurs du compilateur et file.sd -o output. Registre à distance publication/signing n'est pas mis en œuvre ; la commande de publication existante effectue uniquement une validation locale.

Le compilateur direct formate la source, imprime semantic/IR des formulaires, emits/reads/hashes .sdi, émet LLVM/object/shared/static/binary artefacts, installations target/ABI- des bibliothèques qualifiées et exécute les cibles prises en charge. Son aide exécutable est la liste des drapeaux faisant autorité :

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

Documentation source de vérité

Sujet Pages
Spécification linguistique actuelle seed/docs/lang-spec.md
Grammaire seed/compiler/llvm/LANGUAGE_GRAMMAR.md
Sémantique seed/compiler/llvm/SEMANTIC_RULES.md
Utilisateur syntax/CLI Référence linguistique
Propriété Propriété
Intégrés de base Core Built-ins
Runtime/backend Primitives système
Gates seed/compiler/llvm/ROADMAP.md

Les documents historiques peuvent décrire llvm-v1, le prototype v2 ou des répertoires de stub d'assembly qui n'existent plus. Ils doivent être explicitement étiquetés et ne doivent pas être utilisés comme directives actuelles en langage clair.