input-output-hk / input-output-hk/tools

Compiling Plutus dependencies with core bindings

Open
#9 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Nix
Stars
5
Forks
7
PR merge metrics
No merged PRs in 30d

Description

With extensible interfaces, we can currently compile a package using a plugin to produce interface files that contain core bindings, which can be used to recover ASTs during Plutus compilation.

However, as a design choice of Cabal, we can’t include flags for dependencies as part of the build process. So, we can’t run our plugin to serialise core bindings on the dependencies automatically, and neither can we implement a specialised GHC flag to perform the serialisation - because we can’t get either of those flags into the build of each dependency.

This is unlikely to change with Cabal (https://github.com/haskell/cabal/issues/4853), so we need an alternative solution.

One possible solution is to use a custom compiler that serialises core bindings by default - in which case we can get around the build tool’s limitations. This may involve building up the `package-db` in a more controlled way, depending on how isolated the build is.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.