Skip to content

Commit 7f5d130

Browse files
committed
Added a roadmap
1 parent a986cd7 commit 7f5d130

2 files changed

Lines changed: 369 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ Long-form guides live in `docs/`:
166166
- `docs/typing.md` – gradual typing: annotations, nullable `?`, positional/keyword binding, and return checks.
167167
- `docs/examples/` – runnable scenario guides (campaign reporting, rewards, notifications, module usage, and more).
168168
- `docs/releasing.md` – GoReleaser workflow for changelog and GitHub release automation.
169+
- `ROADMAP.md` – versioned implementation checklist and release roadmap.
169170

170171
## Development
171172

ROADMAP.md

Lines changed: 368 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,368 @@
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

Comments
 (0)