docs: highlight unique advantages — standalone, HAMT, multi-target
Update README and architecture docs to emphasize: - Complete independence from Java ecosystem (JVM, GraalVM, Closure) - Native HAMT persistent data structures built from scratch in Nim - Multi-target compilation (native, shared lib, WASM, JS) - AI-native tooling and concurrency without JVM threads Updates both English and Bulgarian documentation.
This commit is contained in:
@@ -45,6 +45,40 @@ Clojure/Nim is a **compiler**, not an interpreter. It follows the model of Cloju
|
||||
└─────────┘
|
||||
```
|
||||
|
||||
## Unique Advantages
|
||||
|
||||
### Independence from the Java Ecosystem
|
||||
Clojure/Nim is the **only** Clojure dialect with absolutely no dependency on the Java ecosystem:
|
||||
|
||||
| Dialect | JVM Required | GraalVM | Google Closure | Java stdlib |
|
||||
|---------|-------------|---------|----------------|-------------|
|
||||
| Clojure (JVM) | ✅ | ❌ | ❌ | ✅ |
|
||||
| ClojureScript | ❌ | ❌ | ✅ | ❌ |
|
||||
| Babashka | ❌ | ✅ | ❌ | Partial |
|
||||
| **Clojure/Nim** | ❌ | ❌ | ❌ | ❌ |
|
||||
|
||||
This means:
|
||||
- **No JVM warmup** — binaries start instantly
|
||||
- **No GraalVM complexity** — no native-image configuration
|
||||
- **No Java installation required** — the compiler itself is a single binary
|
||||
- **True standalone deployment** — one file, zero runtime dependencies
|
||||
|
||||
### Native HAMT Implementation
|
||||
Our persistent data structures are built from scratch in Nim, optimized for Nim's ORC garbage collector:
|
||||
- **32-way branching** like Clojure's `PersistentVector`, but without Java object overhead
|
||||
- **Structural sharing** via copy-on-write HAMT nodes
|
||||
- **O(log₃₂ n)** for `assoc`/`dissoc`/`nth` — same asymptotic complexity as JVM Clojure
|
||||
- **Nim ref objects** instead of Java interfaces — simpler memory layout, better cache locality
|
||||
|
||||
### Multi-Target Compilation
|
||||
The same Clojure source compiles to four different targets from one codebase:
|
||||
1. **Native binary** — `nim c` → C → machine code
|
||||
2. **Shared library** — `nim c --app:lib` → `.so` / `.dll` / `.dylib`
|
||||
3. **WASM** — `nim c -d:emscripten` → browser-native WebAssembly
|
||||
4. **JavaScript** — `nim js` → browser/Node.js
|
||||
|
||||
No other Clojure implementation offers this breadth of targets without external tools.
|
||||
|
||||
## Key Design Decisions
|
||||
|
||||
### 1. AOT Compiler
|
||||
|
||||
Reference in New Issue
Block a user