haxl alternatives and similar packages
Based on the "Concurrency" category.
Alternatively, view haxl alternatives based on common mentions on social networks and blogs.
-
chaselev-deque
A collection of different packages for CAS based data structures. -
unagi-chan
A haskell library implementing fast and scalable concurrent queues for x86, with a Chan-like API -
libcspm
The library FDR3 uses for parsing, type checking and evaluating machine CSP. -
cspmchecker
The library FDR3 uses for parsing, type checking and evaluating machine CSP. -
lifted-async
Run lifted IO operations asynchronously and wait for their results -
threads-supervisor
Simple, IO-based Haskell library for Erlang-inspired thread supervisors -
concurrent-machines
Concurrency features for the Haskell machines package -
concurrent-supply
A fast globally unique variable supply with a pure API -
sirkel
Sirkel; a Chord DHT in haskell. Node failure, replication and batteries included! -
slave-thread
A principal solution to ghost threads and silent exceptions -
thread-supervisor
A simplified implementation of Erlang/OTP like supervisor for GHC thread -
token-bucket
Haskell rate limiter library using lazy token bucket algorithm -
timers
Simple package that implements timers. Both "one-shot" and "repeating" timers are implemented. -
split-channel
Control.Concurrent.Chan split into sending and receiving halves. -
unagi-bloomfilter
A fast, cache-efficient, concurrent bloom filter in Haskell
ONLYOFFICE Docs — document collaboration in your environment
Do you think we are missing an alternative of haxl or a related project?
Popular Comparisons
README
Haxl
Haxl is a Haskell library that simplifies access to remote data, such as databases or web-based services. Haxl can automatically
- batch multiple requests to the same data source,
- request data from multiple data sources concurrently,
- cache previous requests,
- memoize computations.
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:
haxl
: The core Haxl frameworkhaxl-facebook
(in [https://github.com/facebook/Haxl/tree/master/example/facebook](example/facebook)): An (incomplete) example data source for accessing the Facebook Graph API
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?
The Story of Haxl explains how Haxl came about at Facebook, and discusses our particular use case.
An example Facebook data source walks through building an example data source that queries the Facebook Graph API concurrently.
Fun with Haxl (part 1) Walks through using Haxl from scratch for a simple SQLite-backed blog engine.
The N+1 Selects Problem explains how Haxl can address a common performance problem with SQL queries by automatically batching multiple queries into a single query, without the programmer having to specify this behavior.
Haxl Documentation on Hackage.
There is no Fork: An Abstraction for Efficient, Concurrent, and Concise Data Access, our paper on Haxl, accepted for publication at ICFP'14.
Contributing
We welcome contributions! See CONTRIBUTING for details on how to get started, and our Code of Conduct.
License
Haxl uses the BSD 3-clause License, as found in the LICENSE file.
*Note that all licence references and agreements mentioned in the haxl README section above
are relevant to that project's source code only.