cabal-version: 2.4 name: large-records version: 0.2.1.0 x-revision: 1 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 source-repository head type: git location: https://github.com/well-typed/large-records library exposed-modules: Data.Record.Plugin Data.Record.Plugin.Runtime Data.Record.Plugin.Options 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.GhcGenerics Data.Record.Internal.Plugin.Names.Runtime Data.Record.Internal.Plugin.Options Data.Record.Internal.Plugin.Record build-depends: base >= 4.13 && < 4.17 , containers >= 0.6.2 && < 0.7 , mtl >= 2.2.1 && < 2.3 , primitive >= 0.7 && < 0.8 , record-hasfield >= 1.0 && < 1.1 , syb >= 0.7 && < 0.8 -- 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 -- whatever version is bundled with ghc , ghc <9.2 , 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.HigherKinded Test.Record.Sanity.HKD 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.GhcGenerics Test.Record.Util build-depends: base , large-records , generic-deriving , large-generics , mtl , newtype , record-hasfield , tasty , tasty-hunit , template-haskell , transformers -- , record-dot-preprocessor >= 0.2.14 hs-source-dirs: test default-language: Haskell2010 ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -Widentities if impl(ghc >= 9.0.1) -- ghc 9 provides warnings about unused imports for the imports added by -- the plugin. I'm not yet sure how to deal with this properly. The imports -- are necessary (I think...?), both for the generated code and to typecheck -- the user's own ANN pragma. For now we just disable the warning. ghc-options: -Wno-unused-imports