seed Aperçu
seed est un langage système impératif, typé statiquement et orienté expression. Il cible une lisibilité simple de type Python lorsque cela est possible tout en conservant le contrôle C/Rust-class sur la disposition, l'exécution, la liaison et l'accès matériel de bas niveau.
Le langage n'a pas de GC, de syntaxe à vie, de déroulement des exceptions, d'exécution asynchrone cachée ou de libc obligatoire. Les coûts tels que l'allocation, le clonage profond, la conservation du nombre de références, le blocage, les appels système et le chargement dynamique sont explicites.
Identité actuelle
- nom de la langue :
seed - extension source :
.sd - encodage source : UTF-8
- texte : possédé
stringet empruntéstr, tous deux valables UTF-8 - identifiants : ASCII ; les noms de valeur utilisent une casse serpent inférieure, des types nominaux et les variantes utilisent UpperCamelCase
- constantes : casse du serpent supérieur ASCII
- compilateur : compilateur LLVM propre et opérationnel sous
compiler/llvm
Modèle de base
- copier des scalaires ;
- déplacer les ressources possédées ;
- emprunter des vues en lecture seule sans allocation ;
- cloner explicitement ;
- nettoyer les valeurs gérées en direct exactement une fois sur les sorties structurées ;
- utilisez
linear tpour les obligations ponctuelles ; - utiliser
unsafeuniquement autour des opérations brutes auditées ; - utiliser des ADT,
result/option, exhaustifmatch, et?pour les flux récupérables ; - utilisez les bibliothèques structurées
spawnet task/channel ordinaires au lieu de async/await.
Petit noyau et écosystème
Les fichiers, la mise en réseau, les processus, la sérialisation, le formatage, les collections et la synchronisation résident dans des bibliothèques compilées séparément. Les bibliothèques hébergées sont partagées dynamiquement par défaut ; la liaison statique est explicite. Les programmes autonomes, le noyau, les pilotes et les programmes de démarrage utilisent le même langage dans des profils d'exécution restreints.
Limites actuelles
Le compilateur propre implémente les f-strings de phase 1 et de phase 2 pour le texte, les booléens, les entiers, les flottants IEEE-754, les spécificateurs de format et les valeurs statiques. display/debug traits. Il n'implémente pas l'héritage type-ADT basés sur des noms nominaux en minuscules en forme de serpent, ret, elif, # commentaires, intégrés chan<t>/send/recv, une génération détachée, des macros ou un handle au niveau du langage renvoyé directement par spawn. La bibliothèque de tâches fournit des résultats structurés typés. Packages reproductibles, LSP, doc/lint, et les artefacts incrémentiels exacts sont implémentés par Gate 15 outillages.
Gate La portabilité 14 est fermée pour ses lignes enregistrées : Windows x86-64 passe sous le vin requis, et macOS x86-64 fermé par l'exécution Intel native requise. La matrice canonique est compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv, dont macOS la rangée arm64 reste cross-link-only; cette ligne de base indique qu'il ne doit pas être présenté comme exécuté jusqu'à ce qu'un coureur arm64 de confiance passe la suite. La prise en charge des objets n'est pas la même chose que la prise en charge des exécutables hébergés.