Files
bara-lang/ROADMAP.md
T

3.8 KiB
Raw Blame History

Пътна Карта: Clojure/Nim (AI-First Edition)

Фаза 0: Компилаторно Ядро

  • Clojure Reader (EDN парсер)
  • AST → Nim Emitter
  • CLI (compile, run, read)
  • Специални форми: def, defn, fn, let, if, do, quote
  • Оператори: +, -, *, /, =, <, >
  • Функции: printlnecho
  • Примери: hello.clj, math.clj (факториел)

Фаза 1: AI-First REPL 🔄

Цел: REPL, който AI може да ползва през терминал без редактор.

1.1 Структуриран REPL

  • JSON/EDN режим (cljnim repl --json)
  • Batch evaluation (cljnim run-batch script.clj --format json)
  • Структурирани грешки (line, column, type, message, trace)
  • Метаданни в отговора (ms, ns, form, type)

1.2 Self-Describing Система

  • (doc fn) — връща структурирани метаданни
  • (apropos "str") — търсене на функции
  • (source fn) — изходен код на функция
  • (ns-publics 'clojure.core) — листване на публични символи

1.3 File Operations

  • (file/read "path") — четене на файл
  • (file/write "path" "content") — запис на файл
  • (file/append "path" "content") — добавяне
  • (file/ls "dir") — листване на директория
  • (file/exists? "path") — проверка

1.4 Git Operations (вградени)

  • (git/status) — текущ статус
  • (git/diff) — разлики
  • (git/add "file") — stage
  • (git/commit "msg") — commit
  • (git/push) — push
  • (git/log) — история

Фаза 2: Persistent Структури от Данни

Цел: Истински Clojure immutable структури.

  • Persistent Vector (Hash Array Mapped Trie)
  • Persistent Map (HAMT)
  • Persistent Set
  • conj, assoc, dissoc, get, get-in
  • nth, first, rest, last, count

Фаза 3: Clojure Core Библиотека

Цел: Достатъчно функции за реални скриптове.

3.1 Seq функции

  • map, filter, reduce
  • take, drop, partition
  • concat, interleave
  • range

3.2 Низове и IO

  • str, pr-str, println, prn
  • slurp, spit
  • read-line

3.3 Мета

  • meta, with-meta, vary-meta
  • type, instance?

Фаза 4: Макро Система

Цел: defmacro да работи.

  • macroexpand, macroexpand-1
  • syntax-quote, unquote, unquote-splicing
  • gensym
  • Core макроси: ->, ->>, and, or, when, cond

Фаза 5: Nim Interop

Цел: Достъп до целия Nim ecosystem.

  • (nim/import "strutils") — import на Nim модул
  • (nim/ffi "math.h" :functions [["sin" :double [:double]]]) — C FFI
  • (nim/call "strutils.join" ", " ["a" "b"]) — извикване

Фаза 6: AOT Компилация + REPL

Цел: Бързо стартиране на скриптове.

  • AOT компилация на цели проекти
  • Кеширане на компилирани модули
  • REPL в self-hosted режим (като ClojureScript)

Фаза 7: Многонишковост

  • Atoms (CAS)
  • Agents
  • core.async channels (упростен вариант)

Текущ Фокус

Фаза 1 — AI-First REPL

Следваща задача: cljnim repl --json с batch evaluation и структурирани отговори.