IntersectMBO / IntersectMBO/plutus

Refactor the `plutus-core` package into three libraries for the three languages

Open
#6,130 0 comments 0 reactions 0 assignees View on GitHub
Low priority status: triaged tech debt
Dominant language
Haskell
Stars
1.6k
Forks
508
Avg merge
3d 10h
Merged PRs (30d)
22

Description

plutus-core is already “loosely” structured around the three languages that we have: Untyped Plutus Core, Typed Plutus Core, and Plutus IR. Conceptually, there’s a dependency ordering:

UPLC ← TPLC ← PIR

However, this isn’t enforced: they are all part of the same cabal library, so modules can depend on each other arbitrarily.

We could start enforcing this by having the three languages be separate internal libraries, and having a combined library at the top which just re-exports them all.

This would involve a lot of moving things around, and we’d probably also need a “common” library (which would include a bunch of stuff from TPLC, which has a lot of common stuff for historical reasons).

We already have independent test suites, but these could be even slicker because they would only need to depend on the library for the specific language.

As a Plutus Core developer, I would like the libraries for UPLC/TPLC/PIR to be clearly separated, so that it’s easier for me to keep things organized and in the right place.

### Acceptance criteria

PIR is in its own library.

TPLC is in its own library.

UPLC is in its own library.

- [ ] https://github.com/IntersectMBO/plutus/issues/6103
- [ ] https://github.com/IntersectMBO/plutus/issues/6102
- [ ] https://github.com/IntersectMBO/plutus/issues/6035

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.