diff --git a/docs/STRATEGY.md b/docs/STRATEGY.md new file mode 100644 index 0000000..2632680 --- /dev/null +++ b/docs/STRATEGY.md @@ -0,0 +1,160 @@ +# Как Bux ще победи Rust, Nim и C + +> **Дата:** 2026-05-31 | **Версия:** 0.2.0 (bootstrap) + +--- + +## Пазарна позиция + +Всеки език заема ниша. Bux влиза **между тях** с уникална философия: + +``` +Скорост на писане (бързо → бавно): + C ████████████████████ (няма абстракции, но бързо става) + Nim ██████████████ (изразителен, GC) + Bux ████████████████ (изразителен, без GC) + Rust ████████ (borrow checker бави) + +Безопасност (ниска → висока): + C ████ (ръчна, pointer-и) + Nim ████████ (GC предпазва от leak, не от use-after-free) + Bux ████████████ (опционален borrow checker) + Rust ██████████████████ (пълен borrow checker) + +Производителност (бавно → бързо): + Nim ████████████ (GC добавя overhead) + Rust ██████████████████ (zero-cost abstractions) + C ██████████████████ (близо до метала) + Bux ██████████████████ (C transpiler → native) +``` + +--- + +## Уникалното предимство: Gradual Ownership + +**Никой друг език не предлага това.** + +| Модел | Език | Как работи | +|-------|------|------------| +| Всичко непроверено | C, Zig | Бързо писане, бъгове в runtime | +| Всичко проверено | Rust | Бавно писане, безопасно в compile-time | +| **Опционална проверка** | **Bux** | **Бързо писане, проверка само на критичния код** | + +### Синтаксис + +```bux +// Режим 1: Без проверки (като C/Nim) — за бързо прототипиране +func QuickHack(arr: *int, len: int) { + for i in 0..len { + arr[i] = arr[i] * 2; // no bounds check, no borrow check + } +} + +// Режим 2: С проверки (като Rust) — за critical paths +@[Checked] +func SafeMerge(a: &[int], b: &[int]) -> Vec { + // borrow checker проверява че a и b не се припокриват + // bounds checking на всеки достъп + // lifetime tracking гарантира че резултатът не надживява входовете +} +``` + +### Защо това печели + +| Програмист | Какво иска | Решение | +|------------|------------|---------| +| **C програмист** | "Не ми се занимава с borrow checker" | Пише без `@[Checked]`, получава C-скорост | +| **Rust програмист** | "Искам гаранции за safety" | Добавя `@[Checked]` на критичните функции | +| **Team lead** | "Искам баланс скорост/безопасност" | Prototype бързо, harden после | +| **Startup** | "Трябва да shipping-нем вчера" | Без проверки за MVP, добавят се после | + +--- + +## Вторични предимства + +### 2. Compile-time функции (CTFE) + +```bux +// Nim има CTFE, Rust няма (само const fn с ограничения) +const func Fib(n: int) -> int { + if n <= 1 { return n; } + return Fib(n-1) + Fib(n-2); +} + +const FIB_40 = Fib(40); // изчислява се при компилация +``` + +**Предимство:** Предварително изчислени таблици, парсъри, валидации на compile-time, които Rust не може. + +### 3. По-прост от Rust + +```bux +// Rust: трябват lifetime annotations +fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { ... } + +// Bux: без анотации в обикновен код +func Longest(x: String, y: String) -> String { ... } +// Само в @[Checked] зони се добавят при нужда +``` + +### 4. По-бърза компилация от Rust + +``` +Rust (LLVM): 10-60 секунди за среден проект +Bux (C): <1 секунда за среден проект (като Nim) +``` + +C backend → gcc/clang компилират C много по-бързо отколкото LLVM компилира Rust. + +### 5. Algebraic типове (Nim ги няма нативно) + +```bux +// Bux: първокласни algebraic enums +enum Result { Ok(int), Err(String) } +let x = Ok(42); +match x { Ok(v) => ..., Err(e) => ... } + +// Nim: трябват макроси или object variants +``` + +--- + +## Пътна карта за победа + +| Фаза | Feature | Ефект | +|------|---------|-------| +| **8.1** | ✅ Error handling (`?`, `!`) | По-чисто от Nim | +| **8.2** | ⏳ `@[Checked]` borrow checker | **Уникално — това е оръжието** | +| **8.3** | ⏳ Concurrency (tasks + channels) | Go-стил леки нишки | +| **8.4** | ⏳ CTFE (`const func`) | Nim-level метапрограмиране | +| **8.5** | ⏳ Trait система | Rust-стил генерици | +| **8.6** | ⏳ Макроси | Nim-стил метапрограмиране | +| **8.7** | ⏳ LSP сървър | IDE поддръжка | + +--- + +## Target аудитория + +1. **C програмисти** искащи по-добър tooling → Bux дава типове, генерици, pattern matching без GC +2. **Nim програмисти** искащи C-like синтаксис → Bux има същата скорост, по-познат syntax +3. **Rust програмисти** уморени от borrow checker → Bux дава safety само където трябва +4. **Нови програмисти** → Bux е по-прост от Rust, по-строг от Python + +--- + +## Рискове + +| Риск | Вероятност | Митигация | +|------|------------|-----------| +| Borrow checker твърде сложен за имплементация | Средна | Започваме с basic: само `&T` и `&mut T`, без lifetimes | +| Няма достатъчно ecosystem | Висока | Първо self-hosting, после пакети | +| Няма corporate backing | Висока | Open-source community подход | +| C backend ограничава производителността | Ниска | C компилаторите са 30+ години оптимизирани | + +--- + +## Заключение + +**Bux не трябва да е "по-добър Rust" или "по-добър Nim".** Той трябва да е **единственият език с gradual safety** — бърз за писане като C, безопасен като Rust, но само където програмистът избере. + +Това е празна ниша на пазара. Никой не я запълва. Bux може да е първият. \ No newline at end of file