mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
5f8820c2cf
…arger ones …the goal being to save on data transfer costs, libdeflate being much faster than zlib for larger inputs and at higher compression levels. A few notes: In last month... - 95% of response bodies > 20kB compress below 32% (with zlib level 1) - The 10% of responses > 20kB comprise 75% egress traffic to clients - libdeflate at level 6 is comparable in performance to zlib level 1, and twice as fast as zlib level 6 - We expect compressing 20kB+ response bodies at level 6 to reduce data transfer to clients by 25% or so (although this is difficult to predict accurately) The new libdeflate bindings used here also need review: https://github.com/hasura/libdeflate-hs PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10341 GitOrigin-RevId: bc7b19e0024e442d85ac0b34995610edbab13bd6
135 lines
4.5 KiB
Plaintext
135 lines
4.5 KiB
Plaintext
-- Global project configuration.
|
|
|
|
--
|
|
-- This file can be overridden with cabal.project.local (see e.g. cabal/dev.project)
|
|
--
|
|
-- If you need to switch between several local configurations you can also create a
|
|
-- symbolic link to this file in the project root directory; e.g.:
|
|
-- $ ln -s cabal.project myconfig.project
|
|
-- $ ln -s cabal.project.freeze myconfig.project.freeze
|
|
--
|
|
-- ...and then create a new set of overrides in:
|
|
-- myconfig.project.local
|
|
--
|
|
-- ...and then invoke cabal with
|
|
-- $ cabal new-build --project-file=myconfig.project
|
|
--
|
|
-- See: https://www.haskell.org/cabal/users-guide/nix-local-build.html#configuring-builds-with-cabal-project
|
|
|
|
with-compiler: ghc-9.4.5
|
|
-- Work around bugs not yet fixed in 9.4.5. These are only enabled with O2
|
|
-- which we don't currently use, but disable these defensively
|
|
-- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10282
|
|
package *
|
|
ghc-options:
|
|
-fno-dicts-strict
|
|
-fno-spec-constr
|
|
|
|
|
|
-- package-level parallelism:
|
|
jobs: $ncpus
|
|
|
|
packages: server
|
|
packages: server/lib/*/*.cabal
|
|
packages: server/forks/*/*.cabal
|
|
|
|
-- TODO remove these when we are able:
|
|
allow-newer: ekg-core:base
|
|
allow-newer: ekg-core:ghc-prim
|
|
allow-newer: ekg-core:inspection-testing
|
|
allow-newer: ekg-core:text
|
|
allow-newer: ekg-json:base
|
|
allow-newer: ekg-json:text
|
|
allow-newer: ekg-prometheus:base
|
|
allow-newer: ekg-prometheus:text
|
|
allow-newer: ekg-prometheus:bytestring
|
|
-- Migrating to 0.25+ looks like it will be a real pain... :(
|
|
-- https://github.com/morpheusgraphql/morpheus-graphql/pull/766
|
|
allow-newer: morpheus-graphql:text
|
|
allow-newer: morpheus-graphql-app:text
|
|
allow-newer: morpheus-graphql-code-gen:text
|
|
allow-newer: morpheus-graphql-code-gen-utils:text
|
|
allow-newer: morpheus-graphql-core:text
|
|
allow-newer: morpheus-graphql-server:text
|
|
allow-newer: morpheus-graphql-client:text
|
|
allow-newer: morpheus-graphql-subscriptions:text
|
|
|
|
-- https://gitlab.haskell.org/ghc/ghc-debug/-/merge_requests/27
|
|
allow-newer: ghc-debug-stub:ghc-prim
|
|
-- https://github.com/mokus0/th-extras/pull/20
|
|
allow-newer: th-extras:template-haskell
|
|
|
|
package *
|
|
-- NOTE: this gets applied to both local (hasura) packages and dependencies,
|
|
-- but optimizations for local hasura packages are overridden/controlled
|
|
-- via the 'optimize-hasura' flag.
|
|
optimization: 2
|
|
-- For tooling support, e.g. HLS:
|
|
ghc-options: -fwrite-ide-info
|
|
|
|
-- we statically link malloc from mimalloc. Out of an abundance of caution,
|
|
-- disable special treatment of these in all the foreign code we build. The
|
|
-- only risk is potential for some missed optimizations.
|
|
-- See: https://github.com/microsoft/mimalloc/issues/785
|
|
-- NOTE: cc-options is not recognized here for some reason, so we use ghc-options+optc:
|
|
ghc-options: -optc-fno-builtin-malloc -optc-fno-builtin-calloc -optc-fno-builtin-realloc -optc-fno-builtin-free
|
|
|
|
haddock-html: true
|
|
haddock-hoogle: true
|
|
haddock-hyperlink-source: true
|
|
haddock-quickjump: true
|
|
haddock-internal: true
|
|
|
|
-- Allow for dead-code elimination at link-time, to reduce binary size
|
|
if(os(linux))
|
|
package *
|
|
-- ld on M1 OSX does not recognise this:
|
|
ld-options: -Wl,--gc-sections
|
|
ghc-options: -split-sections
|
|
-- -----------------------------------------------------------
|
|
|
|
package graphql-engine
|
|
ghc-options: -j
|
|
haddock-options: "--show-all"
|
|
|
|
allow-newer: hedgehog-generic:base
|
|
allow-newer: hedgehog-generic:hedgehog
|
|
|
|
source-repository-package
|
|
type: git
|
|
location: https://github.com/hasura/kriti-lang.git
|
|
tag: c8fd863d359876af3a0fce47db8a5393dc556667
|
|
|
|
-- This is an unrelesaed version of "odbc"
|
|
-- For text v2 support
|
|
-- WIP/FIXME: review change, maybe upstream PR
|
|
source-repository-package
|
|
type: git
|
|
location: https://github.com/hasura/odbc.git
|
|
tag: 43b07813d635215b3466824d07890de452920fc2
|
|
|
|
package odbc
|
|
ghc-options: -Wwarn
|
|
-- Our CI compiles with -Werror, which is also applied to those packages
|
|
-- while it's fine for packages we maintain, we can't actually enforce
|
|
-- that third-party packages are warning-free, hence this -Wno-error.
|
|
-- When the changes in odbc are released, we can instead depend on
|
|
-- the hackage version, and remove it from this list of packages.
|
|
|
|
source-repository-package
|
|
type: git
|
|
location: https://github.com/hasura/ekg-core.git
|
|
tag: df610859603b504494ad770bdbb7053a7f0b9a6c
|
|
|
|
source-repository-package
|
|
type: git
|
|
location: https://github.com/snoyberg/yaml.git
|
|
tag: c1aa7b3991e669e4c6a977712b495d40a54cf819
|
|
subdir: yaml
|
|
|
|
source-repository-package
|
|
type: git
|
|
location: https://github.com/hasura/libdeflate-hs.git
|
|
tag: e6f020a1a24d07516d753fbb6f30758774f76372
|
|
|