mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-12-17 04:44:39 +03:00
dae3ab11b1
There are two major changes in this patch. The first is that sequence maps now have special representations for point updates, of the sort produced by the 'update' and 'updateEnd' primtives. These updates are stored in a finite map, rather than as a functional-update thunk using lambdas; this reduces memory usage and improves time efficecy of sequences defined by sequences of updates. The second change is that the caching policy for sequences is changed to retain all previously-calculated values. This is a change from the previous LRU policy, which retained only a small finite number of previous values. Benchmarking showed that unbounded memoization was better for performance in essentially all cases over both an LRU and an adaptive caching strategy. The potential downside is that we may retain values longer than necessary. If this becomes a problem, we may need to revisit this decision.
258 lines
9.6 KiB
Plaintext
258 lines
9.6 KiB
Plaintext
Name: cryptol
|
|
Version: 2.4.0
|
|
Synopsis: Cryptol: The Language of Cryptography
|
|
Description: Cryptol is a domain-specific language for specifying cryptographic algorithms. A Cryptol implementation of an algorithm resembles its mathematical specification more closely than an implementation in a general purpose language. For more, see <http://www.cryptol.net/>.
|
|
License: BSD3
|
|
License-file: LICENSE
|
|
Author: Galois, Inc.
|
|
Maintainer: cryptol@galois.com
|
|
Homepage: http://www.cryptol.net/
|
|
Bug-reports: https://github.com/GaloisInc/cryptol/issues
|
|
Copyright: 2013-2016 Galois Inc.
|
|
Category: Language
|
|
Build-type: Simple
|
|
Cabal-version: >= 1.18
|
|
extra-source-files: bench/data/*.cry
|
|
|
|
data-files: *.cry Cryptol/*.cry
|
|
data-dir: lib
|
|
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/GaloisInc/cryptol.git
|
|
|
|
source-repository this
|
|
type: git
|
|
location: https://github.com/GaloisInc/cryptol.git
|
|
tag: 2.4.0
|
|
|
|
flag static
|
|
default: False
|
|
description: Create a statically-linked binary
|
|
|
|
flag relocatable
|
|
default: True
|
|
description: Don't use the Cabal-provided data directory for looking up Cryptol libraries. This is useful when the data directory can't be known ahead of time, like for a relocatable distribution.
|
|
|
|
flag server
|
|
default: False
|
|
description: Build with the ZeroMQ/JSON cryptol-server executable
|
|
|
|
library
|
|
Default-language:
|
|
Haskell98
|
|
Build-depends: base >= 4.8 && < 5,
|
|
base-compat >= 0.6,
|
|
bytestring >= 0.10,
|
|
array >= 0.4,
|
|
async >= 2.0,
|
|
containers >= 0.5,
|
|
deepseq >= 1.3,
|
|
directory >= 1.2.2.0,
|
|
filepath >= 1.3,
|
|
gitrev >= 1.0,
|
|
GraphSCC >= 1.0.4,
|
|
heredoc >= 0.2,
|
|
monad-control >= 1.0,
|
|
monadLib >= 3.7.2,
|
|
old-time >= 1.1,
|
|
presburger >= 1.3,
|
|
pretty >= 1.1,
|
|
process >= 1.2,
|
|
QuickCheck >= 2.7,
|
|
random >= 1.0.1,
|
|
sbv >= 5.12,
|
|
smtLib >= 1.0.7,
|
|
simple-smt >= 0.6.0,
|
|
syb >= 0.4,
|
|
text >= 1.1,
|
|
template-haskell,
|
|
tf-random >= 0.5,
|
|
transformers >= 0.3,
|
|
transformers-base >= 0.4,
|
|
utf8-string >= 0.3
|
|
|
|
Build-tools: alex, happy
|
|
hs-source-dirs: src
|
|
|
|
Exposed-modules: Cryptol.Prims.Syntax,
|
|
Cryptol.Prims.Eval,
|
|
|
|
Cryptol.Parser,
|
|
Cryptol.Parser.Lexer,
|
|
Cryptol.Parser.AST,
|
|
Cryptol.Parser.Position,
|
|
Cryptol.Parser.Names,
|
|
Cryptol.Parser.Name,
|
|
Cryptol.Parser.NoPat,
|
|
Cryptol.Parser.NoInclude,
|
|
Cryptol.Parser.Utils,
|
|
Cryptol.Parser.Unlit,
|
|
|
|
Cryptol.Utils.Ident,
|
|
Cryptol.Utils.PP,
|
|
Cryptol.Utils.Panic,
|
|
Cryptol.Utils.Debug,
|
|
Cryptol.Utils.Misc,
|
|
Cryptol.Version,
|
|
|
|
Cryptol.ModuleSystem,
|
|
Cryptol.ModuleSystem.Base,
|
|
Cryptol.ModuleSystem.Env,
|
|
Cryptol.ModuleSystem.Interface,
|
|
Cryptol.ModuleSystem.Monad,
|
|
Cryptol.ModuleSystem.Name,
|
|
Cryptol.ModuleSystem.NamingEnv,
|
|
Cryptol.ModuleSystem.Renamer,
|
|
|
|
Cryptol.TypeCheck,
|
|
Cryptol.TypeCheck.AST,
|
|
Cryptol.TypeCheck.Monad,
|
|
Cryptol.TypeCheck.Infer,
|
|
Cryptol.TypeCheck.InferTypes,
|
|
Cryptol.TypeCheck.Kind,
|
|
Cryptol.TypeCheck.Subst,
|
|
Cryptol.TypeCheck.Instantiate,
|
|
Cryptol.TypeCheck.Unify,
|
|
Cryptol.TypeCheck.Depends,
|
|
Cryptol.TypeCheck.PP,
|
|
Cryptol.TypeCheck.Solve,
|
|
Cryptol.TypeCheck.TypeMap,
|
|
Cryptol.TypeCheck.TypeOf,
|
|
Cryptol.TypeCheck.Sanity,
|
|
|
|
Cryptol.TypeCheck.Solver.InfNat,
|
|
Cryptol.TypeCheck.Solver.Class,
|
|
Cryptol.TypeCheck.Solver.Selector,
|
|
Cryptol.TypeCheck.Solver.Utils,
|
|
Cryptol.TypeCheck.Solver.Simplify,
|
|
|
|
Cryptol.TypeCheck.Solver.CrySAT,
|
|
Cryptol.TypeCheck.Solver.Numeric.AST,
|
|
Cryptol.TypeCheck.Solver.Numeric.ImportExport,
|
|
Cryptol.TypeCheck.Solver.Numeric.Defined,
|
|
Cryptol.TypeCheck.Solver.Numeric.Fin,
|
|
Cryptol.TypeCheck.Solver.Numeric.Interval,
|
|
Cryptol.TypeCheck.Solver.Numeric.Simplify,
|
|
Cryptol.TypeCheck.Solver.Numeric.Simplify1,
|
|
Cryptol.TypeCheck.Solver.Numeric.SimplifyExpr,
|
|
Cryptol.TypeCheck.Solver.Numeric.NonLin,
|
|
Cryptol.TypeCheck.Solver.Numeric.SMT,
|
|
|
|
Cryptol.Transform.MonoValues,
|
|
Cryptol.Transform.Specialize,
|
|
|
|
Cryptol.Eval,
|
|
Cryptol.Eval.Arch,
|
|
Cryptol.Eval.Env,
|
|
Cryptol.Eval.Monad,
|
|
Cryptol.Eval.Type,
|
|
Cryptol.Eval.Value,
|
|
|
|
Cryptol.Testing.Concrete,
|
|
Cryptol.Testing.Random,
|
|
|
|
Cryptol.Symbolic,
|
|
Cryptol.Symbolic.Prims,
|
|
Cryptol.Symbolic.Value,
|
|
|
|
Cryptol.REPL.Command,
|
|
Cryptol.REPL.Monad,
|
|
Cryptol.REPL.Trie
|
|
|
|
Other-modules: Cryptol.Parser.LexerUtils,
|
|
Cryptol.Parser.ParserUtils,
|
|
Cryptol.Prelude,
|
|
Paths_cryptol,
|
|
GitRev
|
|
|
|
GHC-options: -Wall -O2 -fsimpl-tick-factor=140
|
|
if impl(ghc >= 8.0.1)
|
|
ghc-options: -Wno-redundant-constraints
|
|
ghc-prof-options: -fprof-auto
|
|
|
|
if flag(relocatable)
|
|
cpp-options: -DRELOCATABLE
|
|
|
|
executable cryptol
|
|
Default-language:
|
|
Haskell98
|
|
Main-is: Main.hs
|
|
hs-source-dirs: cryptol
|
|
Other-modules: OptParser,
|
|
REPL.Haskeline,
|
|
REPL.Logo,
|
|
Paths_cryptol
|
|
build-depends: ansi-terminal
|
|
, base
|
|
, base-compat
|
|
, containers
|
|
, cryptol
|
|
, deepseq
|
|
, directory
|
|
, filepath
|
|
, haskeline
|
|
, monadLib
|
|
, monad-control
|
|
, process
|
|
, random
|
|
, sbv
|
|
, tf-random
|
|
, transformers
|
|
GHC-options: -Wall -O2 -threaded -rtsopts "-with-rtsopts=-N1 -A64m"
|
|
if impl(ghc >= 8.0.1)
|
|
ghc-options: -Wno-redundant-constraints
|
|
ghc-prof-options: -auto-all -rtsopts
|
|
|
|
if os(linux) && flag(static)
|
|
ld-options: -static -pthread
|
|
|
|
executable cryptol-server
|
|
main-is: Main.hs
|
|
hs-source-dirs: cryptol-server
|
|
other-modules: Cryptol.Aeson
|
|
default-language: Haskell2010
|
|
default-extensions: OverloadedStrings
|
|
GHC-options: -Wall -O2 -threaded -rtsopts "-with-rtsopts=-N1 -A64m"
|
|
if impl(ghc >= 8.0.1)
|
|
ghc-options: -Wno-redundant-constraints
|
|
ghc-prof-options: -auto-all -rtsopts
|
|
if os(linux) && flag(static)
|
|
ld-options: -static -pthread
|
|
if flag(server)
|
|
build-depends: aeson >= 0.10
|
|
, aeson-pretty >= 0.7
|
|
, base
|
|
, base-compat
|
|
, bytestring >= 0.10
|
|
, containers
|
|
, cryptol
|
|
, filepath
|
|
, monad-control
|
|
, optparse-applicative >= 0.12
|
|
, text
|
|
, transformers
|
|
, unix
|
|
, unordered-containers >= 0.2
|
|
, zeromq4-haskell >= 0.6
|
|
else
|
|
buildable: False
|
|
|
|
benchmark cryptol-bench
|
|
type: exitcode-stdio-1.0
|
|
main-is: Main.hs
|
|
hs-source-dirs: bench
|
|
default-language: Haskell2010
|
|
GHC-options: -Wall -O2 -threaded -rtsopts "-with-rtsopts=-N1 -A64m"
|
|
if impl(ghc >= 8.0.1)
|
|
ghc-options: -Wno-redundant-constraints
|
|
ghc-prof-options: -auto-all -rtsopts
|
|
if os(linux) && flag(static)
|
|
ld-options: -static -pthread
|
|
build-depends: base
|
|
, criterion
|
|
, cryptol
|
|
, deepseq
|
|
, sbv
|
|
, text
|