パラダイム | マルチパラダイム: 命令型言語, 構造化言語, オブジェクト指向言語 |
---|---|
登場時期 | 2006年 |
開発者 | Jürg Billeter, Raffaele Sandrini |
最新リリース | 0.56.17[1]/ 2024年4月19日 |
型付け | 強い静的型付け |
影響を受けた言語 | C, C++, C#, D, Java, Python |
プラットフォーム | クロスプラットフォーム |
ライセンス | LGPL 2.1+ |
ウェブサイト |
wiki |
拡張子 | .vala, .vapi |
Vala は GObjectを利用したC言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語である。C#に似た構文を持ち、無名関数やシグナル、プロパティ、ジェネリクス、メモリ管理、例外処理、型推論、および、for-eachなど、C言語にはない言語仕様を持つ[2]。開発者であるJürg BilleterとRaffaele Sandriniは、これらの機能を特殊なランタイムライブラリなしに小さいオーバーヘッドで、GObject オブジェクトシステムを利用した"生の"C言語の実行環境に取り込むことを目的とした。そのため、Valaはアセンブリや中間言語に直接コンパイルされるのではなく、C言語のソースコードにコンパイルされ、Valaの出力するC言語のソースコードはgccなどの標準的なC言語のコンパイラでコンパイルすることができる[3]。
メモリ管理に関して、GObjectシステムは参照カウントを提供する[4]。C言語ではプログラマーが手動で参照の追加や削除を行わなければならないが、Valaでは、直接ポインタを利用せずに言語に備わっている参照型を利用する限り参照カウントの管理は自動で行われる。
ValaからC言語のライブラリを利用するには言語間の接続を定義するvapiファイルを書く必要がある。このような定義を書くことは、特にGObjectをベースにした場合には、C言語のライブラリに対する良いドキュメントとなる。ただしC++のライブラリは利用できない。vapiファイルはGTKを含む大半のGNOMEプラットフォームについて提供されている。
ValaはJürg Billeterにより構想され、彼とRaffaele Sandriniにより実装、2006年3月にセルフホスティングコンパイラとして完成した[5]。