plutus-core
Added
- The
assetCountbuiltin (CIP-0168): returns the number of distinct(currency symbol, token name)pairs in aValue. 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.multiIndexArraynow 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
-
PlutusV4has been added toPlutusTx.Blueprint.PlutusVersion.PlutusVersion. It is
serialised as"v4"in CIP-57 blueprints, and scripts tagged with it are hashed with
the language tag0x4. -
PlutusTx.Builtins.assetCount, exposing theassetCountbuiltin (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
CIntegerand all of theBuiltinIntegerfunctions which
depend on it. -
Removed the postulates for
divideInteger,modInteger,quotientInteger
andremainderInteger, they are now implemented in the metatheory. -
Proved all the laws from the
QuotRemPropertiesandDivModProperties
QuickCheck test suites as theorems inBuiltin.Integer.Properties,
including the quotient-remainder round trips, sign and range laws, and the
additive/multiplicative homomorphism properties ofremandmod. -
Added
Maybe-valued partial denotations ofquot/rem/div/modto
Builtin.Integer.Base(reused byBuiltin.CInteger), exported them to
Haskell under stable names, and added thetest-integer-divisionsuite
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 HaskellCaseBuiltin DefaultUni
instance. The corresponding conformance tests now pass.
Fixed
-
Fixed the Agda metatheory's
cekMachineCostFunctioncallinggetCekConstCostinstead ofgetCekConstrCostfor theConstrcase, a copy-paste bug that would silently mis-costConstr-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 -> ainstead of the correctforall a. unit -> a -> a). -
Fixed
serialiseDatabeing an unbound postulate that crashed at runtime with "postulate evaluated" whenever actually called.
Full Changelog: 1.67.0.0...1.68.0.0