Releases
v0.9.0
Feature release targeting PISA v0.8.0. As PISA v0.8.0 supports storage costing, Coco supports specifying the payer for logic storage via payer keyword on mutate statement. Cocolab supports access control and few new syntax changes improve developer's experience.
Type: Minor Feature · PISA: v0.8.0 · Date: August 14, 2026
New (requires version = "0.8.0" under [target.pisa]):
payerclause onmutate— names who pays for the storage a logic-state write consumes (payer Logic,payer Sender,payer Actor(id);Senderis the default). Logic state onlyEnvironment.StorageResult(account, payer)— returns the storage bytes added and removed in the current interaction, replacing the globalVolumeCapacity()/VolumeAvailable()metering- Actor query methods
Actor(id).Exists(),Actor(id).HasSigned()andActor(id).Param(name)
New in Cocolab:
- Storage access control —
grant,getandwipe storage_mutatesimulate an actor authorizing a logic to write their state, matching the default-deny enforcement of the PISA v0.8.0 runtime. Policies are kept in the session snapshot - Names are validated when a command runs:
callers(...)may only name compiled logics andorigins(...)only registered users, and everyas <actor>clause — on thestorage_mutatecommands and ondeploy/invoke/enlist/create— is rejected outright when it names nothing, instead of coming back as an empty result
Changes (all targets):
- Field name shorthand in class literals —
Person{name}instead ofPerson{name: name}
Breaking (all targets):
- Every asset engine method now carries a required
qualifier: writes are
dynamic, reads arestatic. Asset logic written for 0.8.2, where transfer and approval endpoints carried no qualifier, needs the qualifiers added
Breaking on 0.8.0 targets:
- Writing another actor's state is denied by default.
mutate Module.Actor(id).*for anyone but the sender now requires that actor'sstorage_mutategrant;Module.Sender.*andModule.Logic.*writes and all reads are unaffected Environment.VolumeCapacity()andEnvironment.VolumeAvailable()are not supported; useEnvironment.StorageResult()
v0.8.2
Bug-fix release. Updates runtime to PISA v0.7.1.
Type: Bug-fix · PISA: v0.7.1 · Date: June 19, 2026
Changes:
- Cocolab: persistent session state, configurable
default.basefueland per-callfuel, and events are printed even when an interaction fails - Fixed quoting of hex literals in generated YAML manifests
- Fixed
+=on strings and bytes (now concatenates) - Fixed f-string handling of literal
{{/}}braces and a brace at the end of an expression - Nested and brace-elided composite literals; omitted class fields default to their zero value
- Interface endpoint qualifiers now propagate to the caller
- Updated runtime to PISA v0.7.1
v0.8.1
Bug-fix and added SKILLS.md file.
Type: Bug-fix · PISA: v0.7.0 · Date: March 19, 2026
Changes:
- Fixed a bug when using
gatherdirectly into a function return value - Added SKILLS.md file
v0.8.0
Bug-fix and minor feature release. Updates generation and runtime to PISA v0.7.0.
Type: Bug-fix & Minor Feature · PISA: v0.7.0 · Date: March 6, 2026
Changes:
- Asset and logic names can be used as arguments when invoking endpoints in Cocolab
- Fixed: failed execution no longer leaves partially changed asset objects and state
- Fixed: compiler bug in f-strings when first argument was a non-string expression
- Fixed: "mode" value to "pure" in generated manifests for internal functions
v0.7.1
Minor non-breaking release with participant handling improvements.
Type: Minor Feature · PISA: v0.6.0 · Date: December 23, 2025
Changes:
statickeyword required for endpoints thatobservestate- Endpoints are
pureby default (no access to logic's or actors' state) - Optional sender when interface is bound to a logic enables cross-logic calls as any participant
- Cocolab
invokecommand enhanced withasandwithkeywords
v0.7.0
Major breaking release introducing native assets and cross-logic calls.
Type: Major (Breaking) · PISA: v0.5.0 · Date: October 2, 2025
Changes:
- Native assets support
- Cross-logic calls and state access
- Cocolab environment with asset and cross-logic call support
- Discontinued Logiclab; Cocolab works as standalone testing environment
Breaking:
- Syntax changes from previous versions (function keyword, storage field names)
Binaries for previous releases are available on request.
v0.6.0 (alpha)
Type: Maintenance
Changes:
- Recursive initialisation of non-primitive class fields when using
make - Layered maps support deep assignments by initialising all intermediary map keys
v0.5.0 (alpha)
Type: Maintenance
Changes:
- Bug fixes for layered map behaviours
- Deep assignments support for layered maps
v0.4.0 (alpha)
Type: Major (Breaking)
Changes:
- New language features and syntax changes
- Codegen optimisations and bug fixes
Breaking:
- Compatibility impacts with MOI Protocol and PISA Virtual Machine Runtime