UplcPipeline
The single SIR -> UPLC pipeline, shared by scalus.uplc.CompiledPlutus and the sir.toUplc extensions:
EraseSpecifications -> removeTraces? -> BooleanOptimizer? -> MutualRecursionElimination -> StaticArgumentTransformation? -> lower(backend) -> optimize? -> fill positions
BooleanOptimizer and StaticArgumentTransformation both run when options.optimizeUplc is set. MutualRecursionElimination is unconditional (backends reject multi-binding recursive lets); running StaticArgumentTransformation after it lifts the peers-as-params static arguments MRE introduces. The backends keep their own MRE calls as safety nets for direct construction - MRE is idempotent, so the second call is a no-op walk.
ScalusTag is NOT applied here - it is a program-level concern (scalus.uplc.CompiledPlutus.program).
Attributes
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
UplcPipeline.type