v0.2.12
This commit is contained in:
87
chapters/001-trajectoire-dimplementation.md
Normal file
87
chapters/001-trajectoire-dimplementation.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user