Haxe
Haxeの標準ライブラリはすべてのターゲットで動作するもの、すべてでは無いが複数のターゲットで動作するもの、個別のターゲットのみで動作するものがある。以下にそれぞれの例をあげる。
すべてのターゲットで動作するもの バイナリ操作 ZIP圧縮、解凍 テンプレートエンジン JSONの書き出し、読み込み ユニットテスト Base64のエンコードとデコード 正規表現(ターゲットごとで細かい動作は異なる)
すべてではないが複数のターゲットで動作するもの 標準入出力、標準エラー出力(Flash、JavaScript以外のターゲット) SQLを操作するライブラリ (Neko, C++, PHP)
個別のターゲットで動作するもの Flash、Java、C#、PHP、Pythonのそれぞれのターゲットの標準のAPI HTML5標準のAPIおよびjQueryのextern (JavaScript) AST(抽象構文木)やコンパイルのオプションの操作(マクロ環境のみで動作)
このように機能それぞれに合わせた抽象化が行われているため、複数のターゲットで動作するような書き方と、個別のターゲットに依存してそのターゲットの利点を生かすような書き方の両方ができる。
その他、以下のような独自の機能を持つ
型推論
型パラメータ(ジェネリクス)
インライン関数
列挙型(一般化代数的データ型)
型エイリアス (typedef)
パターンマッチング
構造的部分型付け
関数の部分適用
条件付きコンパイル
配列内包表記、辞書内包表記
文字列リテラル内での改行、文字列内の変数展開(ヒアドキュメント)
静的拡張 (Mixin)
マクロ
Haxeでは細かい型宣言が可能である。
Haxeは静的型付き言語であるが、Dynamic型やuntypedを用いることで部分的に型チェックを無効化できる。逆にexternクラスによる型定義を行うことで、動的型のターゲットのライブラリに対して型チェックを有効にして連携できる。
haXe Betaより対応(2006年2月)。バイトコードへコンパイルされる。