Plutus Core Team Update
High level summary
The Plutus team recently published a blog blog post about the improved uplc command-line tool.
Among other things, the tool can optimize Plutus scripts. Experiments on recent mainnet scripts indicate execution-cost savings of more than 10% on average. So, if you are not already using it, it is worth checking what you may be leaving on the table.
Feedback, bug reports, and ideas for further improvements are very welcome. Please share them by opening issues in the Plutus repository on GitHub.
Further improvements to UPLC optimization have been made in recent weeks and are now integrated into the uplc tool.
These include a new --inline-unconditional-growth flag for tuning the aggressiveness of the inliner, Agda certifiers for several optimization passes, a new UPLC constant-folding pass, and a pass that hoists polymorphic builtins to reduce the use of force.
Common subexpression elimination (CSE) has also been improved.
Low level summary
Key Pull Requests Merged
- Make CSE see through bindings
- Add
inline-unconditional-growthflag, controlling aggressiveness of unconditional inlining - Remove
PlutusTx.Pluginandplc; makeinjectAnchorsoptional forplinthc - Certifier: fix the CSE translation relation and re-enable it
- Certifier for case-reduce
- Add uplc command line tool user guide
- Certifier for LetFloatOut pass
- Add detailed error message for unsupported casing on Integer
- Improve error reporting for a few unsupported types
- Add a constant folding pass to UPLC
- Add uplc command line tool user guide
- Print optimization report in
uplc optimize - [uplc] Use typical key order in optimized blueprint
- UPLC optimization pass: hoist polymorphic builtins
