Przejdź do głównej zawartości

Roadmap integracji Wave + Whale v2

Etapy ogólne

pre-alpha → pre-beta → alpha → beta → rc → release

Etap Pre-Beta

Cel: ukończenie frontend'u języka Wave + implementacja pełnej funkcjonalności z użyciem backendu LLVM

Główne cechy

  • Użycie tylko LLVM (brak Whale)

  • Brak nowych elementów składniowych, tylko implementacja istniejącej specyfikacji

  • Stabilizacja struktury związanej z komunikatami o błędach, sprawdzaniem typów, zakresem zmiennych itp.

Zakres implementacji

  • Deklaracja zmiennych, wyjście, operacje

  • Definicja i wywoływanie funkcji

  • if / else if / else

  • while / break / continue

  • Formatowane wyjście, przypisanie typów

  • Projektowanie wskaźników (ptr<i32>)

  • Projektowanie tablic (array<i32, N>)

  • Sprawdzanie typów i strukturalny AST

Technologie używane

  • Rust (cały kompilator Wave)

  • LLVM (generowanie IR, wykonanie AOT)

  • inkwell / llvm-sys


Etap Alpha

Cel: rozpoczęcie integracji Whale, równoczesne używanie LLVM / rozpoczęcie implementacji backendu Whale

Główne cechy

  • LLVM jest domyślnym backendem

  • Whale jest opcjonalnym backendem

  • Wykonanie kodu Wave z możliwością wyboru backendu za pomocą opcji --backend

wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm

Zadania związane z Whale

  • Projektowanie i definiowanie struktury IR dla Whale (Instruction, Value, Block itp.)

  • Implementacja generatora IR dla Whale

  • Generator kodu Whale (Assembly lub Binary)

  • Implementacja typów dostępnych tylko dla Whale (i1024, zaawansowane wskaźniki itp.)

Kamienie milowe

  • Wyświetlenie "Hello World" za pomocą Whale

  • Deklaracja/ przypisanie zmiennych w Whale

  • Implementacja narzędzi do debugowania IR Whale

  • Obsługa typów wskaźników w Whale

  • Przekształcenie Wave → Whale IR


Etap Beta

Cel: pełne przejście na Whale, usunięcie LLVM. Optymalizacja kombinacji Whale + Wave

Główne cechy

  • Użycie tylko Whale

  • Całkowite usunięcie LLVM (zależności i moduły)

  • Skupienie na optymalizacji kodu

  • Szybkie i efektywne przejście od IR do wykonania

Zakres optymalizacji

  • Projektowanie passów optymalizacji IR dla Whale

  • Poprawa szybkości generowania kodu Whale

  • Pełne wsparcie wszystkich elementów składniowych Wave w Whale

Testy

  • Testy jednostkowe i pełne zestawy testów

  • Testy zgodności z WSON i standardową biblioteką

  • Sprawdzenie kompilacji Whale w różnych systemach operacyjnych


Etap RC (Release Candidate)

Cel: rozpoczęcie bootstrapowania Wave — całkowite usunięcie kodu w Rust

Główne cechy

  • Przepisanie kompilatora Wave z użyciem Wave

  • Użycie Whale do wykonywania kodu Wave

  • Whale przechodzi do etapu self-hosting

Zakres prac

  • Przepisanie generatora IR Wave na Whale

  • Usunięcie Rust i zastąpienie go kodem Wave

  • Pisanie bibliotek std i core w Wave

  • Pierwszy kompilator Wave oparty na Wave po udanym bootstrapie


Etap Release (v0.0.1)

Cel: oficjalne wydanie / pełna ekosystema oparta na Whale

Składniki

  • Wave (język i standardowa biblioteka)

  • Whale (kompilator toolchain)

  • Vex (menedżer pakietów)

  • WSON (format danych)

Główne cechy

  • Kompilator Wave w pełni działający (po udanym bootstrapie)

  • Optymalizacja Whale zakończona

  • Stabilizacja systemu budowania i wdrażania Vex

  • Parer i serializacja WSON

  • Możliwość kompilacji na różne systemy operacyjne (vex build --windows itp.)


Strategia rozwoju

StrategiaOpis
Strategia pociągu+torówRównoczesne rozwijanie Whale i backendu Wave
Strategia rozgałęzienia backenduWybór między LLVM i Whale za pomocą opcji --backend, ważne w alpha
Plan odwrócenia strukturyPo etapie RC Wave będzie kompilować siebie za pomocą Whale