Files
bara-lang/PLAN.md
T
dimgigov ba0b300917 feat: add fullscreen TUI and project updates
- New TUI screens: Main Menu, Compile, Run, REPL, AI Generator, AI Settings, Help
- AI configuration persisted in ~/.config/cljnim/config.json
- Added illwill dependency for terminal UI
- Updated experiments, examples, docs, and core modules
2026-05-09 01:53:23 +03:00

115 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План за Clojure/Nim — Ден на Победата Edition 🎖️
## Направено (8-9 май 2026)
### Ядро (Compiler Core)
-`loop`/`recur` вече работи в компилиран код (критичен бъг оправен)
-`compile-lib` режим — експортирани функции за library generation
- ✅ 20+ компилаторни предупреждения изчистени
-`make check` — build + test + всички примери
### AI Интеграция (Phase AI-1 до AI-4) — 9 май 2026
-**AI-Assisted Errors** — error cache, Reader/Emitter/Nim error coverage
-**AI Code Generation**`(ai/generate "...")` в REPL, `:ai` команда, JSON REPL `ai-generate`
-**AI Optimization Hints**`(ai/optimize "...")`, `buildOptimizationPrompt`
-**AI Debugging**`(ai/debug expr)`, `buildDebugPrompt`, JSON REPL `ai-debug`
### Тестове
-`tests/test_macros.nim` — 30 теста за макроси
-`tests/test_eval.nim` — +30 нови теста (math, collections, agents, channels)
-`tests/test_emitter.nim` — +3 теста за loop/recur
### Документация
- ✅ README.md, ROADMAP.bg.md, ARCHITECTURE.md синхронизирани
- ✅ LICENSE файл добавен
### Нови Target-и
-`experiments/web-target/` — Clojure → Nim → JS
-`experiments/native-lib/` — Clojure → Nim → C shared library
-`experiments/wasm-target/` — WASM skeleton
---
## План за 9 май — AI Интеграция (DeepSeek / Xiaomi MiMo)
### Phase AI-1: AI-Assisted Error Messages ✅
**Цел:** Когато `cljnim compile` fail-не, AI анализира грешката и дава обяснение на български/английски.
**Имплементация:**
-`src/ai_assist.nim` — Error cache за чести грешки (in-memory, 50 записа, TTL 1 час)
- ✅ ReaderError/EmitterError coverage — AI обяснения за грешки на всички нива (reader, emitter, Nim compiler)
- ✅ Интеграция с DeepSeek API (вече беше)
- ✅ Cache за чести грешки
### Phase AI-2: AI Code Generation в REPL ✅
**Цел:** Генериране на Clojure функции от описание.
```clojure
user> (ai/generate "функция за бързо сортиране на вектор")
" (defn quicksort [v] ...)"
```
**Имплементация:**
-`ai/generate` builtin в eval.nim (interpreter)
-`:ai <desc>` в human REPL (вече беше)
-`ai-generate` op в JSON REPL
### Phase AI-3: AI Optimization Hints ✅
**Цел:** Компилаторът използва AI за избор на алгоритми.
```clojure
user> (ai/optimize "(defn sum [nums] (reduce + nums))")
"Consider using transients for large collections..."
```
**Имплементация:**
-`ai/optimize` builtin в eval.nim
-`:optimize <code>` в human REPL
-`ai-optimize` op в JSON REPL
-`buildOptimizationPrompt` в ai_assist.nim
### Phase AI-4: AI Debugging ✅
**Цел:** REPL команди за анализ на runtime поведение.
```clojure
user> (ai/debug (factorial 5))
🤖 AI Analysis:
- factorial(5) = 120 (коректно)
- Време: O(n) рекурсия
```
**Имплементация:**
-`ai/debug` special form в eval.nim (raw expression pre-evaluation)
-`:debug <expr>` в human REPL
-`ai-debug` op в JSON REPL
-`buildDebugPrompt` в ai_assist.nim
---
## Технически детайли за AI интеграция
### DeepSeek API
- Endpoint: `https://api.deepseek.com/v1/chat/completions`
- Model: `deepseek-chat` или `deepseek-coder`
- Български език: ✅ поддържа
### Xiaomi MiMo
- Endpoint: зависи от deployment
- Може да се self-hostва
### Архитектура
```
User Input → Clojure/Nim → Error/Request → AI Module → DeepSeek/MiMo API
Cached Response → User
```
---
## Следващи стъпки (ядро)
1.**Обединяване на CljVal типовете**`src/types.nim` + `lib/cljnim_runtime.nim` + `src/runtime.nim` + `lib/cljnim_runtime_js.nim` — всички 4 файла вече имат идентичен CljKind enum (15 стойности)
2.**`try`/`catch`/`finally`** — пълна имплементация в emitter — exception type вече се използва, binding e cljMap с `:type` и `:message`
3.**`swap!`/`reset!`** в interpreter-а — вече беше имплементирано
4.**Reader edge cases**`-.5` negative floats, scientific notation `1e5`/`1.5e-3`, unterminated string tests, negative float tests — 13 нови теста