Компиляторная цепочка Whale
Обзор
Whale - специализированная компиляторная цепочка для языка программирования Wave. Whale отвечает за анализ, оптимизацию и преобразование исходного кода, написанного на Wave, в двоичные файлы для целевой платформы. Этот инструментальный комплекс разработан исключительно для языка Wave и не учитывает поддержку других языков или интеграци ю с внешними инструментальными комплексами.
Цели проектирования
Основные цели проектирования Whale:
- Поддержка только для Wave: Whale поддерживает только язык Wave и не учитывает интеграцию с другими языками.
 - Модульная структура: каждая функция организована как независимый модуль, который можно добавлять или удалять по мере необходимости.
 - Использование независимого IR: Whale определяет свое собственное промежуточное представление, не используя существующие внешние IR, такие как LLVM IR.
 - Поддержка нескольких целевых платформ: можно осуществлять сборку для различных сред, независимо от операционной системы и архитектуры оборудования.
 - Точный контроль: компиляция организована так, чтобы разработчик мог детально контролировать весь процесс.
 - Удаление внешних зависимостей: Whale не зависит от внешнего C/C++ времени выполнения или компилятора.
 
Поддержка целей
Цель Whale - поддержка следующих целевых сред:
- Операционные системы:
- Linux
 - Windows
 - macOS
 - UEFI (без BIOS)
 - WaveOS (собственная ОС)
 
 - Архитектуры:
- x86_64 (AMD64)
 - ARM64
 - Расширение через добавление модулей для остальных
 
 
Взаимодействие с внешними элементами (FFI)
Whale은 기술적으로 FFI(Foreign Function Interface)를 지원할 수 있도록 설계되지만, Wave의 철학상 외부 언어와의 연동은 권장되지 않으며 표준적으로 제공되지 않습니다. Wave спроектирован так, чтобы реализовать все функции внутри самого языка.
Расширяемость
Whale можно расширить следующим образом:
- Добавление модулей для новых операционных систем или архитектур
 - Вставка пользовательских алгоритмов оптимизации
 - Кастомизация профилей сборки и настроек линковщика
 - Определение собственного формата выполнения