Releases: scalus3/scalus
Releases · scalus3/scalus
v0.16.0
Release Notes
Added
- compile-time partial evaluation in UPLC optimizer with occurrence analysis for smarter inlining
- source positions in UPLC Term and CEK error reporting for precise error diagnostics
- diagnostic replay for release scripts —
DebugScriptAPI re-evaluates stripped scripts with full
traces for debugging strip trace/logstatements for release buildsPairListtype to avoidSumDataList/SumDataPairListper-element conversions, used internally
inSortedMapandValue.zerofor cheaper on-chain operationslovelaceAmountonValuefor efficient lovelace extraction viaPairList.headLinkedListlibrary implementation with on-chain validator and off-chain utilities- Merkle Patricia Forestry variants (mpfb, mpfo) with on-chain
verifyMembership/verifyNonMembership,
off-chain trie operations, and Aiken cross-implementation compatibility FrontierMerkleTree,MerkleTree,MembershipTokendata structuresIncrementalMerkleTree(formerly AppendOnlyMerkleTree) with path-byte encoding optimization- bilinear accumulator allowlist validator with
scalus-ethereum-kzg-ceremonysubproject - Pippenger MSM optimization for BLS12-381 with allocation-free Montgomery NTT
- constant product AMM contract example
- multi-pool DEX example with multiple withdraw-zero scripts
- anonymous data contract with on-chain reading via reference inputs
DecentralizedIdentityon-chain contract withCompiledPlutusmint and required signers- upgradable proxy validator
- CAPE two-party escrow benchmark with factorial and fibonacci benchmarks
payTooverloads forCompiledPlutusinTxBuildercheckTransaction,pollForConfirmation, andsubmitAndPollonBlockchainProviderProtocolParams.diffandCardanoInfo.verifyUtxoEnvDefaultsfor inlined protocol parameters- emulator stake state pre-initialization with
Map[Address, Coin]and JS APIs ->operator support in Scalus compiler pluginassertEvalWithBudgetlambda overload to prevent constant folding in budget tests- builtin totality annotations for improved dead code elimination
- Cardano protocol parameters updated to epoch 616
datumBuilderfor outputs with datums that depend on the final transaction shape
Changed
- reorganized crypto packages —
crypto/trie,crypto/tree,crypto/accumulator; flattened
bls12_381 - moved off-chain crypto from
cardano.offchain.cryptotoscalus.crypto - renamed
MerklePatriciaTrietoMerklePatriciaForestry,BinaryMerklePatriciaTrieto
FusedMerklePatriciaForestry - merged
Compiled[A]trait intoCompiledPlutus[A] requiredSignersis now a transaction-wide concept; per-steprequiredSignersAPIs deprecated- replaced
PlutusV4withPlutusV3+targetProtocolVersion - replaced
sourcePoswithUplcAnnotationin UPLC Term - optimized
List.atwith direct tail-recursive traversal List.singleandPairList.singleare nowinlinefor cheaper on-chain operations- use
TaggedSortedSet.applyinstead ofTaggedSortedSet.fromfor zero-cost wrapping of SortedSets - removed deprecated code from 0.13.x and earlier
- removed unused
scalusPluginTestsproject
Fixed
- UPLC optimizer now uses position-ignoring equality to avoid false mismatches
Force(Delay)elimination after inner optimization in Inliner- free variable tracking in
substituteto avoid name capture Constrwith value args recognized as WHNF inisValueForm- unsaturated builtin applications recognized as WHNF
- propagate
inlinedFromincompileThrowExceptionfor inlinerequire Math.sqrtoptimized withlog2/exp2initial guess- deterministic validator iteration order using
SortedSet - validate seed
TxOutRefon-chain and harden off-chain helpers - propagate spent budget through CEK/emulator error chain
- ignore zero-amount entries in assets map during minting
- fetch Yaci DevKit slot config from admin API instead of hardcoding
Documentation
- Documentation: https://scalus.org/docs
- Getting started: https://scalus.org/docs/get-started
Contributors
![]() @nau |
![]() @rssh |
![]() @sae3023 |
![]() @fernweh0 |
v0.15.1
Release Notes
Added
- Merkle Patricia Forestry data structure for on-chain Merkle proofs
- variadic
logfunction with auto-show for trace diagnostics offsetOf[A]compile-time macro for case class field indicesBuiltinListpattern matching and optional Nil branch inCaseList(con value ...)syntax support in UPLC parser/printerFuture/Scenarioconversion andEmulatorBaseAPI
Changed
- simplified
ScenarioandContractScalaCheckCommandsAPIs - updated MaryEraValue builtin cost models to match Plutus 1.58.0.0 reference
- extracted dependency versions into build.sbt variables and bumped dependencies
Fixed
- count native reference scripts towards minFee calculation
- use
Timelock.toCborfor native ref script size instead ofCbor.encode(Script) - account for sponsor VKey witness in fee estimation
- handle exceptions in
Scenariomonad and filter extra VKey witnesses inTxBuilder.sign - filter auction UTxO by NFT asset to prevent spam UTxO attacks
- fix MaryEraValue builtins and pool retirement validation
Documentation
- Documentation: https://scalus.org/docs
- Getting started: https://scalus.org/docs/get-started
Contributors
![]() @nau |
![]() @rssh |
![]() @sae3023 |
v0.15.0
Release Notes
Added
- all new builtins for protocol version 11 hard fork
- JavaScript Emulator support for cross-platform testing
- HD wallet implementation with BIP-39 mnemonic, BIP32-Ed25519 key derivation, and CIP-1852 account
- Conway era ledger state rules:
DELEGandPOOLtransitions for stake delegation and pool
registration management TxBuilder.draftmethod for unbalanced transaction assemblytxBuilderfunction withCardanoInfocontext parameter- type-safe
UtxoQueryDSL with parallel execution and rate limiting for UTxO queries Transaction.scriptContextsextension method for easier script context accessMaryEraValuesupport (CIP-0153)expModIntegerbuiltin (CIP-109) for modular exponentiationbls12_381_G1_multiScalarMulandbls12_381_G2_multiScalarMulbuiltins (CIP-0109)g1andg2string interpolators for BLS12-381 elements- use
dropListfor case class field selection at index >= 2 on PlutusV4 Prettytypeclass with automatic derivation for ADTs and Cardano ledger typesEq.derivedfor automatic equality typeclass derivation- design patterns documentation: Merkelized Validators, Parameter Validation, OptimizedPaymentSplitter
- Crowdfunding, English Auction, Lottery, and PriceBet smart contract examples
- multi-environment integration testing infrastructure with Yaci DevKit consolidation
- comprehensive
scalus-testkitAPI withEvalTestKitandScalusTestbase classes Outputtype alias forTransactionOutputfetchScriptmethod to retrieve scripts from Blockfrost- 5 ADA threshold for collateral return optimization
Changed
- reorganized package structure -
scalus.builtintypes andscalus.preludemoved to new locations CompileandIgnoreannotations moved toscalus.compilerpackageValidatortraits moved frompreludetov3packageProviderdeprecated in favor ofBlockchainProvider- simplified
BlockfrostProviderAPI with platform-specific backends - BLS12-381 classes moved to
scalus.uplc.builtin.bls12_381package with shorter names - optimized
toDatafor constantByteString,String,Boolean, andIntegervalues - optimized
mkNilDatabuiltin to constant - optimized
Eq.derivedto use direct field access - improved PlutusV3 match lowering to reduce script size
- renamed
__z_combinatorto__Z - deprecated
Contracttrait - removed deprecated code from 0.12.x
Fixed
- suppress false warnings for type tests on enum variants
- handle inline accessors in compiler plugin
- ensure error messages appear in UPLC traces
ByteStringnow extendsSerializable- security improvements for example validators: AuctionValidator, BettingValidator, Crowdfunding,
VaultValidator, VestingValidator - use Conway-style certificates for script-based stake registration
- platform-specific
modPowfor Scala.js and Scala Native compatibility
Documentation
- Documentation: https://scalus.org/docs
- Getting started: https://scalus.org/docs/get-started
Contributors
![]() @nau |
![]() @rssh |
![]() @sae3023 |
![]() @roman-hulenko |
![]() @sergey-scherbina |
![]() @fernweh0 |
Integration tests data
Data files for integration tests





