Skip to content

pit v0.16.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 03:48
· 4 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.16.0

Pit 0.16.0

Breaking release — manual function and configuration changes are required.

Migration guide

Install with the existing Git package workflow:

pi install git:github.com/cv/pit@v0.16.0

Restart Pi after updating native addons. Wasmtime prebuilds are available for Linux, macOS, and Windows on ARM64 and x64; the installer verifies release checksums.

Added

  • Inspect native globals, shadowed definitions, provenance, signatures, $next, and effect closures through one paginated registry API and read-only-aware function manager.
  • Enforce signature-compatible layered overrides and support typed $next in session, user, and project definitions, including named execution, promotion, reload, and safe fallback removal.
  • Add functionId for namespaced session definitions, preserving full identifiers through replay, promotion, catalogs, and traces.
  • Build and smoke-test Linux, macOS, and Windows ARM64/x64 Wasmtime addons in CI, attach them to tagged releases, and install only the matching checksum-verified prebuild during Git package installation.
  • Propagate external cancellation into Wasmtime through race-safe execution IDs and epoch interruption.

Breaking changes

  • Require explicit method-level dependency injection for built-ins and saved functions; lexical saved-function calls and whole-namespace capture are removed.
  • functions.listAll() now returns a paginated registry result; getSaved() includes native globals and may have no authored source.
  • User-owned functions use user scope and ${PI_CODING_AGENT_DIR}/functions/, loaded automatically without enablement configuration.
  • Remove legacy user/project path readers and user-global management aliases; user APIs are listUser, getUser, and removeUser, with promotion { to: "user" }.
  • Ignore pre-upgrade pit-functions session entries. New definitions use branch-local pit-function-definitions entries.
  • Discover documented functions recursively by canonical path, with bounded reads and collision/symlink checks. Invalid definitions block affected calls instead of silently falling back.
  • No automatic migration: old files remain untouched. See the migration guide.

Changed

  • Make Wasmtime the default TypeScript function executor.
  • Retain the deprecated permission-restricted Node fallback for unavailable or unloadable implicit prebuilds; explicit Wasmtime requests remain strict.

Security

  • Run each submitted program in a fresh fuel-, time-, memory-, call-, and protocol-bounded Wasmtime store with a non-inheriting WASI Preview 2 context.

Known limitations

  • Function-viewer metadata can have low contrast on dark themes; tracked for a follow-up release in #90.

What's Changed

  • docs: describe current runtime architecture by @cv in #81
  • feat: unify functions and add opt-in Wasmtime execution by @cv in #83
  • feat: make Wasmtime the default function executor by @cv in #84
  • ci: deliver cross-platform Wasmtime prebuilds by @cv in #85
  • feat: adopt canonical user function persistence by @cv in #86
  • feat: support namespaced session function identifiers by @cv in #87
  • feat: validate compatible overrides and persist next chains by @cv in #88
  • feat: inspect and browse the complete layered function registry by @cv in #89
  • release: prepare 0.16.0 by @cv in #91

Full Changelog: v0.15.1...v0.16.0