snix/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal
Profpatsch 42da189180 feat(users/Profpatsch/whatcd-resolver): conduit shenanigans
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>
2025-03-11 19:45:40 +00:00

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