The first programming language with keywords in Algerian Darija, powered by LLVM.
Note
شكوبي | Chkoupi (Algerian Darija)
هي كلمة تعني العلقات البحرية التي تطفو على سطح البحر، يستعمل هذه الكلمة الصيادون حيث أنهم عندم يسأل أحد صياد أخر عن ما أصاد يجيب " صيدت الشكوبي" أي بمعنى لا شئ، و الكثير من الجزائريين يضنون أنها كلمة بذيئة و لكن ليست كذلك.
جاي كي الشكوبي، أي لا يصلح لأي شئ
Translation: Chkoupi refers to marine algae/seaweed floating on the sea. Fishermen use it: when asked what they caught, they reply "Seyedt el chkoupi" ("I caught seaweed"), meaning "nothing at all". Although many Algerians mistake it for a vulgar term, it is not.
— Cited from Mo3jam
Write and run Chkoupi-lang code directly in your browser:
Chkoupi-lang is a fully functional compiled language where keywords, types, and libraries are written in Algerian Darija.
Instead of being an interpreted scripting language, it compiles directly to optimized machine code:
- LLVM Backend: Translates your source code into optimized native executables.
- Type Coercion: Automatically handles type conversions, such as promoting integers to floats.
- First-Class Types: Fat strings and heap-allocated dynamic arrays.
- Modules: Exposes a basic module resolution system (
jibli).
For detailed language specifications, syntax rules, and type behaviors, check the reference guide:
👉 DOCS.md
Chkoupi-lang has syntax highlighting and language configuration support for Visual Studio Code.
- Download
chkoupi-vscode-installer.exefrom the Releases page. - Double-click/run the executable and press Enter to close it.
- Restart or reload VS Code, and your
.dzsource files will highlight automatically!
(The extension source files can also be viewed in the editors/vscode/ directory).
📋 Click to view copyable raw code
// Import mathematical library
jibli "math";
// Define a factorial function (return type is inferred)
dalla factorial(n: tabi3i) {
idha (n <= 1) {
raja3 1;
}
raja3 n * factorial(n - 1);
}
// String concatenation & length check
dir greeting = "Salam" + " Algeria!";
ektb("%s (length = %lld)\n", greeting, tool(greeting));
// Array usage
dir nums = [10, 20, 30];
nums[1] = 42;
ektb("nums[1] = %lld\n", nums[1]);
// Call the function
dir result = factorial(5);
ektb("5! = %lld\n", result);
You can download a pre-built binary from the Releases page, or compile it yourself.
Prerequisites: A C++17 compiler, CMake 3.20+, and LLVM 17+.
# Generate build configuration and compile (Windows Visual Studio 2022 example)
cmake -B build -G "Visual Studio 17 2022" -A x64 -DLLVM_DIR="D:/LLVM/lib/cmake/llvm"
cmake --build build --config Release# Run immediately via LLVM JIT
chkoupi.exe myfile.dz
# Print raw LLVM IR
chkoupi.exe myfile.dz --emit-ir
# Compile to a native object file, then link
chkoupi.exe myfile.dz --emit-obj out.o
clang out.o -o myprogram
./myprogram