Feuille de route de développement intégré Wave + Whale v2
Toutes les étapes
pré-alpha → pré-bêta → alpha → bêta → rc → release
Étape pré-bêta
Objectif : Accomplissement du frontend du langage Wave + implémentation de toutes les fonctionnalités à l'aide du backend LLVM
Caractéristiques principales
- 
Utilisation de LLVM uniquement (sans Whale)
 - 
Pas d'ajouts grammaticaux, implémentation uniquement des spécifications existantes
 - 
Stabilisation de la structure centrée sur le frontend comme les messages d'erreur, la vérification des types, l'étendue des variables, etc.
 
Portée de l'implémentation
- 
Déclaration de variables, sortie, opérations
 - 
Définition et appel de fonctions
 - 
si / sinon si / sinon
 - 
tant que / interrompre / continuer
 - 
Sortie formatée, spécification de type
 - 
Conception de pointeur (de type
ptr<T>) - 
Conception de tableau (
array<T, N>) - 
Vérification de type et AST structurel
 
Technologies utilisées
- 
Rust (entièrement pour le compilateur Wave)
 - 
LLVM (génération IR, exécution AOT)
 - 
inkwell / llvm-sys
 
Étape Alpha
Objectif : Début de l’introduction de Wahle, utilisation en parallèle de LLVM / Début de l’implémentation du backend basé sur Whale
Caractéristiques principales
- 
LLVM est le backend par défaut
 - 
Whale est un backend optionnel
 - 
Possibilité de bifurquer avec l'option
--backendlors de l'exécution du code Wave 
wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm
Travaux liés à Whale
- 
Conception et définition de la structure IR de Whale (Instruction, Valeur, Bloc, etc.)
 - 
Implémentation du générateur IR pour Whale
 - 
Générateur de code Whale (assembleur ou binaire)
 - 
Implémentation de types possibles uniquement avec Whale (
i1024, pointeurs avancés, etc.) 
Point de contrôle
- 
Affichage de Hello World avec Whale
 - 
Déclaration/assignation de variables dans Whale
 - 
Implémentation d'un outil de débogage IR pour Whale
 - 
Traitement des types de pointeurs dans Whale
 - 
Progression de la conversion de Wave en Whale IR
 
Étape Bêta
Objectif : Transition complète vers Whale, suppression de LLVM. Optimisation de la combinaison Whale + Wave
Caractéristiques principales
- 
Utilisation de Whale uniquement
 - 
Suppression complète de LLVM (dépendances et modules)
 - 
Axé sur l'optimisation du code
 - 
Rapide et efficace de l'IR à l'exécution
 
Portée de l'optimisation
- 
Conception du passage d'optimisation IR de Whale
 - 
Amélioration de la vitesse de génération de code Whale
 - 
Toutes les syntaxes de Wave sont entièrement prises en charge par Whale
 
Test
- 
Tests unitaires + suite de tests complète
 - 
Test de compatibilité WSON avec la bibliothèque standard
 - 
Vérification de la compilation de Whale multiplateforme
 
Étape RC (Release Candidate)
Objectif : Commencer le bootstrap de Wave — Suppression complète du code Rust
Caractéristiques principales
- 
Commencement de la réécriture du compilateur Wave avec Wave
 - 
Exécution du code Wave basé sur Whale
 - 
Whale entre dans la phase de self-hosting
 
Portée du travail
- 
Réécriture du générateur IR Wave basé sur Whale
 - 
Suppression de Rust + Remplacement par du code Wave
 - 
Écriture des bibliothèques std et core en Wave
 - 
Naissance du premier compilateur natif Wave en cas de bootstrap réussi
 
Étape de sortie (v0.0.1)
Objectif : Lancement officiel / Fourniture d'un écosystème linguistique indépendant entièrement basé sur Whale
Composants
- 
Wave (langage et bibliothèque standard)
 - 
Whale (chaîne d'outils du compilateur)
 - 
Vex (gestionnaire de paquets)
 - 
WSON (format de données)
 
Caractéristiques
- 
Compilateur entièrement Wave-only (bootstrap réussi)
 - 
Optimisation de Whale terminée
 - 
Implémentation du système de construction et de déploiement Vex
 - 
Inclusion du parseur WSON + sérialisation
 - 
Compilation multiplateforme possible (
vex build --windows, etc.) 
Stratégie méta de développement
| Stratégie | Description | 
|---|---|
| Stratégie Train+Rail | Développement parallèle de Whale tout en constituant simultanément le backend de Wave | 
| Stratégie de bifurcation du backend | Sélection de LLVM/Whale avec l'option --backend, structure importante en alpha | 
| Plan d'inversion de structure | À partir de rc, le code Wave compile Wave lui-même via Whale |