CellScript 0.16 → 0.20 Release Notes
CellScript 0.16 to 0.20 is the move from a compiler that emits an artifact and
metadata into a fuller build path: source packages, lockfiles, deployment
identity, generated builders, browser compilation, and stricter CKB evidence.
CellScript now gives downstream tools a clearer answer to “what source was built, what artifact came out, what deployment does it match, and what transaction-builder assumptions still need real CKB evidence?”
Why This Is One Note
The 0.17, 0.18, and 0.19 work was important, but not cleanly user-facing on its
own. Those releases moved the iCKB research surface, CKB protocol helpers,
first-class Script handling, package identity, registry verification, and
adapter boundaries forward in overlapping steps.
For readers, the useful public story is the larger 0.16 to 0.20 arc. The
per-version patch notes for 0.16.1 and 0.16.2 remain separate because they
describe concrete fixes on the 0.16 line. The 0.20 release note carries the
detailed final evidence boundary.
The Main Changes
1. Better Handoff To Transaction Builders
0.16.1 cleaned up the bundled examples for external builders: token minting,
launch bootstrap, AMM pool creation, and NFT collection creation now expose the
first-cell paths directly instead of relying on implicit harness knowledge.
0.16.2 then made the CLI handoff more concrete:
cellc explain-assumptionsandcellc solve-txcan be scoped with
--entry-actionor--entry-lock.cellc entry-witnessexposes witness shape and script-group witness
placement.cellc resource-identityemits passive resource identity plans for resource
output type scripts.cellc validate-txchecks transaction shape, resource identities, and
production fixture-identity mistakes before signing.cellc builder manifestandcellc builder checkare the canonical
builder-facing workflow over ABI, constraints, witness, assumptions,
resource identity, and validation.
0.20 builds on that handoff with cellc gen-builder --target typescript, which
generates a typed TypeScript builder scaffold from compiler metadata.
The generated builder is intentionally bounded. It can plan actions, validate
lockfile and deployment identity, and delegate build / dry-run / submit work to
a runtime adapter. It is not a wallet, signer, indexer, or full CKB transaction
solver.
2. Package And Deployment Identity
By 0.20, CellScript projects are no longer treated as loose source files.
Cell.toml, Cell.lock, Deployed.toml, registry records, source hashes,
artifact hashes, metadata hashes, schema hashes, ABI hashes, constraint hashes,
and cell-data codec hashes now form one identity chain.
That means a tool can fail closed when the source, build, registry record,
deployment record, or live chain data no longer match. The registry resolver
uses the Git-backed source-package model, verifies source_hash, skips yanked
versions, and records the result in Cell.lock.
3. Multi-File Packages
Now CellScript 0.20 treats package compilation as a source graph.
Imports are exact-path, local package dependencies are loaded before frontend checks, diagnostics point back to the right file, and cache keys include dependency sources plus package
metadata.
Cross-file type, schema, and helper reuse is supported inside one entry
artifact. This is compile-time reuse, not an ELF linker and not cross-script
runtime linking.
4. More Honest CKB Evidence
The CKB/devnet acceptance path now checks the ELF entry ABI before accepting local-node evidence. The gate rejects compiled CKB ELFs that do not preserve the CKB-VM entry assumptions.
Acceptance reports also include exact build rows that bind the compiled ELF, host hash, CKB deployable hash, verify-artifact result, ABI gate result, and live code-cell data hash when devnet deployment evidence exists.
Compile-only evidence is still useful, but it is not the same as live devnet or
chain evidence.
5. Clearer CLI, LSP, And Playground Experience
The CLI is easier to approach:
- top-level help shows package commands and direct compile mode;
cellc --listenumerates commands;- unknown bare commands get suggestions;
- parse, lex, and compile errors include source snippets;
- package checks report multiple frontend errors with file context.
The browser playground now supports a local multi-file workspace over the WASM compiler path. It stays client-side: no server compile API, no uploaded source archive, and no server-owned project state.
6. Protocol Work Stayed Explicit
The line adds or matures CKB-facing helpers for SourceView, Script and ScriptArgs handling, WitnessArgs extraction, DAO / xUDT / Type ID related checks, OutPoint and MetaPoint scans, capacity helpers, and raw cell-data codec metadata.
Those helpers are compiler and verifier surface, not hidden protocol magic.
When a feature needs external data, builder work, or chain acceptance, the metadata says so.
7. CellScript-Native Protocols And Research Surfaces
NovaSeal and Evolving DOB are bundled CellScript-native protocols.
NovaSeal has local and devnet evidence across several profiles, including the 0.20 multi-file fungible-xUDT refactor. Public production status still depends on current external BIP340 TCB review, public BTC SPV evidence, public/shared CellDep evidence, and profile-specific attestations.
Evolving DOB profile v1 is included as proposal evidence with manifests, fixtures, ProofPlan and invariant records, devnet workflow material, and audit notes. It is not a claim that every guard, registry pressure path, or deployment policy question is closed.
iCKB equivalence remains benchmark and differential-evidence work. The committed matrix has original-vs-CellScript and CellScript-only CKB VM rows, but production equivalence is not claimed. Keep it labelled as research / benchmark evidence until the missing production-equivalence closure work is actually done.
What Was Removed Or Tightened
The legacy transfer capability is gone from the active surface and its test matrix. Old investigation notes were removed or archived so stale status does not look current.
Raw cell-data access is now named through the cell-data codec manifest. Public raw-layout production claims still need the external codec, builder, indexer, and parity evidence that such claims require.
Validation
For routine local development:
./scripts/cellscript_gate.sh dev
For merge-readiness:
./scripts/cellscript_gate.sh ci
For CKB production or external live/devnet claims:
./scripts/cellscript_gate.sh release
For compile-only release preflight:
./scripts/cellscript_gate.sh release-quick
Use release for any claim that depends on live/devnet CKB evidence.
release-quick is not external chain evidence.
For website or playground changes, also run:
website/scripts/build-wasm.sh
(cd website && npm run build)
