Releases: IntersectMBO/plutus
1.61.0.0
plutus-core
Added
- Roundtrip and stable byte encoding tests for all Flat instances across
flat, plutus-core, plutus-ir, and untyped-plutus-core packages. - Standalone encoding generator executable (
cabal run flat-encoding-generator)
for reproducing expected byte constants.
Fixed
- Fixed
consClosein the Flat decoder failing to advance the stream pointer past 1 byte, which corrupted decoder state for Generic-derived Flat instances of large enums (>256 constructors) and caused infinite memory consumption during deserialization.
plutus-ledger-api
No changes.
plutus-tx
No changes.
plutus-tx-plugin
Changed
- The plugin now automatically sets the
Strictextension and the GHC flags mentioned
in https://plutus.cardano.intersectmbo.org/docs/using-plinth/extensions-flags-pragmas.
TheStrictextension can be turned off using plugin flagno-strict.
Requires compiling withplinthcorplcinstead ofcompile.
Fixed
- Fixed a 3-5x execution cost regression for
unsafeFromBuiltinDataon multi-constructor
types when compiling in SumsOfProducts mode (the default). ThecaseIntegerfallback
now generatesequalsInteger/ifThenElsechains instead of building a linked list at
runtime.
plutus-executables
No changes.
plutus-metatheory
Added
- Added a compiler certification pass for the force-case-delay optimization.
Changed
- The certifier can now report execution budget before and after each pass.
Full Changelog: 1.60.0.0...1.61.0.0
1.60.0.0
plutus-core
Added
- A new UPLC optimization pass, turning multi-argument applications into case-constr form.
Changed
- The
uplcexecutable now accepts serialised scripts (in addition to textual
and flat-encoded). Use--input-format serialised.
plutus-ledger-api
Added
- Added
ScriptContextBuildertest utility (PlutusLedgerApi.Test.ScriptContextBuilder) toplutus-ledger-api-testlibfor constructing realisticScriptContextvalues in tests using a composable builder pattern.
Fixed
- Fixed
Showinstance forTokenNamedisplaying non-printable token names as
seemingly empty strings. Token names are now always shown as hex-encoded bytes,
matchingCurrencySymbol(#7638).
plutus-tx
Added
asDatanow generates a destructor function for the data type, in addition to the
pattern synonyms. For sum types, it is better to use the destructor function than the
pattern synonyms to match on them.
plutus-tx-plugin
Added
- Added
Plinth.Plugin, which uses atypeCheckResultActionto preserve more
source locations, resulting in clearer error messages.
Changed
-
Improved compilation error messages by making them more concise and including
the relevant code snippet. -
Improved error reporting in the Plinth compiler for certain unsupported Haskell features.
Requires compiling withplinthcorplcinstead ofcompile.
plutus-executables
No changes.
plutus-metatheory
Added
- Translation relation and decision procedure for the
ApplyToCasepass.
Full Changelog: 1.59.0.0...1.60.0.0
1.59.0.0
plutus-core
Added
- Added certifier hints in Haskell and Agda.
They are useful for certifying certain UPLC optimizations such as inlining, since their translation relations are otherwise computationally difficult to decide.
Changed
-
Relaxed the upper bound for the
cardano-crypto-classdependency (< 2.4) -
Added an Agda checking procedure for the inliner, and updated the UPLC inliner to emit certifier hints.
plutus-ledger-api
Changed
-
Replace hand-written
PlutusTx.Eqinstances withderiveEqacross all V1/V2/V3 types -
Add
PlutusTx.Eqinstance forMintValue -
Replace hand-written
PlutusTx.Ordinstances withderiveOrdforV1.ExtendedandV3.ProtocolVersion
plutus-tx
Added
-
A
deriveOrdcommand to derive PlutusTx.Ord instances for datatypes/newtypes, similar to Haskell's
deriving stock Ord -
PlutusTx.deriveEq: Template Haskell function to derivePlutusTx.Eqinstances
for datatypes and newtypes, similar to Haskell'sderiving stock Eq
plutus-tx-plugin
No changes.
plutus-executables
No changes.
plutus-metatheory
No changes.
Full Changelog: 1.58.0.0...1.59.0.0
1.58.0.0
What's Changed
- Revert pr-preview-action v1.8.1 -> v1.6.3 by @zeme-wana in #7543
- Release 1.57.0.0 by @ana-pantilie in #7530
- Update lodash version to 4.17.23 in docusaurus by @zeme-wana in #7544
- Update lodash-es to 4.17.23 in docusaurus by @zeme-wana in #7547
- feat(uplc-evaluator): implement file-based benchmarking interface by @Unisay in #7546
- feat(nix): expose uplc-evaluator executable in nix packages by @Unisay in #7549
- feat(uplc-evaluator): implement real CEK evaluation with budget tracking by @Unisay in #7550
- feat(uplc-evaluator): use integer nanoseconds for timing measurements by @Unisay in #7552
- Fix version dropdown list in haddock site by @zeme-wana in #7554
- Replace use of tail with drop 1 in PlutusTx/Enum/TH.hs by @zeme-wana in #7553
- Fix garbled output from concurrent threads in uplc-evaluator by @Unisay in #7555
- Fix flaky uplc-evaluator integration tests by @Unisay in #7557
- Metatheory: use Fin instead of nested Maybe for representing variables by @basetunnel in #7486
- refactor(uplc-evaluator): remove redundant memory_bytes metric by @Unisay in #7556
- Add plutus-tx tests for compiling to case on built-ins by @basetunnel in #7539
- Fix uconv to allow an arbitrary number of variables by @ana-pantilie in #7560
- [certifier] Allow checking procedures by @zliu41 in #7561
- Kwxm/costing/recost vd uvd by @kwxm in #7563
- Add --cse-which-subterms flag by @basetunnel in #7511
- Replace error calls in the plutus CLI AnyProgram IO flow by @Savissy in #7565
- Bug:
Cannot construct a value of type: PlutusTx.Builtins.Internal.BuiltinUnitby @Unisay in #7162 - Disable uplc-evaluator-integration-tests by @zliu41 in #7567
- [certifier] Document decision vs. checking procedure tradeoffs by @zliu41 in #7564
- Fix flaky uplc-evaluator-integration-tests and re-enable by @Unisay in #7569
- Kwxm/msm/add bound by @kwxm in #7570
- Re-disable uplc-evaluator-integration-tests by @zliu41 in #7571
- Release 1.58.0.0 by @zliu41 in #7568
New Contributors
Full Changelog: 1.57.0.0...1.58.0.0
1.57.0.0
plutus-core
No changes.
plutus-ledger-api
No changes.
plutus-tx
No changes.
plutus-tx-plugin
No changes.
plutus-executables
No changes.
plutus-metatheory
No changes.
Full Changelog: 1.56.0.0...1.57.0.0
1.56.0.0
plutus-core
Changed
-
Updated benchmark data and cost model parameters for Value-related builtins (lookupCoin, valueContains, valueData, unValueData) based on fresh benchmark measurements.
-
Add support for nothunks == 0.3.*
plutus-ledger-api
Added
- To v3: numerator,denominator,unsafeRatio
Changed
-
In v3: renamed fromGHC/toGHC to fromRatioHaskell/toRatioHaskell
-
Add support for nothunks == 0.3.*
plutus-tx
Removed
- PlutusTx.Ratio: half
Added
- Enum Ratio instance that mimicks Haskell's instance
Changed
-
Renamed Ratio's fromGHC/toGHC to fromRatioHaskell/toRatioHaskell
-
Made the (&&) and (||) operators short-circuit also in the Haskell side.
uplc code is unaffected and is already short-circuiting.
plutus-tx-plugin
No changes.
plutus-executables
No changes.
plutus-metatheory
No changes.
Full Changelog: 1.55.0.0...1.56.0.0
1.55.0.0
plutus-core
Added
- Implementations of
ScaleValueprimitives.
Changed
-
Renamed 'Size' types functions to AstSize
-
In #7323 made the
Constr,ListandMapbuiltins 7+% faster. -
Updated the Plutus Core specification to allow names with optional numeric suffixes (e.g.,
name-42) in #7396, resolving the discrepancy between the formal grammar and the parser implementation.
plutus-ledger-api
Added
- The two BLS12-381 multi-scalar multiplication functions
bls12_381_G1_multiScalarMulandbls12_381_G2_multiScalarMulwill become
available on the chain at Protocol Version 11 once a protocol parameter update
has taken place to add the relevant cost model parameters.
Fixed
- Allows PlutusV3 scripts with the v1.0.0 Plutus Core language version.
plutus-tx
Changed
- Renamed 'Size' types functions to AstSize
plutus-tx-plugin
Removed
- Removed the experimental compiler certification option temporarily due to ghc issues regarding the profiling build of
plutus-metatheory.
Changed
- Renamed 'Size' types functions to AstSize
plutus-executables
No changes.
plutus-metatheory
No changes.
Full Changelog: 1.54.0.0...1.55.0.0
1.53.1.0
Full Changelog: 1.53.0.0...1.53.1.0
1.54.0.0
plutus-core
Added
-
Built-in type
Value, and the implementations ofinsertCoinandunionValue. -
Added the bls MSM built-in to plutus-core in #4255
-
Implementations of
LookupCoinandValueContainsprimitives. -
Implementations of
ValueDataandUnValueDataprimitives.
Changed
- Change default compiler option
datatypesfromBuiltinCasingback toSumsOfProducts
plutus-ledger-api
Added
- Added the bls MSM built-in to plutus-core in #4255
plutus-tx
Added
- Added the bls MSM built-in to plutus-core in #4255
plutus-tx-plugin
Added
- Added the bls MSM built-in to plutus-core in #4255
plutus-executables
No changes.
plutus-metatheory
No changes.
Full Changelog: 1.53.0.0...1.54.0.0
Release 1.53.0.0
What's Changed
- Release 1.52.0.0 by @zliu41 in #7277
- Make
FrameAwaitFunValuehandle multiple arguments at once by @SeungheonOh in #7281 - Throw compilation error when unsupported extension is enabled by @SeungheonOh in #7252
- Add Plinth builtin for integer casing by @SeungheonOh in #7271
- Add comprehensive GitHub Copilot instructions for Plutus development by @Copilot in #7276
- [OPTIMIZATION] Use specialized
ArgStackby @SeungheonOh in #7286 - [OPTIMIZATION] Use spine directly for constant casing by @SeungheonOh in #7287
- Only run Broken Links workflow on push to master by @zeme-wana in #7290
- Add golden test for
validationbenchmark suite by @SeungheonOh in #7289 - Bump mermaid to v11.10.0 by @zeme-wana in #7291
- Flat: encode UPLC arrays as lists by @kwxm in #7296
- [Test] Make 'test_mangle' not fail by @effectfully in #7297
- Update auction validator examples to use Plutus Core version 1.1.0 and fix V3 API imports by @Copilot in #7274
- Build with -Werror by default by @ana-pantilie in #7298
- Improve regex catching URLs in check-broken-links.sh by @zeme-wana in #7300
- Uncomment needed line in check-broken-links.sh by @zeme-wana in #7301
- Add SrcSpans of Vars in the compilation trace by @zliu41 in #7299
- [Builtins] Add constant casing for builtin unit and pair by @SeungheonOh in #7221
- Add -Wall to Haskell metatheory modules and fix warnings by @ana-pantilie in #7302
- Remove dependency on QuickCheck 2.16 + remove allow-newer QuickCheck by @ana-pantilie in #7295
- Add more exes to nix outputs and hide musl exes on darwin by @zeme-wana in #7303
- Release 1.53.0.0 by @ana-pantilie in #7307
New Contributors
- @Copilot made their first contribution in #7276
Full Changelog: 1.52.0.0...1.53.0.0