This is the working implementation TODO for upcoming VibeScript releases.
How to use this file:
- Keep release scope realistic and bias toward shipping.
- Move unfinished items forward instead of silently dropping them.
- Link each checklist item to an issue/PR once created.
- Mark items complete only after tests/docs are updated.
Release status legend:
[ ]not started[~]in progress (replace manually while working)[x]complete
These releases are already shipped and tagged. Completion dates reflect the corresponding git tag date.
- Added GitHub Actions CI workflow.
- Added stack traces to runtime errors.
- Expanded baseline stdlib coverage.
- Added optional-parens syntax support.
- Added initial CLI support.
- Fixed package/versioning setup for release tagging.
- Added GoReleaser-based release automation.
- Added recursion depth limit enforcement.
- Added recursion limit test coverage.
- Pinned GoReleaser version for stable release builds.
- Adjusted GoReleaser configuration.
- Added
Number#times. - Added
Durationclass modeled after ActiveSupport-style duration semantics.
- Added duration arithmetic support.
- Improved optional-parens behavior for zero-arg methods.
- Implemented
Timeclass.
- Renamed
Time#strftimetoTime#formatfor Go layout alignment. - Added Duration and Time documentation.
- Added first pass of gradual typing.
- Added support for classes.
- Added block arguments in method definitions.
- Added numeric literal underscore separators.
- Expanded complex tests/examples coverage.
- Expanded test suite breadth.
- Landed performance optimizations and refactors.
- Exported
CallBlock()for embedders.
- Added runtime memory quota enforcement.
- Enforced strict effects for globals and
require. - Isolated
Script.Callruntime state per invocation. - Replaced panicking constructors with error-returning APIs.
- Increased CLI/REPL test coverage and added execution benchmarks.
- Shipped multi-phase string helper expansion.
- Added regex/byte helper coverage and bang-method parity improvements.
- Expanded Hash built-ins and hash manipulation support.
- Refreshed hash docs and examples.
- Expanded Array helper surface and enumerable workflows.
- Made Time and numeric APIs coherent with documented behavior.
- Improved parse/runtime error feedback and debugging quality.
- Hardened
requirebehavior for safer module composition. - Improved private helper/module boundary behavior.
- Improved circular dependency diagnostics for modules.
- Enforced capability contracts at runtime boundaries.
- Added contract validation paths for capability args and returns.
- Improved capability isolation and contract binding behavior.
Goal: make host integrations first-class and safe enough for production workflows.
- Add first-party
dbcapability adapter interface and implementation. - Add first-party
eventscapability adapter interface and implementation. - Add first-party
ctxcapability adapter for request/user/tenant metadata. - Define naming conventions for adapter method exposure (
cap.method). - Ensure all adapters support context propagation and cancellation.
- Add capability method contracts for all new adapter methods.
- Validate args/kwargs/returns for
dbadapter methods. - Validate args/kwargs/returns for
eventsadapter methods. - Add explicit data-only boundary checks for all capability returns.
- Add contract error messages with actionable call-site context.
- Promote
examples/background/scenarios to fully supported behavior. - Convert
examples/future/iteration.vibefrom stretch to supported. - Add docs for common capability patterns (query + transform + enqueue).
- Add docs for capability failure handling patterns.
- Add unit tests for each capability adapter method.
- Add integration tests for mixed capability calls in one script.
- Add negative tests for type violations and invalid payload shapes.
- Add quota/recursion interaction tests with capability-heavy scripts.
- Add benchmarks for capability call overhead.
- All new capabilities documented in
docs/integration.md. - Background/future examples run in CI examples suite.
- No contract bypasses in capability call boundaries.
Goal: make types expressive enough for real workflows while keeping runtime checks predictable.
- Add parametric container types:
array<T>,hash<K, V>. - Add union types beyond nil:
A | B. - Add typed object/hash shape syntax for common payload contracts.
- Add typed block signatures where appropriate.
- Define type display formatting for readable runtime errors.
- Specify variance/invariance rules for container assignments.
- Specify nullability interactions with unions (
T?vsT | nil). - Define coercion policy (no coercion vs explicit coercion helpers).
- Decide strictness for unknown keyword args under typed signatures.
- Extend parser grammar for generic and union type expressions.
- Extend type resolver and internal type representation.
- Add runtime validators for composite/union types.
- Add contract interop so capability contracts can reuse type validators.
- Add parser tests for all new type syntax forms.
- Add runtime tests for nested composite type checks.
- Add regression tests for existing
anyand nullable behavior. - Expand
docs/typing.mdwith migration examples.
- Existing scripts without annotations remain compatible.
- Type errors include parameter name, expected type, and actual type.
- Capability contract validation can use the same type primitives.
Goal: improve language ergonomics for complex script logic and recovery behavior.
- Add
whileloops. - Add
untilloops. - Add loop control keywords:
breakandnext. - Add
case/whenexpression support (if approved). - Define behavior for nested loop control and block boundaries.
- Add structured error handling syntax (
begin/rescue/ensureor equivalent). - Add typed error matching where feasible.
- Define re-raise semantics and stack preservation.
- Ensure runtime errors preserve original position and call frames.
- Ensure new control flow integrates with step quota accounting.
- Ensure new constructs integrate with recursion/memory quotas.
- Validate behavior inside class methods, blocks, and capability callbacks.
- Add parser/runtime tests for each new control flow construct.
- Add nested control flow tests for edge cases.
- Add docs updates in
docs/control-flow.mdanddocs/errors.md. - Add examples under
examples/control_flow/for each new feature.
- No regressions in existing
if/for/rangebehavior. - Structured error handling works with assertions and runtime errors.
- Coverage includes nested/edge control-flow paths.
Goal: make multi-file script projects easier to compose and maintain.
- Add explicit export controls (beyond underscore naming).
- Add import aliasing for module objects.
- Define and enforce module namespace conflict behavior.
- Improve cycle error diagnostics with concise chain rendering.
- Add module cache invalidation policy for long-running hosts.
- Tighten module root boundary checks and path normalization.
- Add test coverage for path traversal attempts.
- Add explicit policy hooks for module allow/deny lists.
- Add docs for module project layout best practices.
- Add examples for reusable helper modules and namespaced imports.
- Add migration guide for existing
requireusers.
- Module APIs are explicit and predictable.
- Error output for cycle/import failures is actionable.
- Security invariants around module paths are fully tested.
Goal: reduce host-side boilerplate for common scripting tasks.
- Add JSON parse/stringify built-ins.
- Add regex matching/replacement helpers.
- Add UUID/random identifier utilities with deterministic test hooks.
- Add richer date/time parsing helpers for common layouts.
- Add safer numeric conversions and clamp/round helpers.
- Expand hash helpers for nested transforms and key remapping.
- Expand array helpers for chunking/windowing and stable group operations.
- Add string helpers for common normalization and templating tasks.
- Define deterministic behavior for locale-sensitive operations.
- Add quotas/guards around potentially expensive operations.
- Ensure new stdlib functions are capability-safe where required.
- Add comprehensive docs pages and examples for each new family.
- Add negative tests for malformed JSON/regex patterns.
- Add benchmark coverage for hot stdlib paths.
- New stdlib is documented and example-backed.
- Runtime behavior is deterministic across supported OSes.
- Security/performance guardrails are validated by tests.
Goal: improve day-to-day developer productivity and interpreter robustness.
- Add canonical formatter command and CI check.
- Add language server protocol (LSP) prototype (hover, completion, diagnostics).
- Add static analysis command for script-level linting.
- Improve REPL inspection commands (globals/functions/types).
- Profile evaluator hotspots and optimize dispatch paths.
- Reduce allocations in common value transformations.
- Improve error rendering for deeply nested call stacks.
- Add fuzz tests for parser and runtime edge cases.
- Add smoke tests for docs examples to CI.
- Add release checklist automation for changelog/version bumps.
- Add compatibility matrix notes for supported Go versions.
- Tooling commands are documented and stable.
- Performance regressions are tracked with benchmarks.
- CI includes example and fuzz coverage gates.
Goal: lock the language and embedding API for long-term support.
- Freeze core syntax and document compatibility guarantees.
- Freeze public Go embedding APIs or publish deprecation policy.
- Publish semantic versioning and compatibility contract.
- Complete migration notes for all pre-1.0 breaking changes.
- Publish complete language reference.
- Publish host integration cookbook with production patterns.
- Provide starter templates for common embedding scenarios.
- Zero known P0/P1 correctness bugs.
- CI green across supported platforms and Go versions.
- Release process rehearsed and repeatable.
Goal: make performance improvements measurable, repeatable, and protected against regressions.
- Profile evaluator hotspots and prioritize top 3 CPU paths by cumulative time.
- Reduce
Script.Calloverhead for short-running scripts (frame/env setup and teardown). - Optimize method dispatch and member access fast paths.
- Reduce allocations in common collection transforms (
map,select,reduce,chunk,window). - Optimize typed argument/return validation for nested composite types.
- Reduce transient allocations in stdlib JSON/Regex/String helper paths.
- Reduce temporary map/array churn in module and capability boundary code paths.
- Add per-benchmark allocation targets (
allocs/op) for hot runtime paths. - Add focused regression tests for high-allocation call patterns.
- Expand benchmark suite for compile, call, control-flow, and typed-runtime workloads.
- Add capability-heavy benchmarks (db/events/context adapters + contract validation).
- Add module-system benchmarks (
require, cache hits, cache misses, cycle paths). - Add stdlib benchmarks for JSON/Regex/Time/String/Array/Hash hot operations.
- Add representative end-to-end benchmarks using
tests/complex/*.vibeworkloads.
- Add a single benchmark runner command/script with stable flags and output format.
- Persist benchmark baselines in versioned artifacts for release comparison.
- Add PR-time benchmark smoke checks with threshold-based alerts.
- Add scheduled full benchmark runs with trend reporting.
- Document benchmark interpretation and triage workflow.
- Add reproducible CPU profile capture workflow for compile and runtime benchmarks.
- Add memory profile capture workflow for allocation-heavy scenarios.
- Add flamegraph generation instructions and hotspot triage checklist.
- Add a short "performance playbook" for validating optimizations before merge.
- Benchmarks cover runtime, capability, module, and stdlib hot paths.
- CI reports benchmark deltas for guarded smoke benchmarks.
- Measurable improvements are achieved before the v1.0.0 release tag.
- Performance and benchmarking workflows are documented and maintainable.
Goal: add first-class nominal enums and harden the typed runtime around enum resolution and coercion.
- Add top-level
enumdeclarations with scoped::member access. - Add enum member reflection via
.name,.symbol, and.enum. - Add enum-aware serialization for
JSON.stringifyandstring.template. - Add typed enum annotations and matching symbol coercion across function and block boundaries.
- Export top-level enums through
requirealongside module functions.
- Resolve enum types case-insensitively while rejecting ambiguous matches.
- Preserve enum-named member access and allow enum labels in typed shape fields.
- Reject enum names that shadow built-in types or use reserved suffix forms.
- Fix enum lookup across shadowed envs, nullable types, block owner resolution, and union/hash-key normalization paths.
- Guard recursive normalization against cyclic values.
- Add runnable enum examples and integration coverage aligned with
docs/enums.md. - Upgrade the REPL to Bubble Tea v2.
- Add race-detector coverage and tighten fuzz/benchmark quality gates.
- Add a
just installworkflow for the CLI and document editor support integrations. - Make release workflow reruns idempotent for existing tags.
- Enum syntax and typed-runtime behavior are documented and exercised by runnable examples and tests.
- Enum resolution behaves correctly across modules, blocks, shadowed scopes, and typed normalization paths.
- Tooling and release automation changes are documented and stable for the next release cycle.
Goal: remove a handful of parser and runtime edge cases that were blocking direct ports of Ruby-flavored RosettaCode examples.
- Stop
if,elsif,while,until,for,return, andraisefrom accidentally consuming next-line literals and indexing expressions. - Preserve explicit multiline continuations in line-limited headers for chained calls and operators.
- Support bare
returnin line-terminated statement form.
- Make
&&and||evaluate lazily so guard expressions short-circuit correctly. - Align signed
int / intandint % intbehavior with floor-style Ruby semantics. - Add
array.length,array.empty?, andarray.fetchfor lower-friction Ruby ports. - Reject fractional numeric indices in
array.fetchinstead of truncating silently.
- Add regression tests for multiline control-flow headers, guard short-circuiting, signed integer arithmetic, and array helper behavior.
- Keep integration expectations aligned with the updated integer arithmetic semantics.
- Rosetta-style ports no longer fail on newline-sensitive control-flow parsing, eager boolean guards, or missing array aliases.
- Signed integer arithmetic and
array.fetchbehavior are covered by targeted regressions and the fullgo test ./vibessuite.