Skip to content

Releases: IntersectMBO/plutus

1.65.0.0

22 May 12:34
b2db512

Choose a tag to compare

plutus-core

Added

  • A new UPLC optimization that hoists forced polymorphic builtins, which can reduce
    the number of forces.

plutus-ledger-api

No changes.

plutus-tx

No changes.

plutus-tx-plugin

Added

  • A new plugin flag hoist-polymorphic-builtins that controls whether to run the optimization
    that hoists forced polymorphic built-in functions (on by default).

Changed

  • CannotParseValue plugin-option parse error now carries a human-readable
    detail string instead of a placeholder SomeTypeRep. Errors produced by
    plcParserOption include the underlying parser error message (source
    position and explanation), so failures to parse option values are no
    longer reported as "into type Int".

plutus-executables

No changes.

plutus-metatheory

Added

  • The certifier now includes a README.md inside each generated Agda project, describing how to typecheck the certificate.

Full Changelog: 1.64.0.0...1.65.0.0

1.64.0.0

11 May 20:12
61b1eed

Choose a tag to compare

plutus-core

Added

  • The UPLC optimizer now also simplifies terms by evaluating builtins.

plutus-ledger-api

No changes.

plutus-tx

No changes.

plutus-tx-plugin

Added

  • certify plugin option to trigger Agda certificate generation for compiled
    Plutus scripts. Each certificate is written to a directory named
    <package>_<module>-<hash>.agda-cert, where <hash> is a random 6-char
    alphanumeric tag.

  • generateCertificate top-level function that invokes the certifier with
    package and module names.

  • Detailed error message for unsupported casing on Integer.

Changed

  • Improved error reporting for a few unsupported types: Float, Double,
    Ratio, Text, ByteString.

plutus-executables

No changes.

plutus-metatheory

Changed

  • InvalidCertificate error now includes the certifier report text for better
    diagnostics.
  • Use createDirectoryIfMissing instead of createDirectory to avoid failures
    when certificate directories already exist.
  • Removed noisy console output from runCertifier (result and path messages).

Full Changelog: 1.63.0.0...1.64.0.0

1.63.0.0

06 May 01:52
ac40fae

Choose a tag to compare

plutus-core

Fixed

  • Fixed SrcSpan annotations on inner Apply/TyInst nodes from the PLC, PIR, and
    UPLC parsers. Parser error messages and tooling that reads annotations off parsed
    terms will now point to the specific argument involved.

plutus-ledger-api

No changes.

plutus-tx

No changes.

plutus-tx-plugin

Removed

  • Removed PlutusTx.Plugin and plc.
    Use Plinth.Plugin and plinthc instead.

plutus-executables

No changes.

plutus-metatheory

Removed

  • Temporarily disabled the CSE certifier pass due to the discovery of bugs in the specification.

Added

  • Certifier for the case-reduce pass

  • Certifier for the LetFloatOut pass

Fixed

  • Fixed the CSE translation relation in the certifier and re-enabled it.

Full Changelog: 1.62.0.0...1.63.0.0

1.62.0.0

24 Apr 13:49
fdbde4b

Choose a tag to compare

plutus-core

Added

  • A new UPLC optimization pass that floats bindings outwards. This can unlock further
    optimizations, such as case-constr and force-delay cancellation.

  • Added a new command line option --certified-opts-only which disables those optimization passes which are not certified.

  • A new plugin flag inline-unconditional-growth, and a new UPLC executable flag
    opt-inline-unconditional-growth.
    They control the aggressiveness of unconditional inlining.

Changed

  • Improved the CSE pass to make it see through bindings.

plutus-ledger-api

No changes.

plutus-tx

No changes.

plutus-tx-plugin

Added

  • Added a new plugin option certified-opts-only which disables those optimisation passes which are not certified to preserve the functional behavior of the original program.

Changed

  • The plugin now automatically inserts INLINEABLE pragmas.
    Requires compiling with plinthc or plc instead of compile.

plutus-executables

No changes.

plutus-metatheory

Removed

  • Temporarily disabled the CaseReduce certifier pass due to the discovery of bugs in the specification.

Fixed

  • The certifier reports now include the number of optimization sites for the force-case-delay pass as well.

Full Changelog: 1.61.0.0...1.62.0.0

1.61.0.0

09 Apr 05:25
6d66070

Choose a tag to compare

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 consClose in 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

Fixed

  • Fixed a 3-5x execution cost regression for unsafeFromBuiltinData on multi-constructor
    types when compiling in SumsOfProducts mode (the default). The caseInteger fallback
    now generates equalsInteger/ifThenElse chains 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

19 Mar 14:21
d4c877e

Choose a tag to compare

plutus-core

Added

  • A new UPLC optimization pass, turning multi-argument applications into case-constr form.

Changed

  • The uplc executable now accepts serialised scripts (in addition to textual
    and flat-encoded). Use --input-format serialised.

plutus-ledger-api

Added

  • Added ScriptContextBuilder test utility (PlutusLedgerApi.Test.ScriptContextBuilder) to plutus-ledger-api-testlib for constructing realistic ScriptContext values in tests using a composable builder pattern.

Fixed

  • Fixed Show instance for TokenName displaying non-printable token names as
    seemingly empty strings. Token names are now always shown as hex-encoded bytes,
    matching CurrencySymbol (#7638).

plutus-tx

Added

  • asData now 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 a typeCheckResultAction to 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 with plinthc or plc instead of compile.

plutus-executables

No changes.

plutus-metatheory

Added

  • Translation relation and decision procedure for the ApplyToCase pass.

Full Changelog: 1.59.0.0...1.60.0.0

1.59.0.0

03 Mar 00:59
d6c9dcf

Choose a tag to compare

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-class dependency (< 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.Eq instances with deriveEq across all V1/V2/V3 types

  • Add PlutusTx.Eq instance for MintValue

  • Replace hand-written PlutusTx.Ord instances with deriveOrd for V1.Extended and V3.ProtocolVersion

plutus-tx

Added

  • A deriveOrd command to derive PlutusTx.Ord instances for datatypes/newtypes, similar to Haskell's
    deriving stock Ord

  • PlutusTx.deriveEq: Template Haskell function to derive PlutusTx.Eq instances
    for datatypes and newtypes, similar to Haskell's deriving 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

21 Feb 00:19
1.58.0.0
b7e75c9

Choose a tag to compare

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.BuiltinUnit by @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

26 Jan 13:16
9d9b539

Choose a tag to compare

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

12 Dec 11:38
e75d9d7

Choose a tag to compare

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