Fix macro expansion in REPL; update roadmap to reflect actual capabilities
This commit is contained in:
+62
-33
@@ -2,50 +2,79 @@
|
||||
|
||||
## Фаза 0: Компилаторно Ядро ✅
|
||||
- [x] Clojure Reader (EDN парсер)
|
||||
- [x] Reader поддържа: списъци `()`, вектори `[]`, карти `{}`, низове, ключови думи, символи, числа, булеви, nil
|
||||
- [x] Reader поддържа: quote `'`, syntax-quote `` ` ``, unquote `~`, unquote-splicing `~@`
|
||||
- [x] Reader поддържа: коментари `;`, read-all
|
||||
- [x] AST → Nim Генератор
|
||||
- [x] CLI (`compile`, `run`, `read`)
|
||||
- [x] CLI (`compile`, `run`, `read`, `repl`)
|
||||
- [x] Специални форми: `def`, `defn`, `fn`, `let`, `if`, `do`, `quote`
|
||||
- [x] Аритметични оператори
|
||||
- [x] Човешки и JSON REPL
|
||||
- [x] AOT компилация до native бинарни файлове
|
||||
- [x] Специални форми: `when`, `cond`
|
||||
- [x] Аритметични оператори: `+`, `-`, `*`, `/`
|
||||
- [x] Оператори за сравнение: `=`, `not=`, `not`, `<`, `>`, `<=`, `>=`
|
||||
- [x] Core функции: `println`, `map`, `filter`, `reduce`
|
||||
- [x] Runtime типова система: `CljVal` с `nil`, `bool`, `int`, `float`, `string`, `keyword`, `symbol`, `list`, `vector`, `map`, `fn`, `atom`
|
||||
|
||||
## Фаза 1: AI-Native Инструменти 🔄
|
||||
- [x] JSON REPL режим
|
||||
- [x] Batch оценка
|
||||
- [x] Структурирани грешки
|
||||
- [ ] Файлови операции (`file/read`, `file/write`)
|
||||
- [ ] Git операции (`git/commit`, `git/push`)
|
||||
## Фаза 1: Макро Система ✅
|
||||
- [x] `macroexpand`, `macroexpand-1`
|
||||
- [x] `syntax-quote`, `unquote`, `unquote-splicing`
|
||||
- [x] `gensym`
|
||||
- [x] `defmacro` (потребителски макроси)
|
||||
- [x] Вградени макроси: `->`, `->>`, `and`, `or`, `when`, `when-not`, `cond`
|
||||
- [x] Вградени макроси: `cond->`, `cond->>`, `doto`, `as->`, `some->`, `some->>`
|
||||
- [x] Вградени макроси: `for`, `doseq`, `dotimes`
|
||||
- [x] Вградени макроси: `when-let`, `if-let`
|
||||
- [x] Вградени макроси: `comment`, `assert`, `with-open`
|
||||
|
||||
## Фаза 2: REPL и Инструменти ✅
|
||||
- [x] Човешки REPL (`:help`, `:defs`, `:clear`, `:ns`, `:quit`)
|
||||
- [x] JSON REPL (`--json`) със структуриран I/O
|
||||
- [x] Batch оценка (`eval-batch`)
|
||||
- [x] Структурирани грешки (тип, съобщение, форма, ред)
|
||||
- [x] Персистентност на сесията за `def`/`defn`
|
||||
|
||||
## Фаза 3: Nim Interop ✅
|
||||
- [x] Извикване на Nim функции: `(nim/math/sin x)`, `(nim/strutils/toUpper s)`
|
||||
- [x] C FFI през Nim `importc`
|
||||
|
||||
## Фаза 4: AI-Native Инструменти 🔄
|
||||
- [ ] Файлови операции от REPL: `(file/read "path")`, `(file/write "path" "content")`
|
||||
- [ ] Git операции от REPL: `(git/status)`, `(git/commit "msg")`, `(git/push)`
|
||||
- [ ] nREPL протокол съвместимост
|
||||
- [ ] Tool-call формат за интеграция с AI frameworks
|
||||
|
||||
## Фаза 2: Persistent Структури от Данни
|
||||
- [ ] Persistent Vector (HAMT)
|
||||
## Фаза 5: Persistent Структури от Данни
|
||||
- [ ] Persistent Vector (Hash Array Mapped Trie)
|
||||
- [ ] Persistent Map (HAMT)
|
||||
- [ ] Persistent Set
|
||||
- [ ] `conj`, `assoc`, `dissoc`, `get`, `get-in`
|
||||
- [ ] `nth`, `first`, `rest`, `last`, `count`
|
||||
- [ ] `nth`, `first`, `rest`, `last`, `count` върху persistent колекции
|
||||
- [ ] Transients за batch мутации
|
||||
|
||||
## Фаза 3: Clojure Core Библиотека
|
||||
- [ ] Seq функции: `map`, `filter`, `reduce`, `range`
|
||||
- [ ] Низови функции: `str`, `pr-str`, `slurp`, `spit`
|
||||
- [ ] Мета: `meta`, `with-meta`, `type`
|
||||
## Фаза 6: Clojure Core Библиотека
|
||||
- [ ] `range`, `repeat`, `cycle`, `iterate`
|
||||
- [ ] `take`, `drop`, `partition`, `interleave`, `concat`
|
||||
- [ ] `str`, `pr-str`, `println`, `prn`
|
||||
- [ ] `slurp`, `spit`, `read-line`
|
||||
- [ ] `meta`, `with-meta`, `vary-meta`
|
||||
- [ ] `type`, `instance?`, `satisfies?`
|
||||
|
||||
## Фаза 4: Макро Система
|
||||
- [ ] `defmacro`
|
||||
- [ ] `syntax-quote`, `unquote`, `unquote-splicing`
|
||||
- [ ] `gensym`
|
||||
- [ ] Core макроси: `->`, `->>`, `and`, `or`, `when`, `cond`
|
||||
## Фаза 7: Компилация на Проекти
|
||||
- [ ] Компилиране на цели проекти (не само отделни файлове)
|
||||
- [ ] Система за namespaces (`ns`, `require`, `use`)
|
||||
- [ ] Кеширане на модули за по-бърз REPL старт
|
||||
- [ ] Резолюция на зависимости
|
||||
|
||||
## Фаза 5: Nim Interop
|
||||
- [ ] `nim/import` — Импорт на Nim модули
|
||||
- [ ] `nim/call` — Извикване на Nim функции
|
||||
- [ ] C FFI декларации
|
||||
## Фаза 8: Self-Hosted REPL
|
||||
- [ ] Компилиране на форми в паметта (без temp файлове)
|
||||
- [ ] Бърз REPL старт (< 100ms)
|
||||
- [ ] Hot code reloading
|
||||
|
||||
## Фаза 6: Оптимизация
|
||||
- [ ] AOT компилация на цели проекти
|
||||
- [ ] Кеширане на компилирани модули
|
||||
- [ ] Self-hosted REPL (компилация в паметта)
|
||||
|
||||
## Фаза 7: Конкурентност
|
||||
- [ ] Atoms (CAS)
|
||||
## Фаза 9: Конкурентност
|
||||
- [ ] Atoms (compare-and-swap)
|
||||
- [ ] Agents
|
||||
- [ ] core.async channels (упростен вариант)
|
||||
|
||||
## Известни Проблеми
|
||||
- `->>` threading macro с вложени `map`/`reduce` изисква правилен macro expansion контекст
|
||||
- REPL дефинициите се прекомпилират от нулата при всяка оценка (бавно, но коректно)
|
||||
- Няма истински persistent структури от данни (runtime използва Nim seq/tables)
|
||||
|
||||
Reference in New Issue
Block a user