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

Набор инструментов компилятора Whale

Обзор

Whale — это специальный набор инструментов компилятора для языка программирования Wave. Whale отвечает за весь процесс анализа, оптимизации и преобразования исходного кода, написанного с помощью Wave, в двоичные файлы для целевой платформы. Эта цепочка инструментов разработана исключительно для языка Wave и не предусматривает поддержку других языков или интеграцию с внешними цепочками инструментов.

цели дизайна

Основными целями разработки Whale являются:

  • Поддержка только Wave: Whale поддерживает только язык Wave и не предусматривает интеграцию с другими языками.
  • Модульная структура: каждая функция состоит из независимого модуля, который при необходимости можно добавлять или удалять.
  • Использовать независимый IR: Whale определяет свое собственное промежуточное представление вместо использования существующего внешнего IR, такого как LLVM,
  • Поддержка нескольких целевых платформ: работайте в различных средах независимо от операционной системы и аппаратной архитектуры.
  • Точный контроль: он структурирован так, что разработчики могут детально контролировать весь процесс компиляции.
  • Удаление внешних зависимостей: Whale не зависит от внешних сред выполнения или компиляторов C/C++.

целевая поддержка

Whale предназначен для поддержки следующих целевых сред:

  • Операционная система:
    • Linux
    • Windows
    • macOS
    • UEFI (исключая BIOS)
    • WaveOS (собственный OS)
  • Архитектура:
    • x86_64 (AMD64)
    • ARM64
    • Остальные можно расширить за счет добавления модулей.

Внешняя связь (FFI)

Whale технически разработан для поддержки FFI (интерфейс внешних функций), В соответствии с философией Wave интеграция с внешними языками не рекомендуется и не предоставляется в стандартной комплектации. Wave спроектирован таким образом, что все функции могут быть реализованы на его собственном языке.

масштабируемость

Whale можно расширить следующими способами:

  • Добавляйте модули для новых операционных систем или архитектур.
  • Вставка пользовательских алгоритмов оптимизации
  • Настройка профилей сборки и настроек компоновщика
  • Определите свой собственный формат исполняемого файла