Перейти к основному содержимому

Интегрированная дорожная карта разработки Wave + Whale v2

Все этапы

предварительная альфа → предварительная бета → альфа → бета → rc → релиз

Этап предварительной беты

Цель: завершение фронтенда языка 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


Этап альфа

Цель: начало внедрения Whale, параллельное использование с LLVM / начало реализации бэкенда на базе Whale

Основные особенности

  • LLVM является бэкендом по умолчанию

  • Whale - опциональный бэкенд

  • При выполнении кода Wave можно использовать опцию --backend для переключения

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

Работы, связанные с Whale

  • Проектирование и определение структуры Whale IR (инструкции, значения, блоки и т.д.)

  • Реализация IR генератора для Whale

  • Генератор кода Whale (ассемблерный или бинарный)

  • Реализация типов, возможных только в Whale (i1024, продвинутые указатели и т.д.)

Контрольная точка

  • Вывод 'Hello World' с помощью Whale

  • Объявление/присвоение переменных в Whale

  • Реализация инструмента отладки Whale IR

  • Обработка типов указателей в Whale

  • Преобразование Wave в Whale IR


Этап бета-версии

Цель: полный переход на Whale, удаление LLVM. Оптимизация комбинации Whale + Wave

Основные характеристики

  • Используется только Whale

  • Полное удаление LLVM (зависимости и модули)

  • Фокус на оптимизации кода

  • От IR до выполнения быстро и эффективно

Область оптимизации

  • Проектирование оптимизационного прохода Whale IR

  • Улучшение скорости генерации кода Whale

  • Полная поддержка всей грамматики Wave в Whale

Тестирование

  • Модульное тестирование + полный тестовый набор

  • Тесты совместимости WSON и стандартной библиотеки

  • Проверка кроссплатформенной сборки Whale


Этап RC (кандидат в релизы)

Цель: начало загрузки Wave — полное удаление кода Rust

Основные характеристики

  • Начало переписывания компилятора Wave на самом Wave

  • Самостоятельное выполнение кода Wave на основе Whale

  • Whale достигает стадии self-hosting

Область работы

  • Переписывание генератора Wave IR на основе Whale

  • Удаление Rust + замена на код Wave

  • std и core библиотеки написаны на Wave

  • При успешной загрузке появится первый родной компилятор для Wave


Этап релиза (v0.0.1)

Цель: официальный выпуск / полное предоставление независимой языковой экосистемы на основе Whale

Компоненты

  • Wave (язык и стандартная библиотека)

  • Whale (компиляторная цепочка)

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

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

Характеристики

  • Полный компилятор только для Wave (успешная загрузка)

  • Завершена оптимизация Whale

  • Система сборки и развертывания Vex внедрена

  • Включены парсер и сериализация WSON

  • Возможна кросс-ос сборка (например, vex build --windows)


Метастратегия разработки

СтратегияОписание
Стратегия поезда и рельсПараллельная разработка Whale и создание бэкенда для Wave
Стратегия разветвления бэкендаВыбор между LLVM/Whale с помощью опции --backend, важная структура в альфа
План обратной структурыПосле rc код Wave компилирует себя через Whale