Facebookは,効率的な並行データアクセスのためのライブラリであるHaxlをオープンソースとして公開した。表現力のある型システムや並列性,安全性保証といった,Haskellの従来からの強みに加えて,GHCの持つ実行時のハイパフォーマンスを活用することで,暗黙の並列データアクセスという厄介な問題を解決する。
HaxlはデータベースやWebサービスといった,リモートデータへのデータアクセスを単純化する。同じデータソースに対する複数の要求,複数のデータソースに対する要求を,自動的に並列バッチ処理することが可能であると同時に,実行された要求のキャッシュも行う。開発に携わったエンジニアのひとりであるJon Purdy氏は,次のように説明する。
ここでの基本的な考え方は,どうしようもなく不効率なデータ取得コード — ループ内のクエリや明示的でない重複排除のような — をネイティブに書いても,内部で効果的な並列処理へと魔法のように変換する,というものです。
アプリケーションでHaxlを使うには,データソースとそのアクセス方法を定義するために,薄いレイヤを作る必要がある。
Haxlでは計算処理を暗黙的に並列化可能にするため,Applicative型のクラスを使用している。詳細な動作については,このプレゼンテーションを見るとよいだろう。ライブラリはhackageから,そのソースコードはGitHubから取得することができる。
Haxlは,同種の問題を解決するFXLの後継となるものだ。 FXLも純粋な実行モデルを持っているが,実装にはパフォーマンス上,特にCPUとメモリ使用量に関して問題があるようだ。これまでは,HaskelとGHCの使用が最高の代替策だった。Haxlの背景となった事情や,Facebookで現在運用されているユースケースについても詳細も公開されている。