Some experiments in speeding up search efficiency. This is more of a “is this possible” thing, and it looks like it’s possible, but does not really improve anything regarding the rate limiting. The idea is that we can start everything at the same time as async, but use a semaphore to have only 5 things run at once. That also means that as soon as something is done, we immediately start the next task. The asyncs are guaranteed to be cleaned up by the `ResourceT` wrapper (eventually). It’s pretty cool how Conduit makes writing these side-effecting things pretty possible. Change-Id: Ibadead7db293373b415840960602fa71920fc653 Reviewed-on: https://cl.tvl.fyi/c/depot/+/13246 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
137 lines
3 KiB
Text
137 lines
3 KiB
Text
cabal-version: 3.0
|
|
name: whatcd-resolver
|
|
version: 0.1.0.0
|
|
author: Profpatsch
|
|
maintainer: mail@profpatsch.de
|
|
|
|
common common-options
|
|
ghc-options:
|
|
-Wall
|
|
-Wno-type-defaults
|
|
-Wunused-packages
|
|
-Wredundant-constraints
|
|
-fwarn-missing-deriving-strategies
|
|
|
|
-- See https://downloads.haskell.org/ghc/latest/docs/users_guide/exts.html
|
|
-- for a description of all these extensions
|
|
default-extensions:
|
|
-- Infer Applicative instead of Monad where possible
|
|
ApplicativeDo
|
|
|
|
-- Allow literal strings to be Text
|
|
OverloadedStrings
|
|
|
|
-- Syntactic sugar improvements
|
|
LambdaCase
|
|
MultiWayIf
|
|
|
|
-- Makes the (deprecated) usage of * instead of Data.Kind.Type an error
|
|
NoStarIsType
|
|
|
|
-- Convenient and crucial to deal with ambiguous field names, commonly
|
|
-- known as RecordDotSyntax
|
|
OverloadedRecordDot
|
|
|
|
-- Make #labels available
|
|
OverloadedLabels
|
|
|
|
-- does not export record fields as functions, use OverloadedRecordDot to access instead
|
|
NoFieldSelectors
|
|
|
|
-- Allow the same record field name to be declared twice per module.
|
|
-- This works, because we use `OverloadedRecordDot` everywhere (enforced by `NoFieldSelectors`).
|
|
DuplicateRecordFields
|
|
|
|
-- Record punning
|
|
RecordWildCards
|
|
|
|
-- Improved Deriving
|
|
DerivingStrategies
|
|
DerivingVia
|
|
|
|
-- Type-level strings
|
|
DataKinds
|
|
|
|
-- to enable the `type` keyword in import lists (ormolu uses this automatically)
|
|
ExplicitNamespaces
|
|
|
|
-- allows defining pattern synonyms, but also the `import Foo (pattern FooPattern)` import syntax
|
|
PatternSynonyms
|
|
|
|
default-language: GHC2021
|
|
|
|
library
|
|
import: common-options
|
|
|
|
hs-source-dirs: src
|
|
|
|
exposed-modules:
|
|
WhatcdResolver
|
|
AppT
|
|
Bencode
|
|
JsonLd
|
|
Optional
|
|
MyLabel
|
|
Http
|
|
Html
|
|
Transmission
|
|
Redacted
|
|
|
|
build-depends:
|
|
base >=4.15 && <5,
|
|
text,
|
|
my-prelude,
|
|
my-webstuff,
|
|
pa-prelude,
|
|
pa-error-tree,
|
|
pa-label,
|
|
pa-field-parser,
|
|
pa-run-command,
|
|
aeson-better-errors,
|
|
aeson,
|
|
async,
|
|
bencode,
|
|
blaze-html,
|
|
bytestring,
|
|
case-insensitive,
|
|
conduit,
|
|
containers,
|
|
unordered-containers,
|
|
directory,
|
|
exceptions,
|
|
filepath,
|
|
hs-opentelemetry-sdk,
|
|
hs-opentelemetry-api,
|
|
http-conduit,
|
|
http-types,
|
|
http-client,
|
|
ihp-hsx,
|
|
monad-logger,
|
|
mtl,
|
|
network-uri,
|
|
random,
|
|
resourcet,
|
|
resource-pool,
|
|
template-haskell,
|
|
postgresql-simple,
|
|
punycode,
|
|
tmp-postgres,
|
|
time,
|
|
unliftio,
|
|
selective,
|
|
wai-extra,
|
|
wai,
|
|
warp,
|
|
|
|
executable whatcd-resolver
|
|
import: common-options
|
|
|
|
main-is: Main.hs
|
|
|
|
build-depends:
|
|
base >=4.15 && <5,
|
|
whatcd-resolver
|
|
|
|
ghc-options:
|
|
-threaded
|
|
|