scalus
Members list
Packages
Deprecated: use scalus.uplc.builtin and scalus.uplc.builtin.bls12_381 instead.
Deprecated: use scalus.uplc.builtin and scalus.uplc.builtin.bls12_381 instead.
Kept so that code using the old BLS12-381 names still compiles.
Attributes
Deprecated: use scalus.cardano.onchain.plutus.prelude instead.
Deprecated: use scalus.cardano.onchain.plutus.prelude instead.
Kept so that code importing scalus.prelude.* still compiles. Every member forwards to the member of the same name in scalus.cardano.onchain.plutus.prelude.
Attributes
Type members
Classlikes
Marker for per-platform interop surface traits.
Marker for per-platform interop surface traits.
Java/JS-facing members that would degrade the Scala API live in per-platform traits mixed into the shared (or platform) type; every such trait extends this marker so the interop surface is mechanically enumerable by tests.
See docs/superpowers/specs/2026-07-11-cross-language-interop-style-guide-design.md.
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
Selects test baselines that legitimately differ between Scala compiler versions.
Selects test baselines that legitimately differ between Scala compiler versions.
Budgets and compiled-script sizes shift between Scala 3.3.x (LTS) and 3.8.x because the host compiler desugars some constructs more leanly since 3.8.x — e.g. a tuple-datum pattern match no longer destructures-then-reconstructs the tuple, so the Scalus plugin sees a smaller tree. These differences are correctness-neutral (the contracts evaluate identically); only the exact budget/size numbers change. The 3.3.x LTS keeps the older, larger baselines; 3.8.x and the next LTS (which inherits the leaner desugaring) use the smaller ones.
Lives in scalus-testkit (not the example test sources) so that standalone projects ejected via eject-examples — which bundle the example tests but depend only on published artifacts — can still resolve scalus.ScalaCompilerVersion.
The active compiler version is injected by build.sbt (-Dscalus.test.scalaVersion). It can't be read from scala.util.Properties.versionNumberString, which reports the 2.13 standard-library version (2.13.x) on the Scala 3.3 LTS rather than the compiler version. When the property is absent (e.g. an ejected project, which pins the 3.3.x LTS) it defaults to "3.3.8".
Attributes
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
ScalaCompilerVersion.type
Extensions
Extensions
Pipe operator
Pipe operator
Attributes
Pretty-prints the SIR as a plain-text Doc.
Pretty-prints the SIR as a plain-text Doc.
Attributes
Pretty-prints the SIR as a Doc with XTerm color escape codes.
Pretty-prints the SIR as a Doc with XTerm color escape codes.
Attributes
Renders pretty at 80 columns.
Renders pretty at 80 columns.
Attributes
Renders prettyXTerm at 80 columns (colored, for terminal output).
First line of the rendered SIR, truncated to 60 characters - for log messages.
First line of the rendered SIR, truncated to 60 characters - for log messages.
Attributes
Lowers the SIR to a UPLC scalus.uplc.Term through the single scalus.compiler.sir.lowering.UplcPipeline (the same pipeline scalus.uplc.CompiledPlutus uses): removeTraces? -> mutual-recursion elimination -> static-argument transformation? -> backend lowering -> optimization? -> source-position back-fill.
Lowers the SIR to a UPLC scalus.uplc.Term through the single scalus.compiler.sir.lowering.UplcPipeline (the same pipeline scalus.uplc.CompiledPlutus uses): removeTraces? -> mutual-recursion elimination -> static-argument transformation? -> backend lowering -> optimization? -> source-position back-fill.
Intended for tests and inspection of the lowered term. For production scripts use scalus.uplc.PlutusV3.compile instead - it also produces the versioned program, serialized script, and script address.
Each parameter defaults to the corresponding field of the given scalus.compiler.Options and overrides it when passed explicitly.
Value parameters
- backend
-
the lowering backend; the default V3 backend is right for almost all uses
- debug
-
verbose lowering diagnostics
- generateErrorTraces
-
emit
tracecalls with error details on failure paths (bigger, costlier script) - optimizeUplc
-
run the SIR- and UPLC-level optimizers (what
Options.releaseenables)
Attributes
toUplc with optimizeUplc = true: lowers and runs the full optimizer pipeline.
toUplc with optimizeUplc = true: lowers and runs the full optimizer pipeline.
Intended for tests comparing optimized output. For production scripts use scalus.uplc.PlutusV3.compile with Options.release instead.