# Пътна Карта за Разработка ## Фаза 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`, `repl`) - [x] Специални форми: `def`, `defn`, `fn`, `let`, `if`, `do`, `quote` - [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: Макро Система ✅ - [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 ## Фаза 5: Persistent Структури от Данни - [ ] Persistent Vector (Hash Array Mapped Trie) - [ ] Persistent Map (HAMT) - [ ] Persistent Set - [ ] `conj`, `assoc`, `dissoc`, `get`, `get-in` - [ ] `nth`, `first`, `rest`, `last`, `count` върху persistent колекции - [ ] Transients за batch мутации ## Фаза 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?` ## Фаза 7: Компилация на Проекти - [ ] Компилиране на цели проекти (не само отделни файлове) - [ ] Система за namespaces (`ns`, `require`, `use`) - [ ] Кеширане на модули за по-бърз REPL старт - [ ] Резолюция на зависимости ## Фаза 8: Self-Hosted REPL - [ ] Компилиране на форми в паметта (без temp файлове) - [ ] Бърз REPL старт (< 100ms) - [ ] Hot code reloading ## Фаза 9: Конкурентност - [ ] Atoms (compare-and-swap) - [ ] Agents - [ ] core.async channels (упростен вариант) ## Известни Проблеми - `->>` threading macro с вложени `map`/`reduce` изисква правилен macro expansion контекст - REPL дефинициите се прекомпилират от нулата при всяка оценка (бавно, но коректно) - Няма истински persistent структури от данни (runtime използва Nim seq/tables)