sobre o projeto
Uma linguagem para aprender pensando em sistemas.
Arandu é uma linguagem brasileira experimental para software nativo: busca segurança de memória, erros explícitos, sintaxe limpa e ferramentas que ajudam a entender o que o compilador está fazendo.
o nome
Arandu
No projeto, o nome expressa a ideia de aprender e inteligência: compreender o sistema para construir melhor.
a direção
Princípios que orientam Arandu
Não são slogans separados da implementação. Cada princípio aparece na linguagem, no compilador ou nas ferramentas que já estão sendo construídas.
Controle sem obscuridade
Arandu mira software nativo e previsível, mas mantém a sintaxe legível e próxima do raciocínio de quem programa.
Memória explícita
own, ref, mut e shared tornam as decisões sobre valores visíveis. O modelo de posse está evoluindo junto com o compilador.
Falhas que fazem parte do tipo
Option, Result e ? deixam ausência e erro no fluxo normal do programa, sem depender de exceções escondidas.
Ferramentas como parte da linguagem
new, check, run, build e doctor formam o caminho básico; diagnósticos com spans e o LSP ajudam a corrigir no lugar certo.
Uma base que pode ser verificada
CST, resolução de nomes, tipos, AMIR, DataLayout e queries incrementais dão estrutura ao compilador e ao seu crescimento.
Prometer só o que existe
O projeto separa o que já funciona, o que é experimental e o que está no roadmap. Honestidade técnica também é uma feature.
sem maquiagem
Onde o projeto está
Arandu é experimental. O melhor jeito de acompanhar a linguagem é distinguir a fundação que já existe das partes que ainda estão sendo lapidadas.
Hoje
lexer, parser, type checking, Option/Result, diagnósticos, JIT com Cranelift, build nativo, CLI, Salsa e LSP.
Em evolução
sintaxe completa de posse, polimento do backend C, customização de Display e backend LLVM de release.
um idioma que se lê
A clareza também aparece no código
module app
public func main(): void {
let mensagem: str = "olá, Arandu"
io.println(mensagem)
}Nomes de valores e funções usam camelCase; tipos usam PascalCase; módulos permanecem em minúsculas. Convenções simples deixam a leitura do programa previsível.