Releases: OpShin/opshin
0.27.1
This is a patch release that fixes a number of bugs new in OpShin for Plutus V3
- The data and redeemer in generated blueprints are now not specified anymore (as they can not be inferred from the validator signature)
- The parameter annotation in the generated blueprints was fixed to correctly generate pycardano PlutusData classes from JSON and correctly convert PlutusData into JSON.
- OpShin contracts now include a language and version marker in compiled code of the form
apply (lambda _: <contract>) (con bytestring <marker>), where<marker>is an ASCII encodedofollowed by three integers that are the major, minor and patch version numbers. - The
<contract>.plutusdump is now correctly double-CBOR-wrapped (matching the expected formatting for the cardano-cli)
What's Changed
👒 Dependencies
- Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #588
Full Changelog: 0.27.0...0.27.1
0.27.0
This version brings support for PlutusV3. It also disables support for PlutusV2. Please see the migration guide for details on how to adapt your smart contracts for PlutusV3!
What's Changed
🏕 Features
- Plutus V3 support by @nielstron in #549
- Force user to specify number of offchain parameters when building by @nielstron in #554
👒 Dependencies
- Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in #553
Full Changelog: 0.26.1...0.27.0
0.26.1
What's Changed
🏕 Features
- Support the latest uplc version by @nielstron in #548
🐛 Bug fixes
- Fix incorrect application of optimization settings by @nielstron in #551
- Various fixes around constant folding by default by @nielstron in #552
Full Changelog: 0.26.0...0.26.1
0.26.0
This version significantly reduces the size of compiled binaries, especially in compiler level O3, see the binary size tracker website: https://opshin.opshin.dev/binary_size_trends.html
What's Changed
🏕 Features
- Fix typos discovered by codespell by @cclauss in #541
- Enable UPLC-level optimizations in OpShin by @nielstron in #543
- Extend binary size tracker with execution cost tracking by @Copilot in #545
- Chore/migrate to uv by @NotHolmes in #546
New Contributors
- @cclauss made their first contribution in #541
- @NotHolmes made their first contribution in #546
Full Changelog: 0.25.0...0.26.0
0.25.0
This release marks the completion of the OpShin audit. It contains numerous fixes and improvements over version 0.24.x, concretely tackling all reported issues in the OpShin Audit report. The audit report contains a detailed description of how every raised issue was addressed. Below is a summary of the most important changes.
What's Changed
🏕 Features
- Loosen dependencies, including allowing Python 3.13 by @nielstron in #498
- Add optimized bytestring index accesses when index can be resolved to a constant by @nielstron in #500
- Avoid redundant computation in Dict subscript by @nielstron in #501
- Feat/reverse pows by @nielstron in #502
- Clean up imports, removing "import *" statements by @nielstron in #504
- Deduplicate the hex and oct builtins by @nielstron in #506
- Increase coverage by adding unit tests by @nielstron in #508
- Add python3.13 by @nielstron in #509
- Document POSIXTime Adequately by @nielstron in #514
- Implement binary size tracker for OpShin contracts by @Copilot in #521
- Feat/website binary size tracking by @nielstron in #529
- Loosen the requirements for importing from typing, unify with Self by @nielstron in #537
- Simplify error messages in copy_only_attributes, to reduce size by @nielstron in #540
👒 Dependencies
- Bump hypothesis from 6.138.7 to 6.139.1 by @dependabot[bot] in #519
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #517
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #534
- Bump actions/github-script from 7 to 8 by @dependabot[bot] in #533
- Bump black from 25.1.0 to 25.9.0 by @dependabot[bot] in #526
- Bump hypothesis from 6.139.1 to 6.140.2 by @dependabot[bot] in #535
🐛 Bugfixes
- Disallow custom functions and classes to overwrite builtins by @nielstron in #499
- Test and fix plutus data creation from cbor/json by @nielstron in #512
- Fix handling of negative indices for tuples and pairs by @nielstron in #539
- Add shortcut semantics for the all/any builtins by @nielstron in #538
Full Changelog: 0.24.4...0.25.0
0.24.4
This patch release resolves a variety of issues revolving around the use of class methods and dunder methods.
As with 0.24.3, it is still highly recommend for anyone on 0.24.0 or later to upgrade to include the audit-related bug fixes.
What's Changed
🏕 Features
👒 Dependencies
- Bump hypothesis from 6.137.1 to 6.138.6 by @dependabot[bot] in #487
- Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in #485
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #483
- Bump pre-commit from 4.2.0 to 4.3.0 by @dependabot[bot] in #476
🐛 Bugfixes
- Fix an issue in chained comparisons by @nielstron in #488
- Add radd and other reverse dunder methods, generally clean up dunder code by @nielstron in #493
- Fix casting of values in list/dict comprehensions using isinstance by @nielstron in #497
Full Changelog: 0.24.3...0.24.4
0.24.3
This release adds a number of bug patches due to the OpShin Audit Report . This includes a variety of bug fixes related to the new (and hopefully little used) Union of builtin types, but also some older issues relating to False/True constructors in the Script Context and casting elements in list expressions.
All users of OpShin 0.24.0 or later are heavily advised to upgrade to this version.
What's Changed
🏕 Features
- Add support for the Plutus V3 ScriptContext by @nielstron in #435
- Add rewrite for assert none by @nielstron in #436
👒 Dependencies
- Bump hypothesis from 6.131.8 to 6.135.7 by @dependabot[bot] in #450
- Bump coverage from 7.8.0 to 7.9.0 by @dependabot[bot] in #449
- Bump pytest from 8.3.5 to 8.4.0 by @dependabot[bot] in #443
- Bump coverage from 7.9.0 to 7.10.2 by @dependabot[bot] in #464
- Bump hypothesis from 6.135.7 to 6.137.1 by @dependabot[bot] in #466
- Bump dcarbone/install-jq-action from 3.0.1 to 3.2.0 by @dependabot[bot] in #453
🐛 Bugfixes
- Fix True/False swapped constructors by @nielstron in #437
- Fix stringification of Union with int, bytes, dict, map by @nielstron in #478
- Add a fix for audit report #1 (missing boolean cast for list comprehension ifs) by @nielstron in #438
- Add implementation and test cases for list equality by @nielstron in #440
- Add a fix for audit report ID-S506 by @nielstron in #451
- Attempt fixing the reported vulnerability ID-S507 in audit report by @nielstron in #452
- Feat/constr field union by @nielstron in #467
- Attempt fixing the reported vulnerability #2 in audit report by @nielstron in #439
- Resolve ID-S505 by @nielstron in #469
- Remove injections of builtin constructors (as these are polymorphic) by @nielstron in #470
- Check that aliasing check_integrity is properly implemented by @nielstron in #471
- Fix type error for tuple loops by @nielstron in #473
- Fix lack tuple assignment cardinality check by @nielstron in #474
- Fix dictionaries and lists that contain unions of builtin data by @nielstron in #479
- Raise an error when importing in the wrong format by @nielstron in #475
- Fixes inconsistent error messages and compilation errors for nested Unions by @nielstron in #477
Full Changelog: 0.24.2...0.24.3
0.24.2
What's Changed
👒 Dependencies
- Bump JRubics/poetry-publish from 2.0 to 2.1 by @dependabot in #415
- Bump pre-commit from 3.8.0 to 4.1.0 by @dependabot in #418
- Bump hypothesis from 6.127.3 to 6.128.1 by @dependabot in #419
- Bump actions/setup-python from 4 to 5 by @dependabot in #411
- Bump dcarbone/install-jq-action from 2.1.0 to 3.0.1 by @dependabot in #414
- Bump hypothesis from 6.128.1 to 6.129.1 by @dependabot in #421
- Bump pre-commit from 4.1.0 to 4.2.0 by @dependabot in #423
- Bump coverage from 7.6.12 to 7.7.1 by @dependabot in #425
- Bump hypothesis from 6.129.1 to 6.130.3 by @dependabot in #426
Full Changelog: 0.24.1...0.24.2
0.24.1
This version drops support for Python 3.8
What's Changed
🏕 Features
- Add fast list access implementation by @nielstron in #337
Full Changelog: 0.24.0...0.24.1
0.24.0
What's Changed
🏕 Features
- Unions of PlutusData and BuiltinData by @SCMusson in #397
- Feat/migrate workflow by @nielstron in #406
- Bug fix, Recursion Error #369 by @SCMusson in #404
- Fractions functionality issue #395 by @SCMusson in #403
👒 Dependencies
- Bump cryptography from 43.0.0 to 43.0.1 by @dependabot in #407
- Bump hypothesis from 6.111.2 to 6.112.0 by @dependabot in #409
- Bump actions/checkout from 3 to 4 by @dependabot in #412
- Bump hypothesis from 6.112.5 to 6.113.0 by @dependabot in #413
Full Changelog: 0.23.1...0.24.0