- CIP-117: fail on non-unit results in Plutus V3 scripts
- OptimizingSirToUplcLowering threw an exception when generateErrorTraces was enabled
- customizable UPLC Inliner optimization pass
- Prelude List functions: single, cons, length, map2
- experimental Groth16 SNARK implementation
- Data
toCbor
andfromCbor
extensions - add generated ScalaDocs to website
- code is updated to Scala 3.5+
- use latest dependencies
- BLS12-381 G1/G2 compressed zero points encoding
Nothing changed, just pushed the wrong commit under 0.8.1.
- cost model for
integerToBytestring
andbytestringToInteger
- flat encoding of SIR
Data
was wrong forMap
andList
types
- initial Plutus V3 support:
- all builtins work on JVM
- V3
ScriptContext
etc for script compilation - V3 script evaluation and cost calculation
- Cardano Client Lib can use
ScalusTransactionEvaluator
for V3 script evaluation - improved
deriveEnum
forToData
andFromData
(see Tutorial)
- few renames and API changes in
scalus-bloxbean-cardano-client-lib
Interop
module
VM.evaluateDebug
with useful info about the execution: budget, costs, builtins, logseval
,evalDebug
,show
,showHightlighted
extensions forTerm
andProgram
toUplcOptimized
extension forSIR
to generate optimized UPLC code?
tracing operator andlog
function similar to Aiken's?
operator
- don't remove top-level eta-expansions in
compile
method
- fieldAsData/field didn't work for aliaed types
- small fix in
OptimizingSirToUplcLowering
with tracing errors - multiple inner matches in pattern matching code generation
- implemented all Plutus V1/V2 builtins on JVM and JavaScript platforms
- passing all Plutus Conformance Tests on JVM and JavaScript platforms
OptimizingSirToUplcLowering
SIR to UPLC lowering with built-in optimizations- PlutusV3 constr/case support
Data.to*
extension methods
- speedup
UplcParser
by 10x
- use Java 11 on Github CI and release builds
Scalus CEK and cost calculation implementation is now feature complete.
We were able to validate transactions from whole Cardano Epoch 484 using Scalus and Cardano Client Lib.
ScalusTransactionEvaluator
- Cardano Client Lib (CCL)TransactionEvaluator
implementation. You can now use Scalus to evaluate scripts and their costs off-chain during transaction building.- SIR and UPLC optimizations:
RemoveRecursivity
,EtaReduce
evaluateScriptRestricting
mode- Advanced documentation
Data
JSON codec
- optimized From/ToData instances to generate less code
PlutusV1Params
,PlutusV2Params
are now classes with Long fields- Removed type parameter from
Interval
- bytesToHex uses lowercase hex characters
- memoryUsageInteger was wrong in certain cases
- sliceByteString wrong order of parameters
- Data CBOR encoding of large integers must be chunked by 64 byte chunks
- typo in
ConstAboveDiagonal
cost calculation implementation
- compile
==
,!=
operators as Plutus builtins forBoolean
,ByteString
,String
andData
types ++
operator,size
andlength
functions forByteString
- wrong
ConstAboveDiagonal
cost calculation used in division
- fast debruijned CEK machine implementation
- CEK machine benchmarking, runs on par with high performance Haskell implementation
- CEK machine execution budget calculation
- cost model for CEK machine loading from Cardano CLI and Blockfrost API JSONs
- updated to Scala 3.3.3
- updated to Scala.js 1.16.0, 3x reduction in JS bundle size
- lots of internal refactoring
- better error messages in the compiler
- Scalus Intermediate Representation (SIR) now has a version number (requires recompilation of existing SIR)
- SIR and UPLC pretty printers can print normal and syntax highlighted code using XTerm colors
- UPLC pretty printer outputs a better indented code
- added Blake2b 224 builtin implementation on JVM
- updated dependencies: Scala 3.3.2
- use uplc cli from Plutus 1.15.0.1
- moved scalus.uplc.Data to scalus.builtin.Data
- renamed scalus.builtins to scalus.builtin
- Plutus Data Map can have duplicate keys; fixed Data CBOR codec to handle this case.