Skip to content

Commit 9ae3705

Browse files
authored
Merge pull request #200 from mlabs-haskell/szg251/tx-info
Add ScriptContext opaques for Rust and Haskell
2 parents de770f9 + 1cd6b41 commit 9ae3705

File tree

273 files changed

+21871
-6121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

273 files changed

+21871
-6121
lines changed

extras/dev-shells/build.nix

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
imports = [
3+
./plutus-haskell/build.nix
4+
./prelude-haskell/build.nix
5+
];
6+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake .#dev-plutus-haskell
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{ inputs, ... }:
2+
{
3+
perSystem = { config, system, ... }:
4+
let
5+
hsFlake = inputs.flake-lang.lib.${system}.haskellPlutusFlake {
6+
src = ./.;
7+
8+
name = "dev-plutus-haskell";
9+
10+
inherit (config.settings.haskell) index-state compiler-nix-name;
11+
12+
dependencies = [
13+
# Haskell native backend
14+
"${config.packages.lbr-prelude-haskell-src}"
15+
"${config.packages.lbf-prelude-haskell}"
16+
"${config.packages.lbr-plutus-haskell-src}"
17+
"${config.packages.lbf-plutus-haskell}"
18+
19+
# PlutusTx backend
20+
"${config.packages.lbr-plutustx-src}"
21+
"${config.packages.lbf-plutus-plutustx}"
22+
"${config.packages.lbf-prelude-plutustx}"
23+
24+
# Plutarch backend
25+
"${config.packages.lbr-plutarch-src}"
26+
"${config.packages.lbf-prelude-plutarch}"
27+
"${config.packages.lbf-plutus-plutarch}"
28+
29+
# Plutarch itself
30+
"${inputs.plutarch}"
31+
"${inputs.plutarch}/plutarch-extra"
32+
];
33+
34+
devShellTools = config.settings.shell.tools ++ [
35+
config.packages.lbf-prelude-to-haskell
36+
config.packages.lbf-plutus-to-haskell
37+
config.packages.lbf-plutus-to-plutarch
38+
config.packages.lbf-plutus-to-plutustx
39+
];
40+
41+
devShellHook = config.settings.shell.hook;
42+
};
43+
in
44+
{
45+
# Develop Plutus applications with Haskell, Plutarch and PlutusTx
46+
devShells.dev-plutus-haskell = hsFlake.devShell;
47+
packages.play-plutus-haskell-lib = hsFlake.packages."plutus-haskell:lib:plutus-haskell";
48+
};
49+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
packages: ./.
2+
3+
tests: true
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
cabal-version: 3.0
2+
name: plutus-haskell
3+
version: 0.1.0.0
4+
synopsis: Dev shell for LambdaBuffers Plutus Haskell
5+
author: Drazen Popovic
6+
maintainer: [email protected]
7+
8+
flag dev
9+
description: Enable non-strict compilation for development
10+
manual: True
11+
12+
common common-language
13+
ghc-options:
14+
-Wall -Wcompat -fprint-explicit-foralls -fprint-explicit-kinds
15+
-fwarn-missing-import-lists -Weverything -Wno-unsafe
16+
-Wno-missing-safe-haskell-mode -Wno-implicit-prelude
17+
-Wno-missing-kind-signatures -Wno-all-missed-specializations
18+
19+
if !flag(dev)
20+
ghc-options: -Werror
21+
22+
default-extensions:
23+
BangPatterns
24+
BinaryLiterals
25+
ConstrainedClassMethods
26+
ConstraintKinds
27+
DataKinds
28+
DeriveAnyClass
29+
DeriveDataTypeable
30+
DeriveFoldable
31+
DeriveFunctor
32+
DeriveGeneric
33+
DeriveLift
34+
DeriveTraversable
35+
DerivingStrategies
36+
DerivingVia
37+
DoAndIfThenElse
38+
DuplicateRecordFields
39+
EmptyCase
40+
EmptyDataDecls
41+
EmptyDataDeriving
42+
ExistentialQuantification
43+
ExplicitForAll
44+
ExplicitNamespaces
45+
FlexibleContexts
46+
FlexibleInstances
47+
ForeignFunctionInterface
48+
GADTSyntax
49+
GeneralizedNewtypeDeriving
50+
HexFloatLiterals
51+
ImportQualifiedPost
52+
InstanceSigs
53+
KindSignatures
54+
LambdaCase
55+
MonomorphismRestriction
56+
MultiParamTypeClasses
57+
NamedFieldPuns
58+
NamedWildCards
59+
NoStarIsType
60+
NumericUnderscores
61+
OverloadedLabels
62+
OverloadedStrings
63+
PackageImports
64+
PartialTypeSignatures
65+
PatternGuards
66+
PolyKinds
67+
PostfixOperators
68+
RankNTypes
69+
RecordWildCards
70+
RelaxedPolyRec
71+
ScopedTypeVariables
72+
StandaloneDeriving
73+
StandaloneKindSignatures
74+
TemplateHaskell
75+
TraditionalRecordSyntax
76+
TupleSections
77+
TypeApplications
78+
TypeFamilies
79+
TypeOperators
80+
TypeSynonymInstances
81+
ViewPatterns
82+
83+
default-language: Haskell2010
84+
85+
library
86+
import: common-language
87+
build-depends:
88+
, aeson >=2.2
89+
, base >=4.16
90+
, bytestring >=0.11
91+
, containers >=0.6
92+
, lbf-plutus >=0.1
93+
, lbf-plutus-plutarch >=0.1
94+
, lbf-plutus-plutustx >=0.1
95+
, lbf-prelude >=0.1
96+
, lbf-prelude-plutarch >=0.1
97+
, lbf-prelude-plutustx >=0.1
98+
, lbr-plutarch >=0.1
99+
, lbr-plutus >=0.1
100+
, lbr-plutustx >=0.1
101+
, lbr-prelude >=0.1
102+
, plutarch >=1.5
103+
, plutarch-extra >=1.2
104+
, plutus-ledger-api >=1.20
105+
, plutus-tx >=1.1
106+
, text >=2.0
107+
108+
hs-source-dirs: src
109+
exposed-modules: LambdaBuffers.Plutus.Play
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module LambdaBuffers.Plutus.Play () where
2+
3+
import "aeson" Data.Aeson ()
4+
import "bytestring" Data.ByteString ()
5+
import "containers" Data.Map ()
6+
import "containers" Data.Set ()
7+
import "lbf-prelude" LambdaBuffers.Prelude ()
8+
import "lbr-prelude" LambdaBuffers.Runtime.Prelude ()
9+
import "text" Data.Text ()
10+
11+
import "lbf-plutus" LambdaBuffers.Plutus.V1 ()
12+
import "lbr-plutus" LambdaBuffers.Runtime.Plutus ()
13+
14+
import "lbf-plutus-plutustx" LambdaBuffers.Plutus.V1.PlutusTx ()
15+
import "lbf-plutus-plutustx" LambdaBuffers.Plutus.V2.PlutusTx ()
16+
import "lbf-prelude-plutustx" LambdaBuffers.Prelude.PlutusTx ()
17+
import "lbr-plutustx" LambdaBuffers.Runtime.PlutusTx.List ()
18+
import "plutus-ledger-api" PlutusLedgerApi.Common ()
19+
import "plutus-tx" PlutusTx ()
20+
21+
import "lbf-plutus-plutarch" LambdaBuffers.Plutus.V1.Plutarch ()
22+
import "lbf-plutus-plutarch" LambdaBuffers.Plutus.V2.Plutarch ()
23+
import "lbf-prelude-plutarch" LambdaBuffers.Prelude.Plutarch ()
24+
import "lbr-plutarch" LambdaBuffers.Runtime.Plutarch ()
25+
import "plutarch" Plutarch ()
26+
import "plutarch-extra" Plutarch.Extra ()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake .#dev-prelude-haskell
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{ inputs, ... }:
2+
{
3+
perSystem = { config, system, ... }:
4+
let
5+
hsFlake = inputs.flake-lang.lib.${system}.haskellFlake {
6+
src = ./.;
7+
8+
name = "dev-prelude-haskell";
9+
10+
inherit (config.settings.haskell) index-state compiler-nix-name;
11+
12+
dependencies = [
13+
"${config.packages.lbr-prelude-haskell-src}"
14+
"${config.packages.lbf-prelude-haskell}"
15+
];
16+
17+
devShellTools = config.settings.shell.tools ++ [ config.packages.lbf-prelude-to-haskell ];
18+
devShellHook = config.settings.shell.hook;
19+
};
20+
in
21+
{
22+
# Develop Prelude applications with Haskell
23+
devShells.dev-prelude-haskell = hsFlake.devShell;
24+
packages.play-prelude-haskell-lib = hsFlake.packages."prelude-haskell:lib:prelude-haskell";
25+
};
26+
}
27+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
packages: ./.
2+
3+
tests: true
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
cabal-version: 3.0
2+
name: prelude-haskell
3+
version: 0.1.0.0
4+
synopsis: Dev shell for LambdaBuffers Prelude Haskell
5+
author: Drazen Popovic
6+
maintainer: [email protected]
7+
8+
flag dev
9+
description: Enable non-strict compilation for development
10+
manual: True
11+
12+
common common-language
13+
ghc-options:
14+
-Wall -Wcompat -fprint-explicit-foralls -fprint-explicit-kinds
15+
-fwarn-missing-import-lists -Weverything -Wno-unsafe
16+
-Wno-missing-safe-haskell-mode -Wno-implicit-prelude
17+
-Wno-missing-kind-signatures -Wno-all-missed-specializations
18+
19+
if !flag(dev)
20+
ghc-options: -Werror
21+
22+
default-extensions:
23+
BangPatterns
24+
BinaryLiterals
25+
ConstrainedClassMethods
26+
ConstraintKinds
27+
DataKinds
28+
DeriveAnyClass
29+
DeriveDataTypeable
30+
DeriveFoldable
31+
DeriveFunctor
32+
DeriveGeneric
33+
DeriveLift
34+
DeriveTraversable
35+
DerivingStrategies
36+
DerivingVia
37+
DoAndIfThenElse
38+
DuplicateRecordFields
39+
EmptyCase
40+
EmptyDataDecls
41+
EmptyDataDeriving
42+
ExistentialQuantification
43+
ExplicitForAll
44+
ExplicitNamespaces
45+
FlexibleContexts
46+
FlexibleInstances
47+
ForeignFunctionInterface
48+
GADTSyntax
49+
GeneralizedNewtypeDeriving
50+
HexFloatLiterals
51+
ImportQualifiedPost
52+
InstanceSigs
53+
KindSignatures
54+
LambdaCase
55+
MonomorphismRestriction
56+
MultiParamTypeClasses
57+
NamedFieldPuns
58+
NamedWildCards
59+
NoStarIsType
60+
NumericUnderscores
61+
OverloadedLabels
62+
OverloadedStrings
63+
PackageImports
64+
PartialTypeSignatures
65+
PatternGuards
66+
PolyKinds
67+
PostfixOperators
68+
RankNTypes
69+
RecordWildCards
70+
RelaxedPolyRec
71+
ScopedTypeVariables
72+
StandaloneDeriving
73+
StandaloneKindSignatures
74+
TemplateHaskell
75+
TraditionalRecordSyntax
76+
TupleSections
77+
TypeApplications
78+
TypeFamilies
79+
TypeOperators
80+
TypeSynonymInstances
81+
ViewPatterns
82+
83+
default-language: Haskell2010
84+
85+
library
86+
import: common-language
87+
build-depends:
88+
, aeson >=2.2
89+
, base >=4.16
90+
, bytestring >=0.11
91+
, containers >=0.6
92+
, lbf-prelude >=0.1
93+
, lbr-prelude >=0.1
94+
, text >=2.0
95+
96+
hs-source-dirs: src
97+
exposed-modules: LambdaBuffers.Prelude.Play
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module LambdaBuffers.Prelude.Play () where
2+
3+
import "aeson" Data.Aeson ()
4+
import "bytestring" Data.ByteString ()
5+
import "containers" Data.Map ()
6+
import "containers" Data.Set ()
7+
import "lbf-prelude" LambdaBuffers.Prelude ()
8+
import "lbr-prelude" LambdaBuffers.Runtime.Prelude ()
9+
import "text" Data.Text ()

extras/lbf-nix/build.nix

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
lbg-haskell = "${config.packages.lbg-haskell}/bin/lbg-haskell";
55
lbg-typescript = "${config.packages.lbg-typescript}/bin/lbg-typescript";
66
lbg-plutarch = "${config.packages.lbg-plutarch}/bin/lbg-plutarch";
7+
lbg-plutustx = "${config.packages.lbg-plutustx}/bin/lbg-plutustx";
78
lbg-purescript = "${config.packages.lbg-purescript}/bin/lbg-purescript";
89
lbg-rust = "${config.packages.lbg-rust}/bin/lbg-rust";
910

@@ -14,9 +15,11 @@
1415
lbfBuild = import ./lbf-build.nix pkgs config.packages.lbf;
1516
lbfHaskell = import ./lbf-haskell.nix pkgs config.packages.lbf lbg-haskell;
1617
lbfPreludeHaskell = import ./lbf-prelude-hs.nix pkgs config.packages.lbf lbg-haskell;
17-
lbfPlutusHaskell = import ./lbf-plutus-hs-plutustx.nix pkgs config.packages.lbf lbg-haskell;
18-
lbfPlutarch' = import ./lbf-plutarch.nix pkgs config.packages.lbf lbg-plutarch;
19-
lbfPlutarch = import ./lbf-plutus-plutarch.nix pkgs config.packages.lbf lbg-plutarch;
18+
lbfPlutusHaskell = import ./lbf-plutus-hs.nix pkgs config.packages.lbf lbg-haskell;
19+
lbfPlutarchBase = import ./lbf-plutarch-base.nix pkgs config.packages.lbf lbg-plutarch;
20+
lbfPlutarch = import ./lbf-plutarch.nix pkgs config.packages.lbf lbg-plutarch;
21+
lbfPlutusTxBase = import ./lbf-plutustx-base.nix pkgs config.packages.lbf lbg-plutustx;
22+
lbfPlutusTx = import ./lbf-plutustx.nix pkgs config.packages.lbf lbg-plutustx;
2023
lbfPurescript = import ./lbf-purescript.nix pkgs config.packages.lbf lbg-purescript;
2124
lbfPreludePurescript = import ./lbf-prelude-purescript.nix pkgs config.packages.lbf lbg-purescript;
2225
lbfPlutusPurescript = import ./lbf-plutus-purescript.nix pkgs config.packages.lbf lbg-purescript;

extras/lbf-nix/lbf-plutarch-base.nix

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Build .lbf schemas and generate Haskell's Plutarch library.
2+
pkgs: lbf: lbg-plutarch: lbfPlutarchOpts:
3+
import ./lbf-haskell.nix pkgs lbf lbg-plutarch lbfPlutarchOpts

extras/lbf-nix/lbf-plutarch.nix

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1-
# Build .lbf schemas and generate Haskell's Plutarch library.
1+
# Build .lbf schemas that use LB Plutus (and by extension LB Prelude) package and targets Haskell's Plutarch library.
22
pkgs: lbf: lbg-plutarch: lbfPlutarchOpts:
3-
import ./lbf-haskell.nix pkgs lbf lbg-plutarch lbfPlutarchOpts
3+
let
4+
utils = import ./utils.nix pkgs;
5+
6+
lbfPlutarch = import ./lbf-plutarch-base.nix pkgs lbf lbg-plutarch;
7+
lbfPlutarchOptsForPlutus = utils.overrideAttrs
8+
{
9+
imports = {
10+
default = [ ];
11+
override = libs: libs ++ [ ../../libs/lbf-prelude ../../libs/lbf-plutus ];
12+
};
13+
dependencies = {
14+
default = [ ];
15+
override = deps: deps ++ [ "lbf-prelude-plutarch" "lbf-plutus-plutarch" ];
16+
};
17+
classes = {
18+
default = [ ];
19+
override = cls: cls ++ [ "Prelude.Eq" "Plutus.V1.PlutusData" ];
20+
};
21+
configs = {
22+
default = [ ];
23+
override = _: [ ../../lambda-buffers-codegen/data/plutarch-prelude.json ../../lambda-buffers-codegen/data/plutarch-plutus.json ];
24+
};
25+
}
26+
lbfPlutarchOpts;
27+
in
28+
lbfPlutarch lbfPlutarchOptsForPlutus

0 commit comments

Comments
 (0)