Initial commit

This commit is contained in:
2026-05-08 14:51:47 +03:00
commit f89b381fdb
12 changed files with 1085 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
# Clojure/Nim
> Реализация на Clojure върху Nim-lang
## Какво е това?
Clojure/Nim е проект, целящ да предостави Clojure език и runtime върху Nim. Вдъхновен е от ClojureScript и Babashka, но вместо JavaScript или JVM, целта е компилация към Nim код и използване на Nim runtime.
## Защо?
- **Единен AST**: Nim предлага мощна макро система и AST манипулация
- **Производителност**: Компилиран към C, Nim дава C-подобна скорост с Lisp-удобство
- **Размер**: Минимален runtime footprint в сравнение с JVM
- **Метапрограмиране**: Съчетание на Clojure макроси и Nim макроси
## Архитектура
```
Clojure Изходен Код (.clj)
Clojure Reader (Clojure → Clojure Data)
Макро Разширение (Clojure Macros)
AST Транслатор (Clojure AST → Nim AST)
Nim Компилатор
C Код → Машинен Код
```
## Статус
> ⚠️ **Ранен етап** — Проектът е във фаза на планиране и базова имплементация.
Виж [ROADMAP.md](ROADMAP.md) за текущия прогрес.
## Бърз Старт
```bash
# Клониране
git clone <repo-url>
cd clojure-nim
# Изграждане
make build
# REPL
./cljnim
# Изпълнение на файл
./cljnim run examples/hello.clj
```
## Примери
```clojure
;; hello.clj
(ns hello)
(println "Здравей, Nim свят!")
(defn факториел [n]
(if (<= n 1)
1
(* n (факториел (- n 1)))))
(println "5! =" (факториел 5))
```
```clojure
;; Работа със структури от данни
(def данни
{:име "Иван"
:възраст 30
:езици ["Clojure" "Nim" "C"]})
(println (get-in данни [:езици 0]))
;; => "Clojure"
```
## Структура на Проекта
```
├── src/
│ ├── reader/ # Clojure reader (EDN парсер)
│ ├── analyzer/ # Semantic анализатор
│ ├── macros/ # Core macros (defn, let, if, и т.н.)
│ ├── emitter/ # Генератор на Nim код
│ ├── runtime/ # Clojure runtime в Nim
│ └── repl/ # Интерактивна обвивка
├── lib/
│ └── core.clj # Clojure core библиотека
├── tests/ # Тестове
├── examples/ # Примери
├── Makefile
└── README.md
```
## Изисквания
- Nim >= 2.0
- GCC или Clang
- make
## Лиценз
MIT License — виж [LICENSE](LICENSE).
## Благодарности
- [Clojure](https://clojure.org/) — Rich Hickey и екипът
- [Nim](https://nim-lang.org/) — Andreas Rumpf и общността
- Вдъхновено от ClojureScript, Babashka и Clojerl