/
plutus-core.cabal
600 lines (577 loc) · 17.6 KB
/
plutus-core.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
cabal-version: 2.4
name: plutus-core
version: 0.1.0.0
license: Apache-2.0
license-files:
LICENSE
NOTICE
maintainer: michael.peyton-jones@iohk.io
author: Plutus Core Team
tested-with: ghc ==8.2.2 ghc ==8.4.3 ghc ==8.6.1
synopsis: Language library for Plutus Core
description:
Pretty-printer, parser, and typechecker for Plutus Core.
category: Language, Plutus
build-type: Simple
extra-doc-files: README.md
extra-source-files:
cost-model/data/builtinCostModel.json
cost-model/data/cekMachineCosts.json
cost-model/data/benching.csv
cost-model/data/*.R
source-repository head
type: git
location: https://github.com/input-output-hk/plutus
common lang
default-language: Haskell2010
default-extensions: ExplicitForAll FlexibleContexts ScopedTypeVariables
DeriveGeneric StandaloneDeriving DeriveLift
GeneralizedNewtypeDeriving DeriveFunctor DeriveFoldable
DeriveTraversable DerivingStrategies DerivingVia
ghc-options: -Wall -Wnoncanonical-monad-instances
-Wincomplete-uni-patterns -Wincomplete-record-updates
-Wredundant-constraints -Widentities
-Wnoncanonical-monoid-instances
-Wunused-packages
library
import: lang
exposed-modules:
PlutusCore
PlutusCore.Check.Normal
PlutusCore.Check.Scoping
PlutusCore.Check.Uniques
PlutusCore.Check.Value
PlutusCore.Constant
PlutusCore.Constant.Dynamic.Emit
PlutusCore.Core
PlutusCore.Data
PlutusCore.DataFilePaths
PlutusCore.DeBruijn
PlutusCore.Default
PlutusCore.Error
PlutusCore.Evaluation.Machine.BuiltinCostModel
PlutusCore.Evaluation.Machine.Ck
PlutusCore.Evaluation.Machine.CostModelInterface
PlutusCore.Evaluation.Machine.ExBudget
PlutusCore.Evaluation.Machine.ExMemory
PlutusCore.Evaluation.Machine.Exception
PlutusCore.Evaluation.Machine.MachineParameters
PlutusCore.Evaluation.Result
PlutusCore.Examples.Builtins
PlutusCore.Examples.Data.Data
PlutusCore.Examples.Data.InterList
PlutusCore.Examples.Data.List
PlutusCore.Examples.Data.Pair
PlutusCore.Examples.Data.Shad
PlutusCore.Examples.Data.TreeForest
PlutusCore.Examples.Data.Vec
PlutusCore.Examples.Everything
PlutusCore.Flat
PlutusCore.FsTree
PlutusCore.Generators
PlutusCore.Generators.AST
PlutusCore.Generators.Interesting
PlutusCore.Generators.NEAT.Common
PlutusCore.Generators.NEAT.Spec
PlutusCore.Generators.NEAT.Term
PlutusCore.Generators.NEAT.Type
PlutusCore.Generators.Test
PlutusCore.Lexer
PlutusCore.Mark
PlutusCore.MkPlc
PlutusCore.Name
PlutusCore.Normalize
PlutusCore.Normalize.Internal
PlutusCore.Parser
PlutusCore.Pretty
PlutusCore.Quote
PlutusCore.Rename
PlutusCore.Rename.Internal
PlutusCore.Rename.Monad
PlutusCore.StdLib.Data.Bool
PlutusCore.StdLib.Data.ChurchNat
PlutusCore.StdLib.Data.Data
PlutusCore.StdLib.Data.Function
PlutusCore.StdLib.Data.Integer
PlutusCore.StdLib.Data.List
PlutusCore.StdLib.Data.Nat
PlutusCore.StdLib.Data.Pair
PlutusCore.StdLib.Data.ScottList
PlutusCore.StdLib.Data.ScottUnit
PlutusCore.StdLib.Data.Sum
PlutusCore.StdLib.Data.Unit
PlutusCore.StdLib.Everything
PlutusCore.StdLib.Meta
PlutusCore.StdLib.Meta.Data.Function
PlutusCore.StdLib.Meta.Data.Tuple
PlutusCore.StdLib.Type
PlutusCore.Subst
PlutusIR
PlutusIR.Analysis.RetainedSize
PlutusIR.Compiler
PlutusIR.Compiler.Definitions
PlutusIR.Compiler.Names
PlutusIR.Core
PlutusIR.Core.Instance
PlutusIR.Core.Instance.Flat
PlutusIR.Core.Instance.Pretty
PlutusIR.Core.Instance.Scoping
PlutusIR.Core.Plated
PlutusIR.Core.Type
PlutusIR.Error
PlutusIR.Generators.AST
PlutusIR.Mark
PlutusIR.MkPir
PlutusIR.Parser
PlutusIR.Purity
PlutusIR.Subst
PlutusIR.Transform.Beta
PlutusIR.Transform.DeadCode
PlutusIR.Transform.Inline
PlutusIR.Transform.LetFloat
PlutusIR.Transform.LetMerge
PlutusIR.Transform.RecSplit
PlutusIR.Transform.NonStrict
PlutusIR.Transform.Rename
PlutusIR.Transform.Substitute
PlutusIR.Transform.ThunkRecursions
PlutusIR.Transform.Unwrap
PlutusIR.TypeCheck
UntypedPlutusCore
UntypedPlutusCore.DeBruijn
UntypedPlutusCore.Evaluation.HOAS
UntypedPlutusCore.Evaluation.Machine.Cek
UntypedPlutusCore.Evaluation.Machine.Cek.Internal
UntypedPlutusCore.Parser
UntypedPlutusCore.Rename
UntypedPlutusCore.Check.Uniques
UntypedPlutusCore.Core.Type
Common
Crypto
Data.ByteString.Hash
Data.SatInt
Data.Text.Prettyprint.Doc.Custom
ErrorCode
PlcTestUtils
PlutusPrelude
Universe
build-tool-depends: alex:alex -any, happy:happy >=1.17.1
hs-source-dirs:
plutus-core/src
plutus-core/stdlib
plutus-core/examples
plutus-ir/src
untyped-plutus-core/src
generators
prelude
common
other-modules:
PlutusCore.Analysis.Definitions
PlutusCore.Constant.Function
PlutusCore.Constant.Meaning
PlutusCore.Constant.Typed
PlutusCore.Core.Instance
PlutusCore.Core.Instance.Eq
PlutusCore.Core.Instance.Pretty
PlutusCore.Core.Instance.Pretty.Classic
PlutusCore.Core.Instance.Pretty.Common
PlutusCore.Core.Instance.Pretty.Default
PlutusCore.Core.Instance.Pretty.Plc
PlutusCore.Core.Instance.Pretty.Readable
PlutusCore.Core.Instance.Recursive
PlutusCore.Core.Instance.Scoping
PlutusCore.Core.Plated
PlutusCore.Core.Type
PlutusCore.DeBruijn.Internal
PlutusCore.Default.Builtins
PlutusCore.Default.Universe
PlutusCore.Eq
PlutusCore.Evaluation.Machine.ExBudgetingDefaults
PlutusCore.Generators.Internal.Denotation
PlutusCore.Generators.Internal.Dependent
PlutusCore.Generators.Internal.Entity
PlutusCore.Generators.Internal.TypeEvalCheck
PlutusCore.Generators.Internal.TypedBuiltinGen
PlutusCore.Generators.Internal.Utils
PlutusCore.Lexer.Type
PlutusCore.Parsable
PlutusCore.Parser.Internal
PlutusCore.ParserCommon
PlutusCore.Pretty.Classic
PlutusCore.Pretty.ConfigName
PlutusCore.Pretty.ConfigName
PlutusCore.Pretty.Default
PlutusCore.Pretty.Plc
PlutusCore.Pretty.PrettyConst
PlutusCore.Pretty.Readable
PlutusCore.Pretty.Utils
PlutusCore.Size
PlutusCore.TypeCheck
PlutusCore.TypeCheck.Internal
PlutusIR.Analysis.Dependencies
PlutusIR.Analysis.Size
PlutusIR.Analysis.Usages
PlutusIR.Compiler.Datatype
PlutusIR.Compiler.Error
PlutusIR.Compiler.Let
PlutusIR.Compiler.Lower
PlutusIR.Compiler.Provenance
PlutusIR.Compiler.Recursion
PlutusIR.Compiler.Types
PlutusIR.Normalize
PlutusIR.TypeCheck.Internal
UntypedPlutusCore.Analysis.Definitions
UntypedPlutusCore.Core
UntypedPlutusCore.Core.Instance
UntypedPlutusCore.Core.Instance.Eq
UntypedPlutusCore.Core.Instance.Flat
UntypedPlutusCore.Core.Instance.Pretty
UntypedPlutusCore.Core.Instance.Pretty.Classic
UntypedPlutusCore.Core.Instance.Pretty.Default
UntypedPlutusCore.Core.Instance.Pretty.Plc
UntypedPlutusCore.Core.Instance.Pretty.Readable
UntypedPlutusCore.Core.Instance.Recursive
UntypedPlutusCore.Core.Plated
UntypedPlutusCore.Evaluation.Machine.Cek.CekMachineCosts
UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode
UntypedPlutusCore.Evaluation.Machine.Cek.EmitterMode
UntypedPlutusCore.Mark
UntypedPlutusCore.Rename.Internal
UntypedPlutusCore.Size
UntypedPlutusCore.Subst
UntypedPlutusCore.Transform.Simplify
Data.Aeson.Flatten
Data.Aeson.THReader
Data.Functor.Foldable.Monadic
Universe.Core
build-depends:
Stream -any,
aeson -any,
algebraic-graphs >= 0.3,
array -any,
barbies -any,
base >=4.9 && <5,
bifunctors -any,
bimap -any,
bytestring -any,
cardano-crypto,
cassava -any,
cborg -any,
composition-prelude >=1.1.0.1,
containers -any,
cryptonite -any,
data-default-class -any,
deepseq -any,
dependent-map >=0.4.0.0,
dependent-sum-template -any,
deriving-aeson >= 0.2.3,
deriving-compat -any,
dlist -any,
dom-lt -any,
exceptions -any,
extra -any,
filepath -any,
flat -any,
ghc-prim -any,
hashable,
hedgehog >=1.0,
integer-gmp -any,
lazy-search -any,
lens -any,
megaparsec -any,
mmorph -any,
monoidal-containers,
mtl -any,
parser-combinators >= 0.4.0,
prettyprinter >=1.1.0.1,
prettyprinter-configurable -any,
primitive -any,
recursion-schemes -any,
semigroupoids -any,
semigroups -any,
serialise -any,
size-based -any,
some < 1.0.3,
sop-core -any,
tasty -any,
tasty-golden -any,
tasty-hedgehog -any,
tasty-hunit -any,
template-haskell -any,
text -any,
th-lift -any,
th-lift-instances -any,
th-utilities -any,
time -any,
transformers -any,
unordered-containers -any,
witherable -any,
word-array -any,
cardano-crypto-class -any
test-suite satint-test
import: lang
type: exitcode-stdio-1.0
main-is: TestSatInt.hs
ghc-options: -Wall
build-depends: base >=4.9 && <5,
test-framework,
test-framework-hunit,
test-framework-quickcheck2,
HUnit,
QuickCheck,
plutus-core
default-language: Haskell2010
hs-source-dirs: plutus-core/satint-test
test-suite plutus-core-test
import: lang
type: exitcode-stdio-1.0
main-is: Spec.hs
hs-source-dirs: plutus-core/test
ghc-options: -threaded -rtsopts -with-rtsopts=-N
other-modules:
Check.Spec
CostModelInterface.Spec
Evaluation.Machines
Evaluation.Spec
Names.Spec
Normalization.Check
Normalization.Type
Pretty.Readable
TypeSynthesis.Spec
default-language: Haskell2010
build-depends:
base -any,
bytestring -any,
containers -any,
filepath -any,
flat -any,
hedgehog -any,
plutus-core -any,
mmorph -any,
mtl -any,
prettyprinter -any,
tasty -any,
tasty-golden -any,
tasty-hedgehog -any,
tasty-hunit -any,
text -any,
transformers -any
test-suite plutus-ir-test
import: lang
type: exitcode-stdio-1.0
main-is: Spec.hs
hs-source-dirs: plutus-ir/test
other-modules:
NamesSpec
ParserSpec
TestLib
TransformSpec
TypeSpec
build-depends:
base >=4.9 && <5,
plutus-core -any,
filepath -any,
flat -any,
hedgehog -any,
lens -any,
megaparsec -any,
mmorph -any,
mtl -any,
prettyprinter -any,
tasty -any,
tasty-hedgehog -any,
text -any
test-suite untyped-plutus-core-test
import: lang
type: exitcode-stdio-1.0
main-is: Spec.hs
hs-source-dirs: untyped-plutus-core/test
other-modules:
Evaluation.Builtins
Evaluation.Builtins.Common
Evaluation.Builtins.Definition
Evaluation.Builtins.MakeRead
Evaluation.Golden
Evaluation.Machines
Transform.Simplify
build-depends:
base >=4.9 && <5,
bytestring -any,
hedgehog -any,
flat -any,
mtl -any,
plutus-core -any,
prettyprinter -any,
tasty -any,
tasty-golden -any,
tasty-hedgehog -any,
tasty-hunit -any,
text -any
executable plc
import: lang
main-is: plc/Main.hs
hs-source-dirs: executables
other-modules:
Common
Parsers
build-depends:
plutus-core -any,
base <5,
bytestring -any,
deepseq -any,
flat -any,
monoidal-containers -any,
mtl -any,
optparse-applicative -any,
prettyprinter -any,
text -any,
transformers -any
executable uplc
import: lang
main-is: uplc/Main.hs
hs-source-dirs: executables
other-modules:
Common
Parsers
build-depends:
plutus-core -any,
aeson -any,
base <5,
bytestring -any,
deepseq -any,
flat -any,
monoidal-containers -any,
mtl -any,
optparse-applicative -any,
prettyprinter -any,
split -any,
text -any,
transformers -any
executable pir
import: lang
main-is: pir/Main.hs
hs-source-dirs: executables
build-depends:
plutus-core -any,
base <5,
bytestring -any,
flat -any,
lens -any,
optparse-applicative -any,
transformers -any
-- This runs the microbenchmarks used to generate the cost models for built-in functions,
-- saving the results in cost-model/data/benching.csv. It will take several hours.
benchmark cost-model-budgeting-bench
import: lang
type: exitcode-stdio-1.0
main-is: Bench.hs
other-modules:
CriterionExtensions
Nops
hs-source-dirs: cost-model/budgeting-bench
default-language: Haskell2010
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Wincomplete-uni-patterns
-Wincomplete-record-updates -Wredundant-constraints -Widentities
build-depends:
plutus-core -any,
base -any,
bytestring -any,
criterion -any,
criterion-measurement -any,
deepseq -any,
directory -any,
hedgehog -any,
mtl -any,
optparse-applicative -any,
random -any
-- This reads the CSV data generated by cost-model-budgeting-bench, builds the models
-- using R, and saces them in cost-model/data/costModel.json
-- Benchmark sets the correct PWD and doesn't get run by `stack test`
benchmark update-cost-model
import: lang
type: exitcode-stdio-1.0
main-is: UpdateCostModel.hs
-- cost-model-creation should be its own library, but stack + HIE really don't like sub-libraries.
hs-source-dirs: cost-model/create-cost-model
default-language: Haskell2010
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Wincomplete-uni-patterns
-Wincomplete-record-updates -Wredundant-constraints -Widentities
build-depends:
plutus-core -any,
aeson-pretty -any,
barbies -any,
base -any,
bytestring -any,
cassava -any,
exceptions -any,
extra -any,
inline-r -any,
text -any,
vector -any
other-modules:
CostModelCreation
-- The cost models for builtins are generated using R and converted into a JSON
-- form that can later be used to construct Haskell functions. This tests
-- that the predictions of the Haskell version are identical to the R ones.
-- This test is problematic in CI: pretending that it's a benchmark will prevent
-- it from being run automatically but will still allow us to run it manually.
benchmark cost-model-test
import: lang
type: exitcode-stdio-1.0
main-is: TestCostModels.hs
hs-source-dirs: cost-model/test, cost-model/create-cost-model
default-language: Haskell2010
ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Wincomplete-uni-patterns
-Wincomplete-record-updates -Wredundant-constraints -Widentities
build-depends:
base -any,
plutus-core -any,
barbies -any,
bytestring -any,
cassava -any,
exceptions -any,
extra -any,
hedgehog -any,
inline-r -any,
mmorph -any,
text -any,
vector -any
other-modules:
CostModelCreation
library index-envs
import: lang
hs-source-dirs: index-envs/src
default-language: Haskell2010
exposed-modules:
Data.DeBruijnEnv
Data.RandomAccessList.SkewBinary
build-depends:
base -any,
containers -any,
-- broken for ral-0.2 conflic with cardano-binary:recursion-schemes
ral == 0.1
benchmark index-envs-bench
import: lang
type: exitcode-stdio-1.0
hs-source-dirs: index-envs/bench
default-language: Haskell2010
main-is: Main.hs
build-depends:
base -any,
index-envs -any,
criterion >= 1.5.9.0,
random >= 1.2.0,
-- broken for ral-0.2 conflic with cardano-binary:recursion-schemes
ral == 0.1
test-suite index-envs-test
import: lang
type: exitcode-stdio-1.0
hs-source-dirs: index-envs/test
default-language: Haskell2010
main-is: TestRAList.hs
build-depends:
base -any,
index-envs -any,
tasty -any,
tasty-hunit -any,
tasty-quickcheck -any