Files
bara-lang/docs/ROADMAP.md
T
dimgigov 19ef69bf5b Phase 6: slurp, spit, read-line, range 3-arg, repeat/cycle/iterate, interleave
Phase 6 Clojure Core Library now complete (except meta):
- T6.3: slurp (alias for file/read)
- T6.4: spit (alias for file/write)
- T6.5: read-line (stdin input)
- T6.6: range with 3 args (start, end, step)
- T6.7: repeat, cycle, iterate (eager implementations)
- T6.9: interleave
- Updated TASKS.md and ROADMAP.md
2026-05-08 19:24:06 +03:00

82 lines
3.4 KiB
Markdown

# Development Roadmap
## Phase 0: Compiler Core ✅
- [x] Clojure Reader (EDN parser)
- [x] Reader supports: lists `()`, vectors `[]`, maps `{}`, strings, keywords, symbols, numbers, booleans, nil
- [x] Reader supports: quote `'`, syntax-quote `` ` ``, unquote `~`, unquote-splicing `~@`
- [x] Reader supports: comments `;`, read-all
- [x] AST → Nim Emitter
- [x] CLI (`compile`, `run`, `read`, `repl`)
- [x] Special forms: `def`, `defn`, `fn`, `let`, `if`, `do`, `quote`
- [x] Special forms: `when`, `cond`
- [x] Arithmetic operators: `+`, `-`, `*`, `/`
- [x] Comparison operators: `=`, `not=`, `not`, `<`, `>`, `<=`, `>=`
- [x] Core functions: `println`, `map`, `filter`, `reduce`
- [x] Runtime type system: `CljVal` with `nil`, `bool`, `int`, `float`, `string`, `keyword`, `symbol`, `list`, `vector`, `map`, `fn`, `atom`
## Phase 1: Macro System ✅
- [x] `macroexpand`, `macroexpand-1`
- [x] `syntax-quote`, `unquote`, `unquote-splicing`
- [x] `gensym`
- [x] `defmacro` (user-defined macros)
- [x] Built-in macros: `->`, `->>`, `and`, `or`, `when`, `when-not`, `cond`
- [x] Built-in macros: `cond->`, `cond->>`, `doto`, `as->`, `some->`, `some->>`
- [x] Built-in macros: `for`, `doseq`, `dotimes`
- [x] Built-in macros: `when-let`, `if-let`
- [x] Built-in macros: `comment`, `assert`, `with-open`
## Phase 2: REPL & Tooling ✅
- [x] Human REPL (`:help`, `:defs`, `:clear`, `:ns`, `:quit`)
- [x] JSON REPL (`--json`) with structured I/O
- [x] Batch evaluation (`eval-batch`)
- [x] Structured errors (type, message, form, line)
- [x] Session persistence for `def`/`defn` definitions
## Phase 3: Nim Interop ✅
- [x] Call Nim functions: `(nim/math/sin x)`, `(nim/strutils/toUpper s)`
- [x] C FFI via Nim `importc`
## Phase 4: AI-Native Tooling ✅
- [x] File operations: `(file/read "path")`, `(file/write "path" "content")`, `(file/append "path" "content")`
- [x] File operations: `(file/ls "dir")`, `(file/exists? "path")`
- [x] Git operations: `(git/status)`, `(git/commit "msg")`, `(git/push)`
- [x] Git operations: `(git/diff)`, `(git/log)`
- [ ] nREPL protocol compatibility
- [ ] Tool-call format for AI framework integration
## Phase 5: Persistent Data Structures
- [x] Persistent Vector (Hash Array Mapped Trie, 32-way branching)
- [x] Persistent Map (HAMT) — `pmapAssoc`, `pmapDissoc`, `pmapGet` in O(log₃₂ n)
- [x] Persistent Set — backed by HAMT map, `conj`/`disj`/`contains?`/`get`
- [x] `conj`, `assoc`, `dissoc`, `get`, `get-in`
- [x] `nth`, `first`, `rest`, `last`, `count` on persistent collections
- [ ] Transients for batch mutations
## Phase 6: Clojure Core Library
- [x] `range` (0/1/2/3 args), `repeat`, `cycle`, `iterate`
- [x] `take`, `drop`, `partition`, `interleave`, `concat`
- [x] `str`, `pr-str`, `println`, `prn`
- [x] `slurp`, `spit`, `read-line`
- [ ] `meta`, `with-meta`, `vary-meta`
- [x] `type`, `instance?`, `satisfies?`
## Phase 7: Project Compilation
- [ ] Compile entire projects (not just single files)
- [ ] Namespace system (`ns`, `require`, `use`)
- [ ] Module caching for faster REPL startup
- [ ] Dependency resolution
## Phase 8: Self-Hosted REPL
- [ ] Compile forms in memory (no temp files)
- [ ] Fast REPL startup (< 100ms)
- [ ] Hot code reloading
## Phase 9: Concurrency
- [ ] Atoms (compare-and-swap)
- [ ] Agents
- [ ] core.async channels (simplified)
## Known Issues
- `->>` threading macro with nested `map`/`reduce` requires proper macro expansion context
- REPL definitions are re-compiled from scratch on each evaluation (slow but correct)