mirror of
https://github.com/facebook/Haxl.git
synced 2024-12-24 17:23:03 +03:00
b67f7f6370
Summary: This is a complete reworking of the way that Haxl schedules I/O. The main benefits are: * Data fetches are no longer organised into rounds, but can be arbitrarily overlapped with each other and with computation. The scheduler supports an arbitrary queue of work items which it can evaluate while data-fetching is taking place in the background. To take advantage of this, data sources must implement a new form of `PerformFetch`, namely `BackgroundFetch`. The old forms of `PerformFetch` are still supported, but won't benefit from any additional concurrency. * It is now possible to specify on a per-data-source basis whether fetching should be optimised for batching or for latency. A request to a data source that doesn't benefit from batching can be submitted immediately. This is done with the new `schedulerHint` method of `DataSource`. Reviewed By: niteria Differential Revision: D4938005 fbshipit-source-id: 96f12ad05ee62d62474ee4cc1215f19d0a6fcdf3
159 lines
3.2 KiB
Plaintext
159 lines
3.2 KiB
Plaintext
name: haxl
|
|
version: 0.5.1.0
|
|
synopsis: A Haskell library for efficient, concurrent,
|
|
and concise data access.
|
|
homepage: https://github.com/facebook/Haxl
|
|
bug-reports: https://github.com/facebook/Haxl/issues
|
|
license: OtherLicense
|
|
license-files: LICENSE,PATENTS
|
|
author: Facebook, Inc.
|
|
maintainer: The Haxl Team <haxl-team@fb.com>
|
|
copyright: Copyright (c) 2014-present, Facebook, Inc.
|
|
category: Concurrency
|
|
build-type: Simple
|
|
stability: alpha
|
|
cabal-version: >= 1.10
|
|
tested-with:
|
|
GHC==7.8.4,
|
|
GHC==7.10.3,
|
|
GHC==8.0.2,
|
|
GHC==8.2.1
|
|
|
|
description:
|
|
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:
|
|
.
|
|
* /Data-source implementations/ import "Haxl.Core",
|
|
.
|
|
* /Client code/ import your data sources and "Haxl.Prelude", or some
|
|
other client-level API that you provide.
|
|
|
|
extra-source-files:
|
|
readme.md
|
|
PATENTS
|
|
tests/LoadCache.txt
|
|
changelog.md
|
|
|
|
library
|
|
|
|
build-depends:
|
|
HUnit >= 1.2 && < 1.7,
|
|
aeson >= 0.6 && < 1.3,
|
|
base == 4.*,
|
|
binary >= 0.7 && < 0.10,
|
|
bytestring >= 0.9 && < 0.11,
|
|
containers == 0.5.*,
|
|
deepseq,
|
|
exceptions >=0.8 && <0.9,
|
|
filepath >= 1.3 && < 1.5,
|
|
ghc-prim,
|
|
hashable == 1.2.*,
|
|
pretty == 1.1.*,
|
|
-- text 1.2.1.0 required for instance Binary Text
|
|
text >= 1.2.1.0 && < 1.3,
|
|
time >= 1.4 && < 1.9,
|
|
stm == 2.4.*,
|
|
transformers,
|
|
unordered-containers == 0.2.*,
|
|
vector >= 0.10 && <0.13
|
|
|
|
exposed-modules:
|
|
Haxl.Core,
|
|
Haxl.Core.DataCache,
|
|
Haxl.Core.Exception,
|
|
Haxl.Core.Memo,
|
|
Haxl.Core.Monad,
|
|
Haxl.Core.RequestStore,
|
|
Haxl.Core.StateStore,
|
|
Haxl.Core.ShowP,
|
|
Haxl.Core.Types,
|
|
Haxl.Prelude
|
|
|
|
other-modules:
|
|
Haxl.Core.Util
|
|
|
|
default-language: Haskell2010
|
|
|
|
ghc-options:
|
|
-O2 -fprof-auto
|
|
-Wall
|
|
|
|
|
|
test-suite test
|
|
|
|
build-depends:
|
|
HUnit,
|
|
aeson,
|
|
base == 4.*,
|
|
binary,
|
|
bytestring,
|
|
containers,
|
|
deepseq,
|
|
filepath,
|
|
hashable,
|
|
haxl,
|
|
test-framework,
|
|
test-framework-hunit,
|
|
text,
|
|
time,
|
|
unordered-containers
|
|
|
|
ghc-options:
|
|
-Wall
|
|
-fno-warn-name-shadowing
|
|
-fno-warn-missing-signatures
|
|
|
|
hs-source-dirs:
|
|
tests
|
|
|
|
main-is:
|
|
TestMain.hs
|
|
|
|
other-modules:
|
|
AdoTests
|
|
AllTests
|
|
BadDataSource
|
|
BatchTests
|
|
Bench
|
|
CoreTests
|
|
DataCacheTest
|
|
ExampleDataSource
|
|
FullyAsyncTest
|
|
LoadCache
|
|
MemoizationTests
|
|
MockTAO
|
|
ProfileTests
|
|
SleepDataSource
|
|
TestBadDataSource
|
|
TestExampleDataSource
|
|
TestTypes
|
|
TestUtils
|
|
|
|
type:
|
|
exitcode-stdio-1.0
|
|
|
|
default-language: Haskell2010
|
|
|
|
executable monadbench
|
|
default-language:
|
|
Haskell2010
|
|
hs-source-dirs:
|
|
tests
|
|
build-depends:
|
|
base,
|
|
haxl,
|
|
hashable,
|
|
time
|
|
main-is:
|
|
MonadBench.hs
|
|
other-modules:
|
|
ExampleDataSource
|
|
ghc-options:
|
|
-O2 -main-is MonadBench -rtsopts
|