メインコンテンツまでスキップ

Whaleコンパイラツールチェーン

概要

WhaleはWaveプログラミング言語専用のコンパイラツールチェーンです。 WhaleはWaveで書かれたソースコードを分析、最適化し、ターゲットプラットフォーム用のバイナリに変換する全工程を担当します。 このツールチェーンはWave言語専用に設計されており、他の言語サポートや外部ツールチェーンの統合を考慮していません。

設計目標

Whaleの主な設計目標は次の通りです。

  • Wave専用サポート: WhaleはWave言語のみをサポートし、他言語との統合を考慮しません。
  • モジュール化構造: 各機能は独立したモジュールで構成され、必要に応じて追加または削除が可能です。
  • 独立的IRの使用: WhaleはLLVM IRなど既存の外部IRを使用せず、自前の中間表現を定義します。
  • 多重ターゲットプラットフォームサポート: オペレーティングシステムおよびハードウェアアーキテクチャに関係なく、様々な環境をターゲットにビルドすることができます。
  • 精密な制御: コンパイルの全工程を開発者が細部にわたり制御できるよう構成されています。
  • 外部依存性の除去: Whaleは外部C/C++ランタイムまたはコンパイラに依存しません。

ターゲットサポート

Whaleは次のような対象環境をサポートすることを目指します。

  • オペレーティングシステム:
    • Linux
    • Windows
    • macOS
    • UEFI (BIOS除く)
    • WaveOS (自社OS)
  • アーキテクチャ:
    • x86_64 (AMD64)
    • ARM64
    • その他はモジュール追加を通じて拡張可能

外部連動(FFI)

Whaleは技術的にFFI(外部関数インターフェース)をサポートできるよう設計されていますが、Waveの哲学上、外部言語との連携は推奨されず、標準的に提供されていません。 Waveは自社言語内で全ての機能を実現できるよう設計されています。

拡張性

Whaleは次のような方式で拡張が可能です。

  • 新しいオペレーティングシステムまたはアーキテクチャに対するモジュール追加
  • ユーザー定義最適化アルゴリズムの挿入
  • ビルドプロファイルおよびリンカー設定のカスタマイズ
  • 自家実行フォーマット定義