1
1
mirror of https://github.com/github/semantic.git synced 2024-12-01 00:33:59 +03:00
semantic/semantic.cabal

458 lines
18 KiB
Plaintext
Raw Normal View History

2018-02-26 21:16:56 +03:00
name: semantic
version: 0.4.0
synopsis: Framework and service for analyzing and diffing untrusted code.
2015-11-18 01:44:16 +03:00
description: Please see README.md
2018-02-26 21:16:56 +03:00
homepage: http://github.com/github/semantic#readme
2015-11-18 01:44:16 +03:00
author: Rob Rix, Josh Vera
2015-11-18 01:52:41 +03:00
maintainer: rob.rix@github.com
2016-01-05 19:26:58 +03:00
copyright: 2016 GitHub
2015-11-18 01:44:16 +03:00
category: Web
2017-07-23 17:34:30 +03:00
build-type: Simple
2015-11-18 01:44:16 +03:00
-- extra-source-files:
cabal-version: >=1.10
flag release
description: Build with optimizations on (for CI or deployment builds)
default: False
2015-11-18 01:44:16 +03:00
library
hs-source-dirs: src
exposed-modules:
2017-11-27 22:32:13 +03:00
-- Analyses & term annotations
Analysis.Abstract.Caching.FlowInsensitive
, Analysis.Abstract.Caching.FlowSensitive
, Analysis.Abstract.Collecting
, Analysis.Abstract.Dead
, Analysis.Abstract.Graph
, Analysis.Abstract.Tracing
, Analysis.ConstructorName
, Analysis.CyclomaticComplexity
, Analysis.TOCSummary
2018-11-02 00:49:35 +03:00
, Analysis.Decorator
, Analysis.HasTextElement
, Analysis.PackageDef
-- Semantic assignment
2017-11-27 22:32:13 +03:00
, Assigning.Assignment
, Assigning.Assignment.Deterministic
, Assigning.Assignment.Table
-- Control structures & interfaces for abstract interpretation
, Control.Abstract
, Control.Abstract.Context
, Control.Abstract.Evaluator
, Control.Abstract.Heap
2018-05-28 22:09:10 +03:00
, Control.Abstract.Hole
, Control.Abstract.Modules
2018-05-18 17:11:19 +03:00
, Control.Abstract.Primitive
, Control.Abstract.PythonPackage
, Control.Abstract.Roots
2018-09-11 01:50:40 +03:00
, Control.Abstract.ScopeGraph
2018-03-02 22:45:56 +03:00
, Control.Abstract.Value
-- Effects
, Control.Effect.Interpose
, Control.Effect.REPL
-- Matching and rewriting DSLs
, Control.Matching
2018-09-14 19:47:21 +03:00
, Control.Rewriting
-- Datatypes for abstract interpretation
, Data.Abstract.Address.Hole
2018-08-10 20:31:55 +03:00
, Data.Abstract.Address.Located
, Data.Abstract.Address.Monovariant
, Data.Abstract.Address.Precise
2018-08-08 02:50:55 +03:00
, Data.Abstract.BaseError
2018-04-25 22:44:44 +03:00
, Data.Abstract.Declarations
, Data.Abstract.Evaluatable
, Data.Abstract.FreeVariables
2018-03-15 03:42:59 +03:00
, Data.Abstract.Heap
2017-12-01 21:57:15 +03:00
, Data.Abstract.Live
2018-03-22 00:59:16 +03:00
, Data.Abstract.Module
, Data.Abstract.ModuleTable
2018-05-18 19:43:28 +03:00
, Data.Abstract.Name
2018-03-14 17:36:56 +03:00
, Data.Abstract.Number
, Data.Abstract.Package
, Data.Abstract.Path
2018-05-18 17:36:23 +03:00
, Data.Abstract.Ref
2018-08-29 20:47:44 +03:00
, Data.Abstract.ScopeGraph
, Data.Abstract.Value.Abstract
, Data.Abstract.Value.Concrete
, Data.Abstract.Value.Type
-- General datatype definitions & generic algorithms
, Data.Algebra
, Data.AST
2017-06-24 17:00:40 +03:00
, Data.Blob
2017-09-27 19:41:41 +03:00
, Data.Diff
, Data.Duration
2017-08-06 19:29:28 +03:00
, Data.Error
, Data.File
, Data.Functor.Both
, Data.Functor.Classes.Generic
2018-05-11 19:04:26 +03:00
, Data.Graph
2018-09-07 01:12:12 +03:00
, Data.Graph.ControlFlowVertex
2018-09-07 03:27:13 +03:00
, Data.Graph.TermVertex
, Data.Graph.DiffVertex
, Data.Handle
, Data.History
2018-11-17 00:09:11 +03:00
, Data.ImportPath
2017-09-09 19:15:22 +03:00
, Data.JSON.Fields
2017-11-27 22:17:48 +03:00
, Data.Language
, Data.Location
2018-03-07 20:22:52 +03:00
, Data.Map.Monoidal
, Data.Proto.DiffTree
, Data.Proto.ParseTree
2017-09-27 19:29:07 +03:00
, Data.Patch
, Data.Project
, Data.Quieterm
2017-06-24 16:46:28 +03:00
, Data.Range
, Data.Reprinting.Errors
, Data.Reprinting.Fragment
, Data.Reprinting.Operator
, Data.Reprinting.Scope
, Data.Reprinting.Splice
, Data.Reprinting.Token
2018-03-21 23:40:56 +03:00
, Data.Semigroup.App
, Data.Scientific.Exts
, Data.Source
, Data.Span
-- À la carte syntax types
, Data.Syntax
2017-03-26 22:34:44 +03:00
, Data.Syntax.Comment
2017-03-27 00:31:10 +03:00
, Data.Syntax.Declaration
, Data.Syntax.Directive
, Data.Syntax.Expression
, Data.Syntax.Literal
2017-03-27 00:31:50 +03:00
, Data.Syntax.Statement
2017-03-29 23:23:02 +03:00
, Data.Syntax.Type
2017-09-27 19:37:37 +03:00
, Data.Term
-- Diffing algorithms & interpretation thereof
2017-11-27 19:41:50 +03:00
, Diffing.Algorithm
2017-11-27 19:51:39 +03:00
, Diffing.Algorithm.RWS
, Diffing.Algorithm.RWS.FeatureVector
2017-11-27 19:48:39 +03:00
, Diffing.Algorithm.SES
, Diffing.Interpreter
-- Language-specific grammar/syntax types, & assignments
2017-10-11 01:24:25 +03:00
, Language.Markdown.Assignment
, Language.Markdown.Syntax
2017-08-23 00:48:18 +03:00
, Language.Go.Grammar
2017-10-11 20:12:32 +03:00
, Language.Go.Assignment
, Language.Go.Syntax
2017-11-21 23:48:29 +03:00
, Language.Go.Type
, Language.Haskell.Grammar
, Language.Haskell.Assignment
, Language.Haskell.Syntax
, Language.Haskell.Syntax.Constructor
, Language.Haskell.Syntax.Haskell
, Language.Haskell.Syntax.Identifier
, Language.Haskell.Syntax.Pattern
, Language.Haskell.Syntax.QuasiQuote
, Language.Haskell.Syntax.Type
2017-07-17 19:52:50 +03:00
, Language.JSON.Grammar
2017-10-11 01:14:57 +03:00
, Language.JSON.Assignment
2018-08-22 02:15:08 +03:00
, Language.JSON.PrettyPrint
2018-08-28 01:06:51 +03:00
, Language.MiniRuby.Assignment
2018-08-28 19:12:29 +03:00
, Language.MiniPython.Assignment
2017-05-17 21:08:54 +03:00
, Language.Ruby.Grammar
2017-10-11 01:36:09 +03:00
, Language.Ruby.Assignment
2018-08-22 02:15:08 +03:00
, Language.Ruby.PrettyPrint
2018-08-28 19:12:44 +03:00
, Language.Ruby.Syntax
2017-10-11 01:55:42 +03:00
, Language.TypeScript.Assignment
, Language.TypeScript.Grammar
2018-07-20 00:05:44 +03:00
, Language.TypeScript.Resolution
, Language.TypeScript.Syntax
, Language.TypeScript.Syntax.JavaScript
2018-07-20 00:05:44 +03:00
, Language.TypeScript.Syntax.JSX
, Language.TypeScript.Syntax.TypeScript
2017-12-15 22:14:08 +03:00
, Language.PHP.Assignment
, Language.PHP.Grammar
, Language.PHP.Syntax
2017-10-11 01:26:29 +03:00
, Language.Python.Assignment
2017-05-17 22:32:07 +03:00
, Language.Python.Grammar
, Language.Python.PrettyPrint
2017-05-12 02:45:05 +03:00
, Language.Python.Syntax
2018-03-16 00:57:06 +03:00
, Language.Java.Assignment
, Language.Java.Grammar
, Language.Java.Syntax
2018-08-15 00:15:18 +03:00
, Matching.Core
, Numeric.Exts
-- Parser glue
2017-11-27 21:24:45 +03:00
, Parsing.CMark
, Parsing.Parser
2017-11-27 21:24:45 +03:00
, Parsing.TreeSitter
2018-02-26 21:16:56 +03:00
, Paths_semantic
-- Rendering formats
, Rendering.Graph
2017-11-27 21:30:38 +03:00
, Rendering.JSON
, Rendering.Renderer
, Rendering.Symbol
2017-11-27 21:30:38 +03:00
, Rendering.TOC
, Reprinting.Tokenize
, Reprinting.Translate
2018-08-03 19:47:54 +03:00
, Reprinting.Typeset
2018-07-31 19:44:20 +03:00
, Reprinting.Pipeline
-- High-level flow & operational functionality (logging, stats, etc.)
, Semantic.Analysis
, Semantic.AST
, Semantic.CLI
2018-06-08 20:48:38 +03:00
, Semantic.Config
, Semantic.Diff
2018-04-04 18:23:21 +03:00
, Semantic.Distribute
2018-06-07 02:17:44 +03:00
, Semantic.Env
2018-04-09 20:57:12 +03:00
, Semantic.Graph
2017-11-27 21:09:03 +03:00
, Semantic.IO
, Semantic.Parse
, Semantic.REPL
, Semantic.Resolution
2017-05-29 20:11:17 +03:00
, Semantic.Task
, Semantic.Task.Files
, Semantic.Telemetry
2018-06-14 02:39:13 +03:00
, Semantic.Telemetry.AsyncQueue
, Semantic.Telemetry.Haystack
, Semantic.Telemetry.Log
, Semantic.Telemetry.Stat
2018-09-14 00:20:42 +03:00
, Semantic.Timeout
, Semantic.Util
, Semantic.Util.Pretty
2018-08-24 20:35:38 +03:00
, Semantic.Util.Rewriting
, Semantic.Version
-- Serialization
, Serializing.DOT
, Serializing.Format
, Serializing.SExpression
2018-10-31 18:34:38 +03:00
, Tags.Taggable
, Tags.Tagging
-- Custom Prelude
2018-05-23 21:04:15 +03:00
, Prologue
2016-10-06 04:47:47 +03:00
build-depends: base >= 4.8 && < 5
, aeson
2018-02-07 20:54:15 +03:00
, algebraic-graphs
2017-05-19 23:03:44 +03:00
, ansi-terminal
, array
2017-04-22 01:40:37 +03:00
, async
, attoparsec
2016-03-18 03:07:28 +03:00
, bifunctors
2015-12-15 19:47:52 +03:00
, bytestring
2017-08-03 10:22:40 +03:00
, cmark-gfm
2015-11-18 02:03:25 +03:00
, containers
2018-06-08 20:12:45 +03:00
, cryptohash
Add NFData instances to enable more accurate benchmarking. Because we're getting serious about benchmarking in the run-up to Windrose, it's time to bring in the `deepseq` package to ensure that benchmarks can fully evaluate the result of a test case. The `deepseq` package provides an `NFData` typeclass: ``` class NFData a where rnf :: a -> () ``` Instances use the `seq` combinator to ensure that the argument to `rnf` is fully evaluated, returning (). If there is a `Generic` instance for `a`, the implementation can be omitted. This patch adds NFData for every syntax node, graph vertex, environment data structures, and exceptions. It is long, but the work is very straightforward, so don't panick. The benchmark suite (`stack bench`) now produces more accurate results. The benchmarks previously mimicked `rnf` by calling `show` on the result of an evaluation or graph construction; now that we have actual `NFData` instances we can use the `nfIO` combinator from criterion. This has sped up the evaluation benchmarks and reduced their memory consumption, while it has slowed down the call graph benchmarks, as those benchmarks weren't evaluating the whole of the graph. Unfortunately, this patch increases compile times, as we have to derive a few more Generic instances. I wish this weren't the case, but there's little we can do about it now. In the future I have some plans for how to reduce compile time, and I bet that those gains will at least nullify the speed hit from this patch. Now that we have NFData instances for every data type, we can start benchmarking assignments, in preparation for fixing #2205. This patch also pulls in updates to `effects` and `fastsum` that add appropriate NFData instances for the data they vend.
2018-10-17 21:08:47 +03:00
, deepseq
2016-02-27 01:56:38 +03:00
, directory
, directory-tree
, fastsum
, filepath
2016-10-06 04:47:47 +03:00
, free
, freer-cofreer
, fused-effects
, ghc-prim
2016-10-06 19:03:06 +03:00
, gitrev
2017-10-17 19:48:27 +03:00
, Glob
2016-06-22 00:24:18 +03:00
, hashable
2018-08-03 16:25:52 +03:00
, haskeline
, hscolour
2018-06-08 20:12:45 +03:00
, http-client
, http-client-tls
, http-types
, kdt
, machines
, mersenne-random-pure64
2016-10-06 04:47:47 +03:00
, mtl
2017-10-04 06:38:36 +03:00
, network
, network-uri
2016-10-06 04:47:47 +03:00
, optparse-applicative
2017-04-04 17:57:18 +03:00
, parallel
2017-08-06 18:21:35 +03:00
, parsers
2018-07-31 19:44:20 +03:00
, prettyprinter
, pretty-show
2018-09-14 19:47:21 +03:00
, profunctors
2016-10-06 04:47:47 +03:00
, recursion-schemes
2018-03-07 19:27:17 +03:00
, reducers
, scientific
2018-03-14 16:30:45 +03:00
, semigroupoids
, semilattices
2017-04-03 22:26:28 +03:00
, split
, stm-chans
, template-haskell
2015-12-15 19:47:52 +03:00
, text >= 1.2.1.3
, these
, time
2017-07-31 18:56:17 +03:00
, unix
, unordered-containers
2018-06-13 19:47:35 +03:00
, vector
2018-06-15 18:06:26 +03:00
, proto3-suite
, proto3-wire
, haskell-tree-sitter
2017-08-11 15:03:27 +03:00
, tree-sitter-go
, tree-sitter-haskell
2017-08-11 15:03:55 +03:00
, tree-sitter-json
2017-12-15 22:14:08 +03:00
, tree-sitter-php
2017-08-11 15:06:08 +03:00
, tree-sitter-python
2017-08-11 15:06:37 +03:00
, tree-sitter-ruby
2017-08-11 15:07:03 +03:00
, tree-sitter-typescript
2018-03-16 01:53:55 +03:00
, tree-sitter-java
2015-11-18 01:44:16 +03:00
default-language: Haskell2010
default-extensions: DataKinds
, DeriveFoldable
2018-03-16 20:15:59 +03:00
, DeriveFunctor
, DeriveGeneric
, DeriveTraversable
, FlexibleContexts
, FlexibleInstances
, MonadFailDesugaring
, MultiParamTypeClasses
2018-03-16 20:15:59 +03:00
, OverloadedStrings
, RecordWildCards
, StandaloneDeriving
2018-03-16 20:15:59 +03:00
, StrictData
, TypeApplications
if flag(release)
ghc-options: -Wall -Werror -Wmissing-export-lists -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-name-shadowing -O1 -j -DCOMPUTE_GIT_SHA
else
ghc-options: -Wall -Wmissing-export-lists -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-name-shadowing -O0 -j +RTS -A128m -n2m -RTS
ghc-prof-options: -fprof-auto
2015-11-18 01:44:16 +03:00
2017-04-03 19:28:53 +03:00
executable semantic
2016-10-06 02:17:46 +03:00
hs-source-dirs: app
main-is: Main.hs
if flag(release)
ghc-options: -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m" -static -j -O1 -DCOMPUTE_GIT_SHA
else
ghc-options: -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m" -j -O0 -dynamic
2016-10-06 02:17:46 +03:00
cc-options: -DU_STATIC_IMPLEMENTATION=1
cpp-options: -DU_STATIC_IMPLEMENTATION=1
build-depends: base
2018-02-26 21:16:56 +03:00
, semantic
2016-10-06 02:17:46 +03:00
default-language: Haskell2010
2017-07-28 21:37:02 +03:00
default-extensions: FlexibleInstances, OverloadedStrings, RecordWildCards
2016-10-06 02:17:46 +03:00
2016-09-15 00:12:06 +03:00
test-suite test
2015-11-18 01:44:16 +03:00
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
2018-05-07 21:20:56 +03:00
other-modules: Analysis.Go.Spec
, Analysis.PHP.Spec
, Analysis.Python.Spec
2018-03-14 02:19:26 +03:00
, Analysis.Ruby.Spec
2018-03-10 02:54:52 +03:00
, Analysis.TypeScript.Spec
2018-05-07 21:20:56 +03:00
, Assigning.Assignment.Spec
2018-05-07 21:21:05 +03:00
, Control.Abstract.Evaluator.Spec
2018-09-14 20:08:08 +03:00
, Control.Rewriting.Spec
, Data.Abstract.Path.Spec
2018-10-31 20:19:43 +03:00
, Data.Abstract.Name.Spec
2018-07-20 16:52:43 +03:00
, Data.Diff.Spec
, Data.Functor.Classes.Generic.Spec
, Data.Functor.Listable
2018-10-31 19:20:38 +03:00
, Data.Graph.Spec
2018-07-20 16:52:43 +03:00
, Data.Mergeable
2018-10-31 19:46:52 +03:00
, Data.Range.Spec
, Data.Scientific.Spec
2018-10-31 22:47:30 +03:00
, Data.Semigroup.App.Spec
2017-11-27 21:49:52 +03:00
, Data.Source.Spec
2017-11-27 22:02:03 +03:00
, Data.Term.Spec
2017-11-27 21:48:43 +03:00
, Diffing.Algorithm.RWS.Spec
2017-11-27 21:51:05 +03:00
, Diffing.Algorithm.SES.Spec
2017-11-27 22:03:45 +03:00
, Diffing.Interpreter.Spec
2018-07-16 18:07:40 +03:00
, Graphing.Calls.Spec
2017-11-27 22:06:12 +03:00
, Integration.Spec
, Matching.Go.Spec
Give Control.Matching API better ergonomics. Given that @tclem and I have found the matcher API frustrating, I've taken a stab at improving its ergonomics, and I've found some success in separating composition of matchers from predicate-based narrowing thereof. The biggest change here is the elimination of the old `match` combinator, which proved to be clumsy in that it complected narrowing and composition. Top-down matching combinators are now written with the `need` combinator and the `>>>` combinator, which is more readable and more versatile. Here's a matcher that accepts functions with Python docstrings: ```haskell docstringMatcher :: ( Decl.Function :< fs , [] :< fs , Lit.TextElement :< fs , term ~ Term (Sum fs) ann ) => Matcher term term docstringMatcher = target <* (need Decl.functionBody >>> narrow @[] >>> mhead >>> narrow @Lit.TextElement >>> ensure Lit.isTripleQuoted)) ``` Pretty readable, right? Each step of the tree regular expression - choosing function bodies, ensuring said bodies are lists, examining the first element, and choosing only TextElements containing triple-quoted strings - is made implicit. The old way would have looked something like this: ```haskell docstringMatcher = target <* match Decl.functionBody $ narrow $ matchM listToMaybe $ target <* ensure Lit.isTripleQuoted ``` which is a good deal more disorganized and less flexible in the quite-common case of applying functions during a matching pass. Separating the act of composition from function application is a big win here. Further comments are inline.
2018-11-03 02:25:29 +03:00
, Matching.Python.Spec
, Numeric.Spec
2018-06-05 19:07:47 +03:00
, Proto3.Roundtrip
2018-07-31 17:43:46 +03:00
, Reprinting.Spec
2017-11-27 22:04:58 +03:00
, Rendering.TOC.Spec
2017-11-27 22:00:53 +03:00
, Semantic.Spec
2017-11-27 21:57:25 +03:00
, Semantic.CLI.Spec
2017-11-27 21:52:48 +03:00
, Semantic.IO.Spec
2017-11-27 21:58:23 +03:00
, Semantic.Stat.Spec
2018-11-02 23:55:30 +03:00
, Tags.Spec
, SpecHelpers
, Test.Hspec.LeanCheck
2017-02-23 07:05:20 +03:00
build-depends: aeson
2018-07-16 18:07:40 +03:00
, algebraic-graphs
, async
2017-02-03 23:57:05 +03:00
, base
2016-03-22 01:53:57 +03:00
, bifunctors
2017-03-09 00:56:08 +03:00
, bytestring
2018-06-05 19:07:47 +03:00
, containers
2018-05-07 00:22:32 +03:00
, fastsum
2016-02-17 00:38:31 +03:00
, filepath
2017-07-28 21:37:02 +03:00
, free
, fused-effects
2016-02-17 00:38:31 +03:00
, Glob
2018-05-16 23:19:08 +03:00
, hashable
2017-04-18 18:06:24 +03:00
, haskell-tree-sitter
, hspec >= 2.4.1
2017-01-08 07:16:27 +03:00
, hspec-core
2016-10-06 04:47:47 +03:00
, hspec-expectations-pretty-diff
2017-02-14 17:57:21 +03:00
, HUnit
2017-01-08 07:16:27 +03:00
, leancheck
2018-09-12 01:54:37 +03:00
, machines
2016-05-21 07:07:35 +03:00
, mtl
2017-10-04 21:40:39 +03:00
, network
2018-06-05 19:07:47 +03:00
, proto3-suite
, proto3-wire
, recursion-schemes >= 4.1
2018-06-15 18:40:26 +03:00
, semilattices
2018-02-26 21:16:56 +03:00
, semantic
, scientific
2015-12-15 22:53:03 +03:00
, text >= 1.2.1.3
, these
if flag(release)
ghc-options: -threaded -rtsopts -with-rtsopts=-N -j -O0
else
ghc-options: -threaded -rtsopts -with-rtsopts=-N -j -O0 -dynamic
2015-11-18 01:44:16 +03:00
default-language: Haskell2010
default-extensions: DataKinds
, DeriveFunctor
, DeriveGeneric
, FlexibleContexts
, FlexibleInstances
, MonadFailDesugaring
, MultiParamTypeClasses
, OverloadedStrings
, RecordWildCards
, StandaloneDeriving
, TypeApplications
2015-11-18 01:44:16 +03:00
2018-05-21 18:17:11 +03:00
test-suite lint
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Lint.hs
default-language: Haskell2010
ghc-options: -dynamic -threaded -j
build-depends: base
, hlint
test-suite parse-examples
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Examples.hs
default-language: Haskell2010
ghc-options: -threaded -rtsopts -with-rtsopts=-N -j
build-depends: base
, bytestring
, directory
, fastsum
, filepath
, fused-effects
, Glob
, hspec >= 2.4.1
, hspec-core
, hspec-expectations-pretty-diff
, process
, semantic
default-extensions: RecordWildCards
2018-09-18 23:00:31 +03:00
, FlexibleContexts
2018-03-08 03:34:20 +03:00
benchmark evaluation
Add NFData instances to enable more accurate benchmarking. Because we're getting serious about benchmarking in the run-up to Windrose, it's time to bring in the `deepseq` package to ensure that benchmarks can fully evaluate the result of a test case. The `deepseq` package provides an `NFData` typeclass: ``` class NFData a where rnf :: a -> () ``` Instances use the `seq` combinator to ensure that the argument to `rnf` is fully evaluated, returning (). If there is a `Generic` instance for `a`, the implementation can be omitted. This patch adds NFData for every syntax node, graph vertex, environment data structures, and exceptions. It is long, but the work is very straightforward, so don't panick. The benchmark suite (`stack bench`) now produces more accurate results. The benchmarks previously mimicked `rnf` by calling `show` on the result of an evaluation or graph construction; now that we have actual `NFData` instances we can use the `nfIO` combinator from criterion. This has sped up the evaluation benchmarks and reduced their memory consumption, while it has slowed down the call graph benchmarks, as those benchmarks weren't evaluating the whole of the graph. Unfortunately, this patch increases compile times, as we have to derive a few more Generic instances. I wish this weren't the case, but there's little we can do about it now. In the future I have some plans for how to reduce compile time, and I bet that those gains will at least nullify the speed hit from this patch. Now that we have NFData instances for every data type, we can start benchmarking assignments, in preparation for fixing #2205. This patch also pulls in updates to `effects` and `fastsum` that add appropriate NFData instances for the data they vend.
2018-10-17 21:08:47 +03:00
hs-source-dirs: bench/evaluation
2018-05-21 18:17:11 +03:00
type: exitcode-stdio-1.0
main-is: Main.hs
ghc-options: -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m -T" -static -j -O1
2018-05-21 18:17:11 +03:00
cc-options: -DU_STATIC_IMPLEMENTATION=1
cpp-options: -DU_STATIC_IMPLEMENTATION=1
default-language: Haskell2010
build-depends: base
, criterion
, semantic
2018-03-08 03:34:20 +03:00
2015-11-18 01:44:16 +03:00
source-repository head
type: git
2018-02-26 21:16:56 +03:00
location: https://github.com/github/semantic