A modern scripting language.

Zero-dependency embeddable engine with async coroutines, pattern matching, OOP, automatic memory management, and a comprehensive standard library — designed for tooling, automation, game logic, and extending C/C++ applications.

v1.0.0 Pure C, zero deps MIT License GitHub
use math

fn greet(name)
    return "Hello, ${name}!"
end

let radius = 5
print(greet("Djazair"))
print("Area: ${math.PI * math.pow(radius, 2)}")
# => Hello, Djazair!
# => Area: 78.5398
fn fib(n)
    if n <= 1
        return n
    end
    return fib(n - 1) + fib(n - 2)
end

# Calculate first 10 Fibonacci numbers
for i in 0..10
    print("fib(${i}) = " + str(fib(i)))
end
use http
use json
 
async fn fetchIP()
    print("Fetching IP data...")
    let res = await http.get("http://ip-api.com/json")
    return json.parse(res.body)
end
 
async fn main()
    let task = fetchIP()
    let data = await task
    print("Query IP: " + data["query"])
    print("Country: " + data["country"])
end
 
await main()
# 1. Iterate over a range (0 to 5 inclusive)
for i in 0..5
    print("Number: ${i}")
end

# 2. Iterate directly over array elements
let fruits = ["apple", "banana", "cherry"]
for fruit in fruits
    print("Fruit: " + fruit)
end

# 3. Iterate over hash keys and values
let person = {"name": "Riad", "age": 30}
for key, value in person
    print("${key}: ${value}")
end
fn divide(a, b)
    if b == 0
        throw "Division by zero error!"
    end
    return a / b
end

try
    let result = divide(10, 0)
    print("Result: ${result}")
catch err
    print("Caught error: " + str(err))
finally
    print("Cleanup: execution complete.")
end

Why Djazair?

A lightweight, future-ready scripting language with high-performance C integration and a rich feature set.

Networking & Web Dev
Build non-blocking servers and network utilities with built-in asynchronous HTTP client/server, TCP/UDP sockets, and coroutines.
2D Game Development
Design interactive games and multimedia applications using a clean, Object-Oriented wrapper around the high-performance Raylib engine.
Desktop Applications
Build modern desktop GUI apps using Edge/Chromium WebView2. Combine HTML/CSS/JS frontend with Djazair backend via a secure IPC bridge.
Databases & Storage
Out-of-the-box support for SQLite and MySQL. Run safe parameterized queries (safeExecute / safeQuery) to prevent SQL injections.
Embedding-First C API
Lightweight, isolated VM with a core size of only ~180KB. Embed into any C/C++ project with a single header and custom callbacks.
Built-in Package Manager
Manage your ecosystem with DPM (written in Djazair). Easily download, resolve, and compile native extensions directly from Git or Zip.

One Language, Infinite Possibilities

See how Djazair handles real-world scenarios across games, desktop apps, web dev, and database integration.

Interactive 2D Games with Raylib

Djazair features an official Object-Oriented wrapper for the popular Raylib engine. Build 2D graphics, handle window drawing loops, configure FPS targets, poll keyboard/mouse inputs, and manage audio devices directly in Djazair.

game.dz
use raylib as rl

let win = rl.Window(800, 600, "Djazair Raylib Sandbox")
win.setFPS(60)

while win.isOpen()
    win.begin()
    win.clear(rl.BLACK)
    
    rl.drawCircle(400, 300, 30, rl.PURPLE)
    rl.drawText("Press ESC to exit", 10, 10, 20, rl.WHITE)
    
    win.finish()
end

win.close()
use webview

let app = webview.createWindow({
    "title": "Djazair Desktop App",
    "width": 800,
    "height": 600
})

app.onReady(fn()
    app.window.setHtml("<h1>Hello from Edge WebView2!</h1>")
end)

app.run()
use sqlite

let db = sqlite.connect("app.db")

if db.isConnected()
    db.execute("CREATE TABLE IF NOT EXISTS users (id INT, name TEXT)")
    
    # Safe query execution (prevents SQL injection)
    db.safeExecute("INSERT INTO users VALUES (?, ?)", [1, "Riad"])
    
    let res = db.safeQuery("SELECT * FROM users WHERE id = ?", [1])
    print(res.fetchAllAssoc())
    
    res.close()
    db.close()
end
use http

let server = http.createServer(fn(req, res)
    res.send("Hello from Djazair Asynchronous HTTP Server!")
end)

print("Server started at http://127.0.0.1:8080")
server.listen(8080)

Lightweight & Fast

Djazair is engineered to be as featherlight as Lua, while providing modern developer comforts.

Startup Latency (lower is better)

Djazair v1.0.0 ~0.15 ms
Lua 5.4 ~0.12 ms
Python 3.11 ~9.20 ms
Node.js v20 ~22.40 ms

Binary Footprint (lower is better)

Djazair (Interpreter VM) ~180 KB
Lua (Interpreter VM) ~280 KB
Python 3.11 (Minimal stdlib) ~15.4 MB
Node.js v20 (Statically linked) ~31.2 MB

Write Djazair in your favourite editor

Official language extensions provide syntax highlighting, code formatting, and smart completions — available for the most popular editors.

VS Code Cursor Antigravity IDE VSCodium Eclipse Theia
Available on the VS Code Marketplace and the Open VSX Registry. Just search for "Djazair" in your editor's extension panel to get syntax highlighting, formatting, and snippets instantly.

Ready to build with Djazair?

Dive into the documentation, explore the standard library, or browse the source on GitHub.