Skip to content

1.68.0.0

Latest

Choose a tag to compare

@zliu41 zliu41 released this 21 Aug 19:55
9e17e24

plutus-core

Added

  • The assetCount builtin (CIP-0168): returns the number of distinct (currency symbol, token name) pairs in a Value. Expected to be enabled at PV12.

Changed

  • Replaced the placeholder costing of multiIndexArray (CIP-0156) with a benchmarked cost model: CPU quadratic in the number of indices, memory linear in the length of the result. multiIndexArray now fails if given more than 1024 indices, because beyond some size its execution time is not predictable from the index count alone.

  • When the PIR inliner calculates the size of a term, it now excludes type and kind nodes.
    This should approximate the serialized size better, and it also makes the inlining
    behavior more consistent.

plutus-ledger-api

Added

  • Plutus V4 and dijkstraPV.

plutus-tx

Added

  • PlutusV4 has been added to PlutusTx.Blueprint.PlutusVersion.PlutusVersion. It is
    serialised as "v4" in CIP-57 blueprints, and scripts tagged with it are hashed with
    the language tag 0x4.

  • PlutusTx.Builtins.assetCount, exposing the assetCount builtin (CIP-0168). Expected to be enabled at PV12.

plutus-tx-plugin

Changed

  • Haskell unit is now compiled to built-in unit, instead of Scott/SOP unit.

plutus-executables

No changes.

plutus-metatheory

Added

  • Formalized CInteger and all of the BuiltinInteger functions which
    depend on it.

  • Removed the postulates for divideInteger, modInteger, quotientInteger
    and remainderInteger, they are now implemented in the metatheory.

  • Proved all the laws from the QuotRemProperties and DivModProperties
    QuickCheck test suites as theorems in Builtin.Integer.Properties,
    including the quotient-remainder round trips, sign and range laws, and the
    additive/multiplicative homomorphism properties of rem and mod.

  • Added Maybe-valued partial denotations of quot/rem/div/mod to
    Builtin.Integer.Base (reused by Builtin.CInteger), exported them to
    Haskell under stable names, and added the test-integer-division suite
    property-testing the compiled Agda implementations against Haskell's
    quot/rem/div/mod. The denotations are proved to agree with the total
    operators on all non-zero divisors.

  • Added casing on constants of builtin types (unit, bool, integer, list, pair)
    to the untyped CEK machine, mirroring the Haskell CaseBuiltin DefaultUni
    instance. The corresponding conformance tests now pass.

Fixed

  • Fixed the Agda metatheory's cekMachineCostFunction calling getCekConstCost instead of getCekConstrCost for the Constr case, a copy-paste bug that would silently mis-cost Constr-containing terms once a cost-model update sets the two parameters apart.

  • Fixed chooseUnit's signature and typed CEK semantics having their arguments reversed (forall a. a -> unit -> a instead of the correct forall a. unit -> a -> a).

  • Fixed serialiseData being an unbound postulate that crashed at runtime with "postulate evaluated" whenever actually called.

Full Changelog: 1.67.0.0...1.68.0.0