Компиляторная цепочка 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 можно расширить следующим образом:
- Добавление модулей для новых операционных систем или архитектур
- Вставка пользовательских алгоритмов оптимизации
- Кастомизация профилей сборки и настроек линковщика
- Определение собственного формата выполнения