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

Интегрированная дорожная карта разработки 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 — опциональный бэкенд

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

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

Задачи, связанные с Whale

  • Проектирование и определение структуры IR Whale (Instruction, Value, Block и др.)

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

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

  • Типы, доступные только в 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)

Цель: Начать бутстрапинг Wave — полностью отказаться от Rust

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

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

  • Исполнение кода Wave на основе Whale

  • Whale выходит на стадию self-hosting

Объём работ

  • Переписать IR-генератор Wave с использованием Whale

  • Удалить Rust и заменить его кодом на Wave

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

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


Этап Release (v0.0.1)

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

Компоненты

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

  • Whale (инструментарий компилятора)

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

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

Особенности

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

  • Полная оптимизация Whale

  • Стабильная система сборки и развёртывания через Vex

  • Включён парсер и сериализатор WSON

  • Кроссплатформенная сборка (vex build --windows и т.д.)


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

СтратегияОписание
Стратегия «поезд + рельсы»Параллельная разработка Whale и построение бэкенда Wave
Стратегия ветвления бэкендаВозможность выбора LLVM/Whale через --backend, ключевой элемент в alpha
План инверсии структурыНачиная с этапа RC, Wave будет компилировать сам себя через Whale