|
| 1 | +# VibeScript Roadmap and Implementation Checklist |
| 2 | + |
| 3 | +This is the working implementation TODO for upcoming VibeScript releases. |
| 4 | + |
| 5 | +How to use this file: |
| 6 | + |
| 7 | +- Keep release scope realistic and bias toward shipping. |
| 8 | +- Move unfinished items forward instead of silently dropping them. |
| 9 | +- Link each checklist item to an issue/PR once created. |
| 10 | +- Mark items complete only after tests/docs are updated. |
| 11 | + |
| 12 | +Release status legend: |
| 13 | + |
| 14 | +- `[ ]` not started |
| 15 | +- `[~]` in progress (replace manually while working) |
| 16 | +- `[x]` complete |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +## Historical Completed Releases |
| 21 | + |
| 22 | +These releases are already shipped and tagged. |
| 23 | + |
| 24 | +### v0.1.0 |
| 25 | + |
| 26 | +- [x] Added GitHub Actions CI workflow. |
| 27 | +- [x] Added stack traces to runtime errors. |
| 28 | +- [x] Expanded baseline stdlib coverage. |
| 29 | +- [x] Added optional-parens syntax support. |
| 30 | +- [x] Added initial CLI support. |
| 31 | +- [x] Fixed package/versioning setup for release tagging. |
| 32 | + |
| 33 | +### v0.2.0 |
| 34 | + |
| 35 | +- [x] Added GoReleaser-based release automation. |
| 36 | +- [x] Added recursion depth limit enforcement. |
| 37 | +- [x] Added recursion limit test coverage. |
| 38 | + |
| 39 | +### v0.2.1 |
| 40 | + |
| 41 | +- [x] Pinned GoReleaser version for stable release builds. |
| 42 | + |
| 43 | +### v0.2.2 |
| 44 | + |
| 45 | +- [x] Adjusted GoReleaser configuration. |
| 46 | + |
| 47 | +### v0.3.0 |
| 48 | + |
| 49 | +- [x] Added `Number#times`. |
| 50 | +- [x] Added `Duration` class modeled after ActiveSupport-style duration semantics. |
| 51 | + |
| 52 | +### v0.4.0 |
| 53 | + |
| 54 | +- [x] Added duration arithmetic support. |
| 55 | +- [x] Improved optional-parens behavior for zero-arg methods. |
| 56 | +- [x] Implemented `Time` class. |
| 57 | + |
| 58 | +### v0.4.1 |
| 59 | + |
| 60 | +- [x] Renamed `Time#strftime` to `Time#format` for Go layout alignment. |
| 61 | +- [x] Added Duration and Time documentation. |
| 62 | + |
| 63 | +### v0.5.0 |
| 64 | + |
| 65 | +- [x] Added first pass of gradual typing. |
| 66 | +- [x] Added support for classes. |
| 67 | +- [x] Added block arguments in method definitions. |
| 68 | +- [x] Added numeric literal underscore separators. |
| 69 | +- [x] Expanded complex tests/examples coverage. |
| 70 | + |
| 71 | +### v0.5.1 |
| 72 | + |
| 73 | +- [x] Expanded test suite breadth. |
| 74 | +- [x] Landed performance optimizations and refactors. |
| 75 | +- [x] Exported `CallBlock()` for embedders. |
| 76 | + |
| 77 | +### v0.6.0 |
| 78 | + |
| 79 | +- [x] Added runtime memory quota enforcement. |
| 80 | +- [x] Enforced strict effects for globals and `require`. |
| 81 | +- [x] Isolated `Script.Call` runtime state per invocation. |
| 82 | +- [x] Replaced panicking constructors with error-returning APIs. |
| 83 | +- [x] Increased CLI/REPL test coverage and added execution benchmarks. |
| 84 | + |
| 85 | +### v0.7.0 |
| 86 | + |
| 87 | +- [x] Shipped multi-phase string helper expansion. |
| 88 | +- [x] Added regex/byte helper coverage and bang-method parity improvements. |
| 89 | + |
| 90 | +### v0.8.0 |
| 91 | + |
| 92 | +- [x] Expanded Hash built-ins and hash manipulation support. |
| 93 | +- [x] Refreshed hash docs and examples. |
| 94 | + |
| 95 | +### v0.9.0 |
| 96 | + |
| 97 | +- [x] Expanded Array helper surface and enumerable workflows. |
| 98 | + |
| 99 | +### v0.10.0 |
| 100 | + |
| 101 | +- [x] Made Time and numeric APIs coherent with documented behavior. |
| 102 | + |
| 103 | +### v0.11.0 |
| 104 | + |
| 105 | +- [x] Improved parse/runtime error feedback and debugging quality. |
| 106 | + |
| 107 | +### v0.12.0 |
| 108 | + |
| 109 | +- [x] Hardened `require` behavior for safer module composition. |
| 110 | +- [x] Improved private helper/module boundary behavior. |
| 111 | +- [x] Improved circular dependency diagnostics for modules. |
| 112 | + |
| 113 | +### v0.13.0 |
| 114 | + |
| 115 | +- [x] Enforced capability contracts at runtime boundaries. |
| 116 | +- [x] Added contract validation paths for capability args and returns. |
| 117 | +- [x] Improved capability isolation and contract binding behavior. |
| 118 | + |
| 119 | +--- |
| 120 | + |
| 121 | +## v0.14.0 - Capability Foundations |
| 122 | + |
| 123 | +Goal: make host integrations first-class and safe enough for production workflows. |
| 124 | + |
| 125 | +### Capability Adapters |
| 126 | + |
| 127 | +- [ ] Add first-party `db` capability adapter interface and implementation. |
| 128 | +- [ ] Add first-party `events` capability adapter interface and implementation. |
| 129 | +- [ ] Add first-party `ctx` capability adapter for request/user/tenant metadata. |
| 130 | +- [ ] Define naming conventions for adapter method exposure (`cap.method`). |
| 131 | +- [ ] Ensure all adapters support context propagation and cancellation. |
| 132 | + |
| 133 | +### Contracts and Safety |
| 134 | + |
| 135 | +- [ ] Add capability method contracts for all new adapter methods. |
| 136 | +- [ ] Validate args/kwargs/returns for `db` adapter methods. |
| 137 | +- [ ] Validate args/kwargs/returns for `events` adapter methods. |
| 138 | +- [ ] Add explicit data-only boundary checks for all capability returns. |
| 139 | +- [ ] Add contract error messages with actionable call-site context. |
| 140 | + |
| 141 | +### Script Surface |
| 142 | + |
| 143 | +- [ ] Promote `examples/background/` scenarios to fully supported behavior. |
| 144 | +- [ ] Convert `examples/future/iteration.vibe` from stretch to supported. |
| 145 | +- [ ] Add docs for common capability patterns (query + transform + enqueue). |
| 146 | +- [ ] Add docs for capability failure handling patterns. |
| 147 | + |
| 148 | +### Testing and Hardening |
| 149 | + |
| 150 | +- [ ] Add unit tests for each capability adapter method. |
| 151 | +- [ ] Add integration tests for mixed capability calls in one script. |
| 152 | +- [ ] Add negative tests for type violations and invalid payload shapes. |
| 153 | +- [ ] Add quota/recursion interaction tests with capability-heavy scripts. |
| 154 | +- [ ] Add benchmarks for capability call overhead. |
| 155 | + |
| 156 | +### v0.14.0 Definition of Done |
| 157 | + |
| 158 | +- [ ] All new capabilities documented in `docs/integration.md`. |
| 159 | +- [ ] Background/future examples run in CI examples suite. |
| 160 | +- [ ] No contract bypasses in capability call boundaries. |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +## v0.15.0 - Type System v2 |
| 165 | + |
| 166 | +Goal: make types expressive enough for real workflows while keeping runtime checks predictable. |
| 167 | + |
| 168 | +### Type Features |
| 169 | + |
| 170 | +- [ ] Add parametric container types: `array<T>`, `hash<K, V>`. |
| 171 | +- [ ] Add union types beyond nil: `A | B`. |
| 172 | +- [ ] Add typed object/hash shape syntax for common payload contracts. |
| 173 | +- [ ] Add typed block signatures where appropriate. |
| 174 | +- [ ] Define type display formatting for readable runtime errors. |
| 175 | + |
| 176 | +### Type Semantics |
| 177 | + |
| 178 | +- [ ] Specify variance/invariance rules for container assignments. |
| 179 | +- [ ] Specify nullability interactions with unions (`T?` vs `T | nil`). |
| 180 | +- [ ] Define coercion policy (no coercion vs explicit coercion helpers). |
| 181 | +- [ ] Decide strictness for unknown keyword args under typed signatures. |
| 182 | + |
| 183 | +### Runtime and Parser |
| 184 | + |
| 185 | +- [ ] Extend parser grammar for generic and union type expressions. |
| 186 | +- [ ] Extend type resolver and internal type representation. |
| 187 | +- [ ] Add runtime validators for composite/union types. |
| 188 | +- [ ] Add contract interop so capability contracts can reuse type validators. |
| 189 | + |
| 190 | +### Testing and Docs |
| 191 | + |
| 192 | +- [ ] Add parser tests for all new type syntax forms. |
| 193 | +- [ ] Add runtime tests for nested composite type checks. |
| 194 | +- [ ] Add regression tests for existing `any` and nullable behavior. |
| 195 | +- [ ] Expand `docs/typing.md` with migration examples. |
| 196 | + |
| 197 | +### v0.15.0 Definition of Done |
| 198 | + |
| 199 | +- [ ] Existing scripts without annotations remain compatible. |
| 200 | +- [ ] Type errors include parameter name, expected type, and actual type. |
| 201 | +- [ ] Capability contract validation can use the same type primitives. |
| 202 | + |
| 203 | +--- |
| 204 | + |
| 205 | +## v0.16.0 - Control Flow and Error Handling |
| 206 | + |
| 207 | +Goal: improve language ergonomics for complex script logic and recovery behavior. |
| 208 | + |
| 209 | +### Control Flow |
| 210 | + |
| 211 | +- [ ] Add `while` loops. |
| 212 | +- [ ] Add `until` loops. |
| 213 | +- [ ] Add loop control keywords: `break` and `next`. |
| 214 | +- [ ] Add `case/when` expression support (if approved). |
| 215 | +- [ ] Define behavior for nested loop control and block boundaries. |
| 216 | + |
| 217 | +### Error Handling Constructs |
| 218 | + |
| 219 | +- [ ] Add structured error handling syntax (`begin/rescue/ensure` or equivalent). |
| 220 | +- [ ] Add typed error matching where feasible. |
| 221 | +- [ ] Define re-raise semantics and stack preservation. |
| 222 | +- [ ] Ensure runtime errors preserve original position and call frames. |
| 223 | + |
| 224 | +### Runtime Behavior |
| 225 | + |
| 226 | +- [ ] Ensure new control flow integrates with step quota accounting. |
| 227 | +- [ ] Ensure new constructs integrate with recursion/memory quotas. |
| 228 | +- [ ] Validate behavior inside class methods, blocks, and capability callbacks. |
| 229 | + |
| 230 | +### Testing and Docs |
| 231 | + |
| 232 | +- [ ] Add parser/runtime tests for each new control flow construct. |
| 233 | +- [ ] Add nested control flow tests for edge cases. |
| 234 | +- [ ] Add docs updates in `docs/control-flow.md` and `docs/errors.md`. |
| 235 | +- [ ] Add examples under `examples/control_flow/` for each new feature. |
| 236 | + |
| 237 | +### v0.16.0 Definition of Done |
| 238 | + |
| 239 | +- [ ] No regressions in existing `if/for/range` behavior. |
| 240 | +- [ ] Structured error handling works with assertions and runtime errors. |
| 241 | +- [ ] Coverage includes nested/edge control-flow paths. |
| 242 | + |
| 243 | +--- |
| 244 | + |
| 245 | +## v0.17.0 - Modules and Package Ergonomics |
| 246 | + |
| 247 | +Goal: make multi-file script projects easier to compose and maintain. |
| 248 | + |
| 249 | +### Module System |
| 250 | + |
| 251 | +- [ ] Add explicit export controls (beyond underscore naming). |
| 252 | +- [ ] Add import aliasing for module objects. |
| 253 | +- [ ] Define and enforce module namespace conflict behavior. |
| 254 | +- [ ] Improve cycle error diagnostics with concise chain rendering. |
| 255 | +- [ ] Add module cache invalidation policy for long-running hosts. |
| 256 | + |
| 257 | +### Security and Isolation |
| 258 | + |
| 259 | +- [ ] Tighten module root boundary checks and path normalization. |
| 260 | +- [ ] Add test coverage for path traversal attempts. |
| 261 | +- [ ] Add explicit policy hooks for module allow/deny lists. |
| 262 | + |
| 263 | +### Developer UX |
| 264 | + |
| 265 | +- [ ] Add docs for module project layout best practices. |
| 266 | +- [ ] Add examples for reusable helper modules and namespaced imports. |
| 267 | +- [ ] Add migration guide for existing `require` users. |
| 268 | + |
| 269 | +### v0.17.0 Definition of Done |
| 270 | + |
| 271 | +- [ ] Module APIs are explicit and predictable. |
| 272 | +- [ ] Error output for cycle/import failures is actionable. |
| 273 | +- [ ] Security invariants around module paths are fully tested. |
| 274 | + |
| 275 | +--- |
| 276 | + |
| 277 | +## v0.18.0 - Standard Library Expansion |
| 278 | + |
| 279 | +Goal: reduce host-side boilerplate for common scripting tasks. |
| 280 | + |
| 281 | +### Core Utilities |
| 282 | + |
| 283 | +- [ ] Add JSON parse/stringify built-ins. |
| 284 | +- [ ] Add regex matching/replacement helpers. |
| 285 | +- [ ] Add UUID/random identifier utilities with deterministic test hooks. |
| 286 | +- [ ] Add richer date/time parsing helpers for common layouts. |
| 287 | +- [ ] Add safer numeric conversions and clamp/round helpers. |
| 288 | + |
| 289 | +### Collections and Strings |
| 290 | + |
| 291 | +- [ ] Expand hash helpers for nested transforms and key remapping. |
| 292 | +- [ ] Expand array helpers for chunking/windowing and stable group operations. |
| 293 | +- [ ] Add string helpers for common normalization and templating tasks. |
| 294 | + |
| 295 | +### Compatibility and Safety |
| 296 | + |
| 297 | +- [ ] Define deterministic behavior for locale-sensitive operations. |
| 298 | +- [ ] Add quotas/guards around potentially expensive operations. |
| 299 | +- [ ] Ensure new stdlib functions are capability-safe where required. |
| 300 | + |
| 301 | +### Testing and Docs |
| 302 | + |
| 303 | +- [ ] Add comprehensive docs pages and examples for each new family. |
| 304 | +- [ ] Add negative tests for malformed JSON/regex patterns. |
| 305 | +- [ ] Add benchmark coverage for hot stdlib paths. |
| 306 | + |
| 307 | +### v0.18.0 Definition of Done |
| 308 | + |
| 309 | +- [ ] New stdlib is documented and example-backed. |
| 310 | +- [ ] Runtime behavior is deterministic across supported OSes. |
| 311 | +- [ ] Security/performance guardrails are validated by tests. |
| 312 | + |
| 313 | +--- |
| 314 | + |
| 315 | +## v0.19.0 - Tooling, Quality, and Performance |
| 316 | + |
| 317 | +Goal: improve day-to-day developer productivity and interpreter robustness. |
| 318 | + |
| 319 | +### Tooling |
| 320 | + |
| 321 | +- [ ] Add canonical formatter command and CI check. |
| 322 | +- [ ] Add language server protocol (LSP) prototype (hover, completion, diagnostics). |
| 323 | +- [ ] Add static analysis command for script-level linting. |
| 324 | +- [ ] Improve REPL inspection commands (globals/functions/types). |
| 325 | + |
| 326 | +### Runtime Quality |
| 327 | + |
| 328 | +- [ ] Profile evaluator hotspots and optimize dispatch paths. |
| 329 | +- [ ] Reduce allocations in common value transformations. |
| 330 | +- [ ] Improve error rendering for deeply nested call stacks. |
| 331 | +- [ ] Add fuzz tests for parser and runtime edge cases. |
| 332 | + |
| 333 | +### CI and Release Engineering |
| 334 | + |
| 335 | +- [ ] Add smoke tests for docs examples to CI. |
| 336 | +- [ ] Add release checklist automation for changelog/version bumps. |
| 337 | +- [ ] Add compatibility matrix notes for supported Go versions. |
| 338 | + |
| 339 | +### v0.19.0 Definition of Done |
| 340 | + |
| 341 | +- [ ] Tooling commands are documented and stable. |
| 342 | +- [ ] Performance regressions are tracked with benchmarks. |
| 343 | +- [ ] CI includes example and fuzz coverage gates. |
| 344 | + |
| 345 | +--- |
| 346 | + |
| 347 | +## v1.0.0 - Stabilization and Public API Commitment |
| 348 | + |
| 349 | +Goal: lock the language and embedding API for long-term support. |
| 350 | + |
| 351 | +### Stabilization |
| 352 | + |
| 353 | +- [ ] Freeze core syntax and document compatibility guarantees. |
| 354 | +- [ ] Freeze public Go embedding APIs or publish deprecation policy. |
| 355 | +- [ ] Publish semantic versioning and compatibility contract. |
| 356 | +- [ ] Complete migration notes for all pre-1.0 breaking changes. |
| 357 | + |
| 358 | +### Documentation and Adoption |
| 359 | + |
| 360 | +- [ ] Publish complete language reference. |
| 361 | +- [ ] Publish host integration cookbook with production patterns. |
| 362 | +- [ ] Provide starter templates for common embedding scenarios. |
| 363 | + |
| 364 | +### Final Readiness |
| 365 | + |
| 366 | +- [ ] Zero known P0/P1 correctness bugs. |
| 367 | +- [ ] CI green across supported platforms and Go versions. |
| 368 | +- [ ] Release process rehearsed and repeatable. |
0 commit comments