Código simples.
Executável nativo.
Caju é uma linguagem simples, de tipagem estática, que compila direto para código de máquina x86-64, com executáveis nativos para Linux e Windows, e também para WebAssembly. O compilador é escrito em Caju e compila a si mesmo, e já vem com testes e gerenciador de pacotes.
curl -fsSL https://raw.githubusercontent.com/cajulang/cajulang/main/install.sh | shfn greet(name: str) -> str { return "Hello, " + name + "!"} print(greet("world"))Simples de escrever, nativa ao rodar
Uma sintaxe enxuta, com tipos opcionais. O compilador gera um binário pequeno e estático, sem runtime para instalar.
Veja em código
Dois programas curtos, com a saída que eles imprimem. Há mais na página de exemplos.
Erros são valores
A função devolve o resultado e um erro, sem exceções escondidas.
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
Um tipo atende a uma interface só por ter os métodos dela, sem 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()) }Lado a lado com Go, Rust e Python
Os mesmos algoritmos, na mesma ordem de operações, em cada linguagem. Caju ganha ou empata com Go em todos os desafios, fica perto de Rust e muito à frente de Python.
Medido em novembro de 2026 num AMD Ryzen 7 5700G: melhor de até 3 execuções, incluindo o início do processo. Caju 0.3.0, Go 1.27.3, Rust 1.99.1 (opt-level=3), Python 3.12.3. Programas e resultados completos em bench/compare.
Servidor HTTP: Caju + web contra Go
A mesma API JSON escrita com web, o framework web da Caju, com Gin e com o net/http da biblioteca padrão do Go. Nas mesmas CPUs, a Caju atende de 1,5 a 2,2 vezes mais requisições por segundo.
Requisições por segundo com keep-alive (maior é melhor). O servidor fica preso às suas CPUs e o gerador de carga roda nas outras; Ryzen 7 5700G, WSL2. GET /users devolve uma lista de 50 structs; POST /users lê JSON para uma struct. O framework: github.com/cajulang/web · Método e todas as rodadas em bench/http
Pacotes direto do GitHub
O caju pkg vem junto com a linguagem. Não há servidor central: um pacote é um repositório do GitHub com um caju.toml, e o nome dele é o que você importa.
- DeclareAs dependências ficam no
caju.toml, cada uma com a versão mínima de que o projeto precisa. - ResolvaQuando dois pacotes pedem versões diferentes, vale a maior das mínimas. A escolha só muda se alguém pedir uma versão maior.
- TraveO
caju.lockguarda versão, commit e o hash SHA-256 dos arquivos de cada pacote. - ConfiraAntes de compilar,
caju buildecaju runverificam os hashes. Um arquivo alterado impede a compilação.
Do código ao executável
- Instale
curl -fsSL https://raw.githubusercontent.com/cajulang/cajulang/main/install.sh | shLinux x86-64. No Windows, use o WSL. - Rode
caju run hello.cajuCompila em memória e executa. - Gere o executável
caju build -o hello hello.caju caju build --target windows hello.cajuUm binário para Linux e um .exe para Windows.
Compile seu primeiro programa em Caju
Em desenvolvimento no compilador nativo: goroutines, canais e select, e os recursos nativos que ainda faltam no Windows.