- Use BasicHashTable for the Haxl DataCache instead of HashMap
- API Changes in: Haxl.Core.DataCache, Haxl.Core.Fetch
- Removed support for GHC < 8.2
- Add a callgraph reference to 'Env' to record the function callgraph during a
computation. The callgraph is stored as an edge list in the Env through the
withCallGraphand enables users to debug a Haxl computation.
- Add a callgraph reference to 'Env' to record the function callgraph during a computation. The callgraph is stored as an edge list in the Env through the use of
- Adds feature to track outgone datasource fetches. This is only turned on for report level greater than 1. The fetches are stored as a running Map in the env ('submittedReqsRef').
Add a new 'w' parameter to 'GenHaxl' to allow arbitrary writes during a computation. These writes are stored as a running log in the Env, and are not memoized. This allows users to extract information from a Haxl computation which throws. Our advise is to limit these writes to monitoring and debugging logs.
A 'WriteTree' constructor to maintain log of writes inside the Environment. This is defined to allow O(1) mappend.
- Support for GHC 8.6.1
- Exported MemoVar from Haxl.Core.Memo
- Updated the facebook example
- Fixed some links in the documentation
- Bump some version bounds
Completely rewritten internals to support arbitrarily overlapping I/O and computation. Haxl no longer runs batches of I/O in "rounds", waiting for all the I/O to complete before resuming the computation. In Haxl 2, we can spawn I/O that returns results in the background and computation fragments are resumed when the values they depend on are available. See
tests/FullyAsyncTest.hsfor an example.
PerformFetchconstructor supports the new concurrency features:
BackgroundFetch. The data source is expected to call
putResultin the background on each
BlockedFetchwhen its result is ready.
There is a generic
Haxl.DataSource.ConcurrentIOfor performing each I/O operation in a separate thread.
Lots of cleanup and refactoring of the APIs.
License changed from BSD+PATENTS to plain BSD3.
- 'pAnd' and 'pOr' were added
- 'asyncFetchAcquireRelease' was added
- 'cacheResultWithShow' was exposed
- GHC 8.2.1 compatibility