88 lines
2.8 KiB
Markdown
88 lines
2.8 KiB
Markdown
# 1. Trajectoire d'implémentation
|
|
|
|
## 1.1 V1 — V1 REQUIS — FIGÉ
|
|
|
|
La V1 constitue le premier environnement réellement utilisable de Saselang.
|
|
|
|
Objectifs :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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.
|
|
|
|
---
|