haxl: A Haskell library for efficient, concurrent, and concise data access.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



Haxl is a library and EDSL for efficient scheduling of concurrent data accesses with a concise applicative API.

To use Haxl, you need to implement one or more data sources, which provide the means for accessing remote data or other I/O that you want to perform using Haxl.

Haxl provides two top-level modules:

[Skip to ReadMe]


Change logchangelog.md
Dependenciesaeson (>=0.6 && <1.4), base (==4.*), binary (>=0.7 && <0.10), bytestring (>=0.9 && <0.11), containers (==0.5.*), deepseq, exceptions (>=0.8 && <0.11), filepath (>=1.3 && <1.5), ghc-prim, hashable (==1.2.*), haxl, pretty (==1.1.*), semigroups (>=0.18.3 && <0.19), stm (==2.4.*), text (>= && <1.3), time (>=1.4 && <1.9), transformers, unordered-containers (==0.2.*), vector (>=0.10 && <0.13) [details]
CopyrightCopyright (c) 2014-present, Facebook, Inc.
AuthorFacebook, Inc.
MaintainerThe Haxl Team <haxl-team@fb.com>
Home pagehttps://github.com/facebook/Haxl
Bug trackerhttps://github.com/facebook/Haxl/issues
Executablescachebench, monadbench
UploadedFri May 18 11:06:46 UTC 2018 by SimonMarlow





Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees

Readme for haxl-

[back to package description]

Haxl Logo


Haxl is a Haskell library that simplifies access to remote data, such as databases or web-based services. Haxl can automatically

Having all this handled for you behind the scenes means that your data-fetching code can be much cleaner and clearer than it would otherwise be if it had to worry about optimizing data-fetching. We'll give some examples of how this works in the pages linked below.

There are two Haskell packages here:

To use Haxl in your own application, you will likely need to build one or more data sources: the thin layer between Haxl and the data that you want to fetch, be it a database, a web API, a cloud service, or whatever.

There is a generic datasource in "Haxl.DataSource.ConcurrentIO" that can be used for performing arbitrary IO operations concurrently, given a bit of boilerplate to define the IO operations you want to perform.

The haxl-facebook package shows how we might build a Haxl data source based on the existing fb package for talking to the Facebook Graph API.

Where to go next?

Build Status