uz++ — barcha kalit so'zlari va standart kutubxonasi O'zbek tilida yoziladigan,
C++23 ga transpile qilinuvchi til. Siz toza O'zbekcha sintaksisda yozasiz —
kompilyator uni C++23 ga aylantirib g++ orqali mahalliy binary yig'adi.
Hech qanday ish vaqti ortiqchaligi yo'q.
ulash "uzpp_runtime.hpp"
butun asosiy() {
yozish << "Salom, Dunyo!" << qator_oxiri;
qaytarish 0;
}
| Platforma | Bir-qatorli o'rnatish |
|---|---|
| 🪟 Windows | uzpp-setup.exe ni yuklab oling va ishga tushiring (~150 MB, MinGW GCC 15.2 ichida) |
| 🐧 Linux | curl -fsSL https://raw.githubusercontent.com/timetolivechk-spec/uzpp/main/installer/unix/install.sh | bash |
| 🍎 macOS | (yuqoridagi install.sh macOS-da ham ishlaydi) |
| 🧩 VS Code | Extensions oynasidan uzpp.uzpp ni o'rnating — u kompilyatorni avtomatik yuklaydi |
Birinchi dasturgacha 2 daqiqa: o'rnating → VS Code da .uzpp fayl yarating → F5.
PowerShell yoki Bash da:
mkdir uzpp-test && cd uzpp-testsalom.uzpp faylini yarating:
ulash "uzpp_runtime.hpp"
butun asosiy() {
yozish << "Salom, Dunyo!" << qator_oxiri;
qaytarish 0;
}
Ishga tushiring:
uzpp ishga-tushirish salom.uzppFaqat yig'ish (binary yaratish, ishga tushirmaslik):
uzpp qurish salom.uzpp # build/salom.exeHosil qilingan C++ kodni ko'rish (debug uchun foydali):
uzpp transpile salom.uzpp --show-cpp1. Lambda va yopiq o'zgaruvchilar (C++ "closures"):
butun asosiy() {
butun asos = 10;
o'zgaruvchan qoshuvchi = [asos](butun x) -> butun {
qaytarish x + asos;
};
yozish << qoshuvchi(5) << qator_oxiri; // 15
qaytarish 0;
}
2. Xavfsiz xatolik boshqaruvi (Result / std::expected analogi):
uzpp::Natija<haqiqiy> xavfsiz_bo'lish(haqiqiy a, haqiqiy b) {
agar (b == 0.0)
qaytarish uzpp::Natija<haqiqiy>::xato("Nolga bo'lish mumkin emas");
qaytarish uzpp::Natija<haqiqiy>::muvaffaqiyat(a / b);
}
butun asosiy() {
o'zgaruvchan r = xavfsiz_bo'lish(10.0, 0.0);
agar (!r.yaroqliMi())
yozish << "Xato: " << r.xatoMazmun() << qator_oxiri;
qaytarish 0;
}
3. Patternlarni moslashtirish (C++23 if/switch with init):
butun asosiy() {
butun x = 5;
moslash (x) {
holat 0: yozish << "nol"; to'xtatish;
holat 1: yozish << "bir"; to'xtatish;
boshqa: yozish << "boshqa son";
}
qaytarish 0;
}
Yana 15 ta misol — misollar/ papkasida.
stdlib/ ichida 30+ modul. Ulardan 5 tasi self-hosted — uz++ tilida yozilgan:
matn— matn manipulyatsiyasi (std::stringustida, UTF-8 yordamchilari bilan)xatoliklar— Rust uslubidagi xatolik turlarivaqt— vaqt/sana,<chrono>wrappermatematika— trig, statistika, vektor, matritsasinov—unit testframeworkjurnal—logging(DEBUG/INFO/WARN/ERROR)
Qolganlari hozircha qo'lda yozilgan C++ — to'liq ro'yxat va statuslari: docs/stdlib-status.md.
Marketplace uzpp.uzpp
ni o'rnating — quyidagi imkoniyatlar avtomatik faollashadi:
- Sintaksis
highlight, sinf a'zolarini ajratib ko'rsatish (LSPsemantic tokens) o'zgaruvchan x = ...uchuninlay hints(xulosalangan tur)- Diagnostikalar (
autocomplete,hover,go-to-definition,rename) F5— fayl ishga tushiriladi,Ctrl+F5— faqat yig'ish
Welcome ekranidagi "Hammasini o'rnatish" tugmasi uzpp-setup.exe ni avtomatik
yuklab o'rnatadi (Windows) yoki install.sh ni ishga tushiradi (Linux/macOS).
git clone https://github.com/timetolivechk-spec/uzpp && cd uzpp
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
./build/uzpp ishga-tushirish misollar/01_salom_dunyo.uzppTalablar: g++ ≥ 13 (C++23 uchun), cmake ≥ 3.20, ninja.
docs/getting-started.md— qadamma-qadam darslikdocs/stdlib-status.md— har bir stdlib modulning holatiCHANGELOG.md— versiyalararo o'zgarishlarCONTRIBUTING.md— loyihaga hissa qo'shish
MIT — LICENSE ga qarang.