4.3 KiB
4.3 KiB
Пътна Карта за Разработка
Фаза 0: Компилаторно Ядро ✅
- Clojure Reader (EDN парсер)
- Reader поддържа: списъци
(), вектори[], карти{}, низове, ключови думи, символи, числа, булеви, nil - Reader поддържа: quote
', syntax-quote`, unquote~, unquote-splicing~@ - Reader поддържа: коментари
;, read-all - AST → Nim Генератор
- CLI (
compile,run,read,repl) - Специални форми:
def,defn,fn,let,if,do,quote - Специални форми:
when,cond - Аритметични оператори:
+,-,*,/ - Оператори за сравнение:
=,not=,not,<,>,<=,>= - Core функции:
println,map,filter,reduce - Runtime типова система:
CljValсnil,bool,int,float,string,keyword,symbol,list,vector,map,fn,atom
Фаза 1: Макро Система ✅
macroexpand,macroexpand-1syntax-quote,unquote,unquote-splicinggensymdefmacro(потребителски макроси)- Вградени макроси:
->,->>,and,or,when,when-not,cond - Вградени макроси:
cond->,cond->>,doto,as->,some->,some->> - Вградени макроси:
for,doseq,dotimes - Вградени макроси:
when-let,if-let - Вградени макроси:
comment,assert,with-open
Фаза 2: REPL и Инструменти ✅
- Човешки REPL (
:help,:defs,:clear,:ns,:quit) - JSON REPL (
--json) със структуриран I/O - Batch оценка (
eval-batch) - Структурирани грешки (тип, съобщение, форма, ред)
- Персистентност на сесията за
def/defn
Фаза 3: Nim Interop ✅
- Извикване на Nim функции:
(nim/math/sin x),(nim/strutils/toUpper s) - 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-innth,first,rest,last,countвърху persistent колекции- Transients за batch мутации
Фаза 6: Clojure Core Библиотека
range,repeat,cycle,iteratetake,drop,partition,interleave,concatstr,pr-str,println,prnslurp,spit,read-linemeta,with-meta,vary-metatype,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)