From 7de6a0c9193d2d0aeea9ed47ca5d91a26e3347cf Mon Sep 17 00:00:00 2001 From: gnumonik Date: Fri, 14 Aug 2026 01:03:49 -0400 Subject: [PATCH] added BLS types to the prelude and piled on a mountain of ugly hacks to make them work w/ the haskell-flavored backends. We need a better solution than this long term. --- extras/lbf-nix/lbf-haskell.nix | 19 ++++++++++++++++++- .../data/haskell-prelude-base.json | 10 ++++++++++ .../data/plutarch-prelude.json | 10 ++++++++++ .../data/plutustx-prelude.json | 10 ++++++++++ libs/lbf-prelude/Prelude.lbf | 12 +++++++++++- .../haskell/lbr-plutarch/lbr-plutarch.cabal | 6 +++--- .../lbt-plutus-haskell/cabal.project | 5 +++++ .../lbt-plutus-plutarch/cabal.project | 6 ++++++ .../lbt-plutus-plutustx/cabal.project | 5 +++++ .../lbt-prelude-haskell/cabal.project | 7 ++++++- 10 files changed, 84 insertions(+), 6 deletions(-) diff --git a/extras/lbf-nix/lbf-haskell.nix b/extras/lbf-nix/lbf-haskell.nix index 146a30f3..41075404 100644 --- a/extras/lbf-nix/lbf-haskell.nix +++ b/extras/lbf-nix/lbf-haskell.nix @@ -85,6 +85,21 @@ let ''; }; + cabalProject = + opts: + with (lbfHaskellOpts opts); + pkgs.writeTextFile { + name = "lambda-buffers-cabal-project"; + text = '' + packages: ./${name}.cabal + + source-repository-package + type: git + location: https://github.com/mlabs-haskell/hbls-need-push-access.git + tag: 6b92e81481f5409c624e1b9b22eefc7d3abd81fb + ''; + }; + build = opts: with (lbfHaskellOpts opts); @@ -116,12 +131,14 @@ let cat ${cabalTemplate opts} \ | sed -r "s//$EXPOSED_MODULES/" \ | sed -r "s//$DEPS/" > ${name}.cabal; + cat ${cabalProject opts} > cabal.project; ''; installPhase = '' mkdir -p $out; - cp -rL autogen $out + cp -rL autogen $out; cp ${name}.cabal $out/${name}.cabal; + cp cabal.project $out/cabal.project; find $out; cp build.json $buildjson; diff --git a/lambda-buffers-codegen/data/haskell-prelude-base.json b/lambda-buffers-codegen/data/haskell-prelude-base.json index 6dca1010..7228825c 100644 --- a/lambda-buffers-codegen/data/haskell-prelude-base.json +++ b/lambda-buffers-codegen/data/haskell-prelude-base.json @@ -49,6 +49,16 @@ "base", "Prelude", "Bool" + ], + "Prelude.G1Element": [ + "hbls-need-push-access", + "HBLS", + "G1Point" + ], + "Prelude.G2Element": [ + "hbls-need-push-access", + "HBLS", + "G2Point" ] }, "classesConfig": { diff --git a/lambda-buffers-codegen/data/plutarch-prelude.json b/lambda-buffers-codegen/data/plutarch-prelude.json index a755d485..7170aaaf 100644 --- a/lambda-buffers-codegen/data/plutarch-prelude.json +++ b/lambda-buffers-codegen/data/plutarch-prelude.json @@ -49,6 +49,16 @@ "lbr-plutarch", "LambdaBuffers.Runtime.Plutarch", "PSet" + ], + "Prelude.G1Element": [ + "plutarch", + "Plutarch.Builtin.BLS", + "PBuiltinBLS12_381_G1_Element" + ], + "Prelude.G2Element": [ + "plutarch", + "Plutarch.Builtin.BLS", + "PBuiltinBLS12_381_G2_Element" ] }, "classesConfig": { diff --git a/lambda-buffers-codegen/data/plutustx-prelude.json b/lambda-buffers-codegen/data/plutustx-prelude.json index cf77f3ab..0533d9c9 100644 --- a/lambda-buffers-codegen/data/plutustx-prelude.json +++ b/lambda-buffers-codegen/data/plutustx-prelude.json @@ -49,6 +49,16 @@ "lbr-plutustx", "LambdaBuffers.Runtime.PlutusTx.NotImplemented", "Set" + ], + "Prelude.G1Element": [ + "plutus-tx", + "PlutusTx.Builtins", + "BuiltinBLS12_381_G1_Element" + ], + "Prelude.G2Element": [ + "plutus-tx", + "PlutusTx.Builtins", + "BuiltinBLS12_381_G2_Element" ] }, "classesConfig": { diff --git a/libs/lbf-prelude/Prelude.lbf b/libs/lbf-prelude/Prelude.lbf index e84c719a..fd2d7162 100644 --- a/libs/lbf-prelude/Prelude.lbf +++ b/libs/lbf-prelude/Prelude.lbf @@ -28,6 +28,16 @@ opaque Text instance Eq Text instance Json Text +opaque G1Element + +instance Eq G1Element +instance Json G1Element + +opaque G2Element + +instance Eq G2Element +instance Json G2Element + opaque Maybe a instance Eq (Maybe a) :- Eq a @@ -51,4 +61,4 @@ instance Json (Map k v) :- Json k, Json v opaque Set a instance Eq (Set a) :- Eq a -instance Json (Set a) :- Json a \ No newline at end of file +instance Json (Set a) :- Json a diff --git a/runtimes/haskell/lbr-plutarch/lbr-plutarch.cabal b/runtimes/haskell/lbr-plutarch/lbr-plutarch.cabal index 2d6ee145..906ae984 100644 --- a/runtimes/haskell/lbr-plutarch/lbr-plutarch.cabal +++ b/runtimes/haskell/lbr-plutarch/lbr-plutarch.cabal @@ -90,8 +90,8 @@ library import: common-language build-depends: , base - , plutarch - , plutarch-ledger-api + , plutarch >=1.14.0 + , plutarch-ledger-api >=3.7.0 hs-source-dirs: src exposed-modules: @@ -107,7 +107,7 @@ test-suite tests , base , hedgehog , lbr-plutarch - , plutarch + , plutarch >=1.14.0 , tasty , tasty-hedgehog , tasty-hunit diff --git a/testsuites/lbt-plutus/lbt-plutus-haskell/cabal.project b/testsuites/lbt-plutus/lbt-plutus-haskell/cabal.project index c9c0de49..58b6af73 100644 --- a/testsuites/lbt-plutus/lbt-plutus-haskell/cabal.project +++ b/testsuites/lbt-plutus/lbt-plutus-haskell/cabal.project @@ -1,5 +1,10 @@ packages: ./. +source-repository-package + type: git + location: https://github.com/mlabs-haskell/hbls-need-push-access.git + tag: 6b92e81481f5409c624e1b9b22eefc7d3abd81fb + tests: true -- Uniform plutus version across all LambdaBuffers projects (van Rossem/PV11 compatible, -- newest supported by plutarch 1.14.0) diff --git a/testsuites/lbt-plutus/lbt-plutus-plutarch/cabal.project b/testsuites/lbt-plutus/lbt-plutus-plutarch/cabal.project index e78d34c3..27c995ed 100644 --- a/testsuites/lbt-plutus/lbt-plutus-plutarch/cabal.project +++ b/testsuites/lbt-plutus/lbt-plutus-plutarch/cabal.project @@ -2,6 +2,12 @@ packages: ./. tests: true +source-repository-package + type: git + location: https://github.com/mlabs-haskell/hbls-need-push-access.git + tag: 6b92e81481f5409c624e1b9b22eefc7d3abd81fb + + allow-newer: -- TODO(szg251): Allow once the below issue is resolved -- https://github.com/phadej/vec/issues/121 diff --git a/testsuites/lbt-plutus/lbt-plutus-plutustx/cabal.project b/testsuites/lbt-plutus/lbt-plutus-plutustx/cabal.project index e78d34c3..b9bb273e 100644 --- a/testsuites/lbt-plutus/lbt-plutus-plutustx/cabal.project +++ b/testsuites/lbt-plutus/lbt-plutus-plutustx/cabal.project @@ -2,6 +2,11 @@ packages: ./. tests: true +source-repository-package + type: git + location: https://github.com/mlabs-haskell/hbls-need-push-access.git + tag: 6b92e81481f5409c624e1b9b22eefc7d3abd81fb + allow-newer: -- TODO(szg251): Allow once the below issue is resolved -- https://github.com/phadej/vec/issues/121 diff --git a/testsuites/lbt-prelude/lbt-prelude-haskell/cabal.project b/testsuites/lbt-prelude/lbt-prelude-haskell/cabal.project index 6b0c1f6a..2170902e 100644 --- a/testsuites/lbt-prelude/lbt-prelude-haskell/cabal.project +++ b/testsuites/lbt-prelude/lbt-prelude-haskell/cabal.project @@ -1,3 +1,8 @@ packages: ./. -tests: true \ No newline at end of file +source-repository-package + type: git + location: https://github.com/mlabs-haskell/hbls-need-push-access.git + tag: 6b92e81481f5409c624e1b9b22eefc7d3abd81fb + +tests: true