pit v0.16.0
·
4 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Pit 0.16.0
Breaking release — manual function and configuration changes are required.
Install with the existing Git package workflow:
pi install git:github.com/cv/pit@v0.16.0Restart 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
$nextin session, user, and project definitions, including named execution, promotion, reload, and safe fallback removal. - Add
functionIdfor 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
userscope 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, andremoveUser, with promotion{ to: "user" }. - Ignore pre-upgrade
pit-functionssession entries. New definitions use branch-localpit-function-definitionsentries. - 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