Skip to content

Releases: scalus3/scalus

v0.16.0

11 Mar 18:24

Choose a tag to compare

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 — DebugScript API re-evaluates stripped scripts with full
    traces for debugging
  • strip trace/log statements for release builds
  • PairList type to avoid SumDataList/SumDataPairList per-element conversions, used internally
    in SortedMap and Value.zero for cheaper on-chain operations
  • lovelaceAmount on Value for efficient lovelace extraction via PairList.head
  • LinkedList library 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, MembershipToken data structures
  • IncrementalMerkleTree (formerly AppendOnlyMerkleTree) with path-byte encoding optimization
  • bilinear accumulator allowlist validator with scalus-ethereum-kzg-ceremony subproject
  • 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
  • DecentralizedIdentity on-chain contract with CompiledPlutus mint and required signers
  • upgradable proxy validator
  • CAPE two-party escrow benchmark with factorial and fibonacci benchmarks
  • payTo overloads for CompiledPlutus in TxBuilder
  • checkTransaction, pollForConfirmation, and submitAndPoll on BlockchainProvider
  • ProtocolParams.diff and CardanoInfo.verify
  • UtxoEnvDefaults for inlined protocol parameters
  • emulator stake state pre-initialization with Map[Address, Coin] and JS APIs
  • -> operator support in Scalus compiler plugin
  • assertEvalWithBudget lambda overload to prevent constant folding in budget tests
  • builtin totality annotations for improved dead code elimination
  • Cardano protocol parameters updated to epoch 616
  • datumBuilder for 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.crypto to scalus.crypto
  • renamed MerklePatriciaTrie to MerklePatriciaForestry, BinaryMerklePatriciaTrie to
    FusedMerklePatriciaForestry
  • merged Compiled[A] trait into CompiledPlutus[A]
  • requiredSigners is now a transaction-wide concept; per-step requiredSigners APIs deprecated
  • replaced PlutusV4 with PlutusV3 + targetProtocolVersion
  • replaced sourcePos with UplcAnnotation in UPLC Term
  • optimized List.at with direct tail-recursive traversal
  • List.single and PairList.single are now inline for cheaper on-chain operations
  • use TaggedSortedSet.apply instead of TaggedSortedSet.from for zero-cost wrapping of SortedSets
  • removed deprecated code from 0.13.x and earlier
  • removed unused scalusPluginTests project

Fixed

  • UPLC optimizer now uses position-ignoring equality to avoid false mismatches
  • Force(Delay) elimination after inner optimization in Inliner
  • free variable tracking in substitute to avoid name capture
  • Constr with value args recognized as WHNF in isValueForm
  • unsaturated builtin applications recognized as WHNF
  • propagate inlinedFrom in compileThrowException for inline require
  • Math.sqrt optimized with log2/exp2 initial guess
  • deterministic validator iteration order using SortedSet
  • validate seed TxOutRef on-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

Contributors

@nau
@nau
@rssh
@rssh
@sae3023
@sae3023
@fernweh0
@fernweh0

v0.15.1

13 Feb 17:13

Choose a tag to compare

Release Notes

Added

  • Merkle Patricia Forestry data structure for on-chain Merkle proofs
  • variadic log function with auto-show for trace diagnostics
  • offsetOf[A] compile-time macro for case class field indices
  • BuiltinList pattern matching and optional Nil branch in CaseList
  • (con value ...) syntax support in UPLC parser/printer
  • Future/Scenario conversion and EmulatorBase API

Changed

  • simplified Scenario and ContractScalaCheckCommands APIs
  • 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.toCbor for native ref script size instead of Cbor.encode(Script)
  • account for sponsor VKey witness in fee estimation
  • handle exceptions in Scenario monad and filter extra VKey witnesses in TxBuilder.sign
  • filter auction UTxO by NFT asset to prevent spam UTxO attacks
  • fix MaryEraValue builtins and pool retirement validation

Documentation

Contributors

@nau
@nau
@rssh
@rssh
@sae3023
@sae3023

v0.15.0

11 Feb 22:19

Choose a tag to compare

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: DELEG and POOL transitions for stake delegation and pool
    registration management
  • TxBuilder.draft method for unbalanced transaction assembly
  • txBuilder function with CardanoInfo context parameter
  • type-safe UtxoQuery DSL with parallel execution and rate limiting for UTxO queries
  • Transaction.scriptContexts extension method for easier script context access
  • MaryEraValue support (CIP-0153)
  • expModInteger builtin (CIP-109) for modular exponentiation
  • bls12_381_G1_multiScalarMul and bls12_381_G2_multiScalarMul builtins (CIP-0109)
  • g1 and g2 string interpolators for BLS12-381 elements
  • use dropList for case class field selection at index >= 2 on PlutusV4
  • Pretty typeclass with automatic derivation for ADTs and Cardano ledger types
  • Eq.derived for 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-testkit API with EvalTestKit and ScalusTest base classes
  • Output type alias for TransactionOutput
  • fetchScript method to retrieve scripts from Blockfrost
  • 5 ADA threshold for collateral return optimization

Changed

  • reorganized package structure - scalus.builtin types and scalus.prelude moved to new locations
  • Compile and Ignore annotations moved to scalus.compiler package
  • Validator traits moved from prelude to v3 package
  • Provider deprecated in favor of BlockchainProvider
  • simplified BlockfrostProvider API with platform-specific backends
  • BLS12-381 classes moved to scalus.uplc.builtin.bls12_381 package with shorter names
  • optimized toData for constant ByteString, String, Boolean, and Integer values
  • optimized mkNilData builtin to constant
  • optimized Eq.derived to use direct field access
  • improved PlutusV3 match lowering to reduce script size
  • renamed __z_combinator to __Z
  • deprecated Contract trait
  • 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
  • ByteString now extends Serializable
  • security improvements for example validators: AuctionValidator, BettingValidator, Crowdfunding,
    VaultValidator, VestingValidator
  • use Conway-style certificates for script-based stake registration
  • platform-specific modPow for Scala.js and Scala Native compatibility

Documentation

Contributors

@nau
@nau
@rssh
@rssh
@sae3023
@sae3023
@roman-hulenko
@roman-hulenko
@sergey-scherbina
@sergey-scherbina
@fernweh0
@fernweh0

Integration tests data

21 Oct 11:27
e0be57b

Choose a tag to compare

Pre-release

Data files for integration tests