IntersectMBO / IntersectMBO/plutus
Refactor the `plutus-core` package into three libraries for the three languages
- 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
Assessment
This issue has not been assessed yet.