Saltar para o conteúdo
Ridgun
Português

Porquê o Ridgun

O que o Ridgun faz de forma diferente.

O Ridgun vai buscar ideias a Haskell, Rust, Go, Erlang e às linguagens de arrays, e reúne-as num só lugar: código disposto em tabelas, paralelismo na sintaxe e memória libertada sem coletor de lixo nem borrow checker. Eis como se compara, e onde outras linguagens ainda estão à frente.

O Ridgun comparado com linguagens muito usadas
RidgunRustGoHaskellCPythonErlang / Elixir
MemóriaLibertada após o último uso, por decisão do compilador; valores partilhados contados; regiões. Sem coletor e sem lifetimes para escrever.Propriedade e empréstimo, verificados em tempo de compilação; lifetimes no código.Coletor de lixo.Coletor de lixo.Manual (malloc e free).Contagem de referências e um coletor de ciclos.Coletor de lixo por processo.
ParalelismoNa sintaxe: || formam um grafo de dependências; ||map, ||filter; agentes e canais.Threads e async na linguagem; paralelismo de dados através de bibliotecas.Goroutines e canais.Threads, sparks e STM, através de bibliotecas e do runtime.Threads e OpenMP, através de bibliotecas e compiladores.Threads limitadas pelo GIL na versão habitual; processos para trabalho paralelo.Processos leves e mensagens.
Disposição do códigoUma função é uma tabela: a assinatura como cabeçalho, uma cláusula por linha e os argumentos em colunas. stable format mantém-nas alinhadas.Disposição livre; rustfmt.Disposição livre; gofmt.Sensível à disposição; formatadores da comunidade.Disposição livre; vários formatadores.Sensível à indentação; formatadores da comunidade.Disposição livre; mix format para Elixir.
TiposEstático, declarado nas assinaturas; tipos algébricos; genéricos escritos A..Z; tensores com as dimensões verificadas em tempo de compilação.Estático, inferido dentro das funções; traits.Estático; genéricos desde a 1.18.Estático, inferido; classes de tipos.Estático, fraco.Dinâmico; anotações opcionais.Dinâmico; verificação opcional.
O que entregaUm executável ELF64 estático para x86-64 ou ARM64, escrito pelo próprio compilador: não precisa de cadeia de ferramentas de C.Um executável nativo, através do LLVM e de um ligador do sistema.Um executável nativo, normalmente estático.Um executável nativo, através de uma cadeia de ferramentas de C.Um executável nativo.Código-fonte executado por um interpretador.Bytecode executado pela máquina virtual BEAM.
Ficheiro de projetobuild.rg, escrito em Ridgun.Cargo.toml (TOML).go.mod.Um ficheiro .cabal ou stack.yaml.Makefiles, CMake e outros.pyproject.toml (TOML).mix.exs (Elixir), rebar.config (termos Erlang).
Escrito em si mesmoSim: compilador, ferramenta de projetos, bibliotecas, framework web e este site.Sim.Sim.Na maior parte (GHC).Compiladores sobretudo em C e C++.Não: o interpretador principal está em C.O compilador sim; a máquina virtual está em C.

Onde os outros estão à frente hoje

O Ridgun é jovem. Estas são as lacunas que conhecemos e o que está previsto para cada uma.

O Ridgun hojeAs linguagens acimaPrevisto
BibliotecasAs bibliotecas padrão, o framework web Solstice e os seus addons, tudo na área de pacotes.Grandes registos de pacotes construídos ao longo de muitos anos.Bibliotecas da comunidade, publicadas na área de pacotes.
Ferramentas para editoresCores de sintaxe e formatação para VS Code, Emacs e gedit.Servidores de linguagem, depuradores, profilers.Um servidor de linguagem.
EstabilidadeVersão 0.9: a sintaxe ainda muda entre versões.Versões estáveis com compatibilidade a longo prazo.A versão 1.0 congela a sintaxe.
Velocidade comprovadaMelhorias constantes entre versões; ainda sem comparação publicada.Anos de benchmarks publicados.Benchmarks face ao C, publicados com o respetivo código.

A forma mais rápida de avaliar é experimentar: comece em poucos minutos, ou leia o livro no seu idioma.