cabal-version: 2.4
name: large-records
version: 0.4
synopsis: Efficient compilation for large records, linear in the size of the record
description: For many reasons, the internal code generated for modules
that contain records is quadratic in the number of record
fields. For large records (more than 30 fields, say), this
can become problematic, leading to large compilation times
and high memory requirements for ghc. The large-records
library provides a way to define records that is guaranteed
to result in ghc core that is /linear/ in the number of
record fields.
bug-reports: https://github.com/well-typed/large-records/issues
license: BSD-3-Clause
author: Edsko de Vries
maintainer: edsko@well-typed.com
category: Generics
extra-source-files: CHANGELOG.md
tested-with: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.7 || ==9.4.4
source-repository head
type: git
location: https://github.com/well-typed/large-records
library
exposed-modules:
Data.Record.Plugin
Data.Record.Plugin.Options
Data.Record.Plugin.Runtime
Data.Record.Plugin.WithRDP
Data.Record.Overloading
other-modules:
Data.Record.Internal.GHC.Fresh
Data.Record.Internal.GHC.Shim
Data.Record.Internal.GHC.TemplateHaskellStyle
Data.Record.Internal.Plugin.CodeGen
Data.Record.Internal.Plugin.Exception
Data.Record.Internal.Plugin.Names
Data.Record.Internal.Plugin.Options
Data.Record.Internal.Plugin.Record
build-depends:
base >= 4.13 && < 4.18
, containers >= 0.6.2 && < 0.7
, mtl >= 2.2.1 && < 2.3
, primitive >= 0.7 && < 0.8
, syb >= 0.7 && < 0.8
, record-hasfield >= 1.0 && < 1.1
-- large-generics 0.2 starts using 'SmallArray' instead of 'Vector'
, large-generics >= 0.2 && < 0.3
-- transformers 0.5.6 introduces Writer.CPS
, transformers >= 0.5.6 && < 0.7
-- 0.2.16 introduces support for ghc 9.4
, record-dot-preprocessor >= 0.2.16 && < 0.3
-- whatever versions are bundled with ghc
, ghc
, template-haskell
hs-source-dirs:
src
default-language:
Haskell2010
default-extensions:
NoStarIsType
ghc-options:
-Wall
-Wcompat
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-Widentities
-Wredundant-constraints
-Wmissing-export-lists
if impl(ghc >= 8.10)
ghc-options: -Wunused-packages
test-suite test-large-records
type:
exitcode-stdio-1.0
main-is:
TestLargeRecords.hs
other-modules:
Test.Record.Sanity.CodeGen
Test.Record.Sanity.Derive
Test.Record.Sanity.EqualFieldTypes
Test.Record.Sanity.GhcGenerics
Test.Record.Sanity.HigherKinded
Test.Record.Sanity.HKD
Test.Record.Sanity.NamedWildCards
Test.Record.Sanity.Operators
Test.Record.Sanity.OverloadedRecordUpdate
Test.Record.Sanity.OverloadingNoDRF
Test.Record.Sanity.PatternMatch
Test.Record.Sanity.QualifiedImports
Test.Record.Sanity.QualifiedImports.A
Test.Record.Sanity.QualifiedImports.B
Test.Record.Sanity.RDP.SingleModule
Test.Record.Sanity.RDP.SplitModule
Test.Record.Sanity.RDP.SplitModule.RecordDef
Test.Record.Sanity.RecordConstruction
Test.Record.Sanity.Strictness
Test.Record.Sanity.StrictnessStrictData
Test.Record.Util
build-depends:
base
, large-records
, generic-deriving
, large-generics
, mtl
, newtype
, record-dot-preprocessor
, record-hasfield
, tasty
, tasty-hunit
, template-haskell
, transformers
hs-source-dirs:
test
default-language:
Haskell2010
ghc-options:
-Wall
-Wcompat
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-Widentities