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
7.1 KiB
7.1 KiB
Как 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 | Бързо писане, проверка само на критичния код |
Синтаксис
// Режим 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)
// 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
// 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: първокласни 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 аудитория
- C програмисти искащи по-добър tooling → Bux дава типове, генерици, pattern matching без GC
- Nim програмисти искащи C-like синтаксис → Bux има същата скорост, по-познат syntax
- Rust програмисти уморени от borrow checker → Bux дава safety само където трябва
- Нови програмисти → 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 може да е първият.