Skip to main content

Wave + Whale інтэграваны распрацоўкі дарожная карта v2

Агульныя этапы

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

Pre-Beta этап

Мэта: завяршэнне фронтэнда Wave мовы + рэалізацыя ўсіх функцый з выкарыстаннем LLVM бэкэнда

Асноўныя асаблівасці

  • Выкарыстоўваецца толькі LLVM (без Whale)

  • Не дадаюцца новыя сінтаксічныя элементы, рэалізуецца толькі існуючая спецыфікацыя

  • Стабілізацыя структуры, звязанай з паведамленнямі аб памылках, праверкай тыпаў, вобласцю дзеяння зменных і інш.

Абсяг рэалізацыі

  • Аб'ява зменных, вывад, аперацыі

  • Аб'яўленне і выклік функцый

  • if / else if / else

  • while / break / continue

  • Фарматаваны вывад, прызначэнне тыпаў

  • Прадстаўленне паказальнікаў (ptr<T>)

  • Прадстаўленне масіваў (array<T, N>)

  • Праверка тыпаў і структурны AST

Выкарыстоўваныя тэхналогіі

  • Rust (усе кампаненты кампіятара Wave)

  • LLVM (стварэнне IR, выкананне AOT)

  • inkwell / llvm-sys


Alpha этап

Мэта: пачатак укаранення Whale, паралельнае выкарыстанне з LLVM / пачатак рэалізацыі Whale бэкэнда

Асноўныя асаблівасці

  • LLVM з'яўляецца стандартным бэкэндам

  • Whale з'яўляецца варыятыўным бэкэндам

  • Выкананне кода Wave з магчымасцю выбару бэкэнда праз параметр --backend

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

Задачы, звязаныя з Whale

  • Праектаванне і вызначэнне структуры IR для Whale (Instruction, Value, Block і інш.)

  • Реалізацыя генератара IR для Whale

  • Генератар кода Whale (Assembly або Binary)

  • Рэалізацыя тыпаў, даступных толькі для Whale (i1024, прасунутыя паказальнікі і інш.)

Чэкпойнты

  • Вывад "Hello World" праз Whale

  • Аб'ява/прызначэнне зменных у Whale

  • Реалізацыя інструментаў для адладкі IR Whale

  • Апрацоўка тыпаў паказальнікаў у Whale

  • Пераўтварэнне Wave → Whale IR


Beta этап

Мэта: поўны пераход на Whale, выдаленне LLVM. Аптымізацыя камбінацыі Whale + Wave

Асноўныя асаблівасці

  • Выкарыстоўваецца толькі Whale

  • Поўнае выдаленне LLVM (залежнасці і модулі)

  • Асноўная ўвага на аптымізацыю кода

  • Швидкі і эфектыўны пераход ад IR да выканання

Абсяг аптымізацыі

  • Праектаванне пасоў IR для аптымізацыі Whale

  • Палепшэнне хуткасці генерацыі кода Whale

  • Поўная падтрымка ўсіх сінтаксічных элементаў Wave ў Whale

Тэставанне

  • Юніт-тэсты і поўныя тэставыя наборы

  • Тэсты сумяшчальнасці з WSON і стандартнай бібліятэкай

  • Праверка кроссплатформеннага збору Whale


RC (Release Candidate) этап

Мэта: пачатак б bootstrapping Wave — поўнае выдаленне кода на Rust

Асноўныя асаблівасці

  • Перапісванне кампіятара Wave з выкарыстаннем Wave

  • Выкарыстанне Whale для выканання кода Wave

  • Whale ўваходзіць у стадыю самастойнага хастынгу

Абсяг работы

  • Перапісванне генератара IR для Wave на Whale

  • Выдаленне Rust і замена яго кодам Wave

  • Пісьмо бібліятэк std і core на Wave

  • Першая версія кампіятара Wave на базе Wave пасля паспяховага bootstrap


Release этап (v0.0.1)

Мэта: афіцыйны выпуск / поўная экосістэма на Whale

Кампаненты

  • Wave (мова і стандартная бібліятэка)

  • Whale (кампілятарная сістэма)

  • Vex (менеджар пакетаў)

  • WSON (фармат дадзеных)

Асноўныя асаблівасці

  • Поўнасцю працуючы кампіялатар Wave (пасля паспяховага bootstrap)

  • Аптымізацыя Whale завершана

  • Сістэма пабудовы і разгорту Vex стабілізавана

  • Уключэнне парсера і серыялізацыі WSON

  • Падтрымка крос-платформенных зборкаў (vex build --windows і інш.)


Стратэгія распрацоўкі

СтратэгіяАпісанне
Стратэгія цягніка+шляхоўПаралельная распрацоўка Whale і Wave бэкэндаў падчас стварэння
Стратэгія адгалінавання бэкэндаўВыбар паміж LLVM і Whale праз параметр --backend, важная для alpha
План зваротнай структурыПасля RC Wave будзе кампіляваць сябе праз Whale