2.8 KiB
1. Trajectoire d'implémentation
1.1 V1 — V1 REQUIS — FIGÉ
La V1 constitue le premier environnement réellement utilisable de Saselang.
Objectifs :
frontend complet
lexer
parser
AST
analyse sémantique
HIR
Sase IR
interpréteur
a backend LLVM
Core V1
SDK initial
manifests et workspaces
gestion des dépendances
outils initiaux
Le compilateur V1 sera écrit dans un langage existant. Le choix entre Rust, Java ou une combinaison avec des générateurs tels que Flex/Bison ou équivalents reste un choix d'implémentation, pas une propriété du langage Saselang.
LLVM est le premier backend compilé de V1.
La conception de Saselang ne doit cependant pas faire de LLVM une dépendance sémantique du frontend.
1.2 Couverture LLVM — V1 REQUIS — FIGÉ EN PRINCIPE
Le backend natif V1 doit rester suffisamment générique pour exploiter les architectures, formats objet et capacités que LLVM peut représenter.
Cela ne signifie pas que toute cible connue de LLVM est automatiquement une cible officiellement supportée de bout en bout par Saselang V1 : une cible complète peut également nécessiter un ABI, un linker, un sysroot, un runtime et des bibliothèques de plateforme compatibles.
Une cible LLVM non validée peut donc être :
représentable par le backend
mais non officiellement supportée par la toolchain Saselang
1.3 V2 — SELF-HOSTING
La V2 reste également une génération interne. Elle a pour objectif principal la réécriture/self-hosting du compilateur, de l'interpréteur et des outils en Saselang. Des corrections architecturales incompatibles avec V1 restent acceptables si elles sont nécessaires et documentées.
La V2 a pour objectif principal de réécrire progressivement en Saselang les composants réalisés en V1 :
compiler frontend
semantic analysis
Sase IR
interpreter
tooling
package/build tooling
Core/SDK lorsque pertinent
La V2 est d'abord une étape de validation du langage par lui-même, pas une excuse pour redéfinir arbitrairement la sémantique V1.
1.4 V3+ — FUTUR V3+
La première distribution générale du compilateur et de l'écosystème Saselang est envisagée à partir de V3 ou d'une génération ultérieure. C'est à partir de cette baseline publique que la compatibilité source, binaire et de tooling devra être protégée beaucoup plus strictement.
À partir de V3+, les efforts pourront se concentrer sur les autres environnements et backends :
browser runtime / extension
browser chunks/bundling
WebAssembly
JVM
JavaScript
TypeScript
Android packaging
iOS packaging
backends/ABI supplémentaires
outillage avancé
cibles spécialisées
Les décisions browser de cette Bible sont donc des orientations de compatibilité, pas la spécification finale du browser runtime.