Código simple.
Ejecutable nativo.
Caju es un lenguaje simple, de tipado estático, que compila directamente a código máquina x86-64, con ejecutables nativos para Linux y Windows, y también a WebAssembly. El compilador está escrito en Caju y se compila a sí mismo, e incluye de serie pruebas y un gestor de paquetes.
curl -fsSL https://raw.githubusercontent.com/cajulang/cajulang/main/install.sh | shfn greet(name: str) -> str { return "Hello, " + name + "!"} print(greet("world"))Fácil de escribir, nativo al ejecutar
Una sintaxis concisa, con tipos opcionales. El compilador genera un binario pequeño y estático, sin runtime que instalar.
Míralo en código
Dos programas cortos, con la salida que imprimen. Hay más en la página de ejemplos.
Los errores son valores
La función devuelve el resultado y un error, sin excepciones ocultas.
fn divide(a: int, b: int) -> (int, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil} for _, d := range []int{5, 0} { q, err := divide(10, d) if err != nil { print("error:", err) continue } print("10 /", d, "=", q)}Structs, métodos e interfaces
Un tipo satisface una interfaz solo por tener sus métodos, sin declarar nada.
interface Shape { area() -> num } struct Rect { w: num, h: num }struct Circle { r: num } fn (r: Rect) area() -> num { return r.w * r.h }fn (c: Circle) area() -> num { return 3.14159 * c.r * c.r } shapes := []Shape{Rect{2, 3}, Circle{1}}for _, s := range shapes { print(s.area()) }Frente a frente con Go, Rust y Python
Los mismos algoritmos, con el mismo orden de operaciones, en cada lenguaje. Caju gana o empata con Go en todos los desafíos, queda cerca de Rust y muy por delante de Python.
Medido en noviembre de 2026 en un AMD Ryzen 7 5700G: mejor de hasta 3 ejecuciones, incluido el arranque del proceso. Caju 0.3.0, Go 1.27.3, Rust 1.99.1 (opt-level=3), Python 3.12.3. Programas y resultados completos en bench/compare.
Servidor HTTP: Caju + web frente a Go
La misma API JSON escrita con web, el framework web de Caju, con Gin y con el net/http de la biblioteca estándar de Go. En las mismas CPU, Caju atiende de 1,5 a 2,2 veces más solicitudes por segundo.
Solicitudes por segundo con keep-alive (más es mejor). El servidor queda fijado a sus CPU y el generador de carga corre en las demás; Ryzen 7 5700G, WSL2. GET /users devuelve una lista de 50 structs; POST /users lee JSON en una struct. El framework: github.com/cajulang/web · Método y todas las rondas en bench/http
Paquetes directamente desde GitHub
caju pkg viene incluido con el lenguaje. No hay servidor central: un paquete es un repositorio de GitHub con un caju.toml, y su nombre es lo que importas.
- DeclaraLas dependencias van en
caju.toml, cada una con la versión mínima que necesita el proyecto. - ResuelveCuando dos paquetes piden versiones distintas, se usa la mayor de las mínimas. La elección solo cambia si alguien pide una versión mayor.
- Fija
caju.lockguarda la versión, el commit y el hash SHA-256 de los archivos de cada paquete. - VerificaAntes de compilar,
caju buildycaju runcomprueban los hashes. Un archivo modificado impide la compilación.
Del código al ejecutable
- Instala
curl -fsSL https://raw.githubusercontent.com/cajulang/cajulang/main/install.sh | shLinux x86-64. En Windows, usa WSL. - Ejecuta
caju run hello.cajuCompila en memoria y ejecuta. - Genera el ejecutable
caju build -o hello hello.caju caju build --target windows hello.cajuUn binario para Linux y un .exe para Windows.
Compila tu primer programa en Caju
En desarrollo en el compilador nativo: goroutines, canales y select, y las funciones nativas que aún faltan en Windows.