Skip to main content

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]):

  • payer clause on mutate — names who pays for the storage a logic-state write consumes (payer Logic, payer Sender, payer Actor(id); Sender is the default). Logic state only
  • Environment.StorageResult(account, payer) — returns the storage bytes added and removed in the current interaction, replacing the global VolumeCapacity() / VolumeAvailable() metering
  • Actor query methods Actor(id).Exists(), Actor(id).HasSigned() and Actor(id).Param(name)

New in Cocolab:

  • Storage access controlgrant, get and wipe storage_mutate simulate 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 and origins(...) only registered users, and every as <actor> clause — on the storage_mutate commands and on deploy/invoke/enlist/create — is rejected outright when it names nothing, instead of coming back as an empty result

Changes (all targets):

Breaking (all targets):

  • Every asset engine method now carries a required qualifier: writes are dynamic, reads are static. 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's storage_mutate grant; Module.Sender.* and Module.Logic.* writes and all reads are unaffected
  • Environment.VolumeCapacity() and Environment.VolumeAvailable() are not supported; use Environment.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.basefuel and per-call fuel, 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 gather directly 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:

  • static keyword required for endpoints that observe state
  • Endpoints are pure by 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 invoke command enhanced with as and with keywords

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