34504d1647
Updated documentation to reflect changes from the last 2 days: ROADMAP.md: - Mark string interpolation, named/default params, bux fmt/test/new/init, and basic borrow checker as ✅ Done - Update Recommended Order (next: closures) PHASE8_STRATEGY.md: - Update date, achievements, and milestone statuses - Borrow checker is now ✅ working in selfhost - CTFE, LSP, formatter, test runner marked done where applicable LanguageRef.md: - Add defer, switch/case, string interpolation (f"...") - Add &T, &mut T, own T to composite types - Add named/default parameters and operator overloading sections - Expand @[Checked] rules with double-mut-borrow and use-after-move - Update keywords and operators STRATEGY.md: - Update date and version (0.3.0 selfhost) - Mark 8.2 borrow checker, 8.4 CTFE, 8.7 LSP as ✅ BuildAndTest.md: - Add bux init, bux fmt, bux test commands - Expand test sections with golden tests and Std::Test
160 lines
7.1 KiB
Markdown
160 lines
7.1 KiB
Markdown
# Как Bux ще победи Rust, Nim и C
|
||
|
||
> **Дата:** 2026-06-09 | **Версия:** 0.3.0 (selfhost)
|
||
|
||
---
|
||
|
||
## Пазарна позиция
|
||
|
||
Всеки език заема ниша. 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<int> {
|
||
// 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 (basic) | **Уникално — това е оръжието** |
|
||
| **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 може да е първият. |