Por que Ridgun
Que fai Ridgun de xeito diferente.
Ridgun toma ideas de Haskell, Rust, Go, Erlang e das linguaxes vectoriais, e reúneas nun só sitio: código disposto en táboas, paralelismo na sintaxe e memoria liberada sen recolector de lixo nin comprobador de préstamos. Velaquí como se compara e onde outras linguaxes aínda van por diante.
| Ridgun | Rust | Go | Haskell | C | Python | Erlang / Elixir | |
|---|---|---|---|---|---|---|---|
| Memoria | Libérase tras o último uso, decídeo o compilador; os valores compartidos cóntanse; rexións. Sen recolector e sen escribir tempos de vida. | Propiedade e préstamos, comprobados ao compilar; tempos de vida no código. | Recolector de lixo. | Recolector de lixo. | Manual (malloc e free). | Conta de referencias e un recolector de ciclos. | Recolector de lixo por proceso. |
| Paralelismo | Na sintaxe: || marca as liñas dun grafo de dependencias; ||map, ||filter; axentes e canles. | Fíos e async na linguaxe; paralelismo de datos mediante bibliotecas. | Gorrutinas e canles. | Fíos, sparks e STM, mediante bibliotecas e o tempo de execución. | Fíos e OpenMP, mediante bibliotecas e compiladores. | Fíos limitados polo GIL na versión habitual; procesos para o traballo en paralelo. | Procesos lixeiros e mensaxes. |
| Disposición do código | Unha función é unha táboa: a sinatura como cabeceira, unha cláusula por fila e os argumentos en columnas. stable format mantenas aliñadas. | Disposición libre; rustfmt. | Disposición libre; gofmt. | Sensible á disposición; formateadores da comunidade. | Disposición libre; varios formateadores. | Sensible ao sangrado; formateadores da comunidade. | Disposición libre; mix format para Elixir. |
| Tipos | Estático, declarado nas sinaturas; tipos alxébricos; xenéricos escritos A..Z; tensores coas súas dimensións comprobadas ao compilar. | Estático, inferido dentro das funcións; traits. | Estático; xenéricos desde a 1.18. | Estático, inferido; clases de tipos. | Estático, débil. | Dinámico; anotacións opcionais. | Dinámico; comprobación opcional. |
| Que entregas | Un executable ELF64 estático para x86-64 ou ARM64, escrito polo propio compilador: non fai falta cadea de ferramentas de C. | Un executable nativo, mediante LLVM e un enlazador do sistema. | Un executable nativo, normalmente estático. | Un executable nativo, mediante unha cadea de ferramentas de C. | Un executable nativo. | Código fonte executado por un intérprete. | Bytecode executado pola máquina virtual BEAM. |
| Ficheiro de proxecto | build.rg, escrito en Ridgun. | Cargo.toml (TOML). | go.mod. | Un ficheiro .cabal ou stack.yaml. | Makefiles, CMake e outros. | pyproject.toml (TOML). | mix.exs (Elixir), rebar.config (termos de Erlang). |
| Escrito en si mesmo | Si: compilador, ferramenta de proxectos, bibliotecas, framework web e este sitio. | Si. | Si. | Na súa maior parte (GHC). | Compiladores sobre todo en C e C++. | Non: o intérprete principal está en C. | O compilador si; a máquina virtual está en C. |
Onde outras van por diante hoxe
Ridgun é novo. Estas son as carencias que coñecemos e o que está previsto para cada unha.
| Ridgun hoxe | As linguaxes de arriba | Previsto | |
|---|---|---|---|
| Bibliotecas | As bibliotecas estándar, o framework web Solstice e os seus addons, todo na área de paquetes. | Grandes rexistros de paquetes construídos durante moitos anos. | Bibliotecas da comunidade, publicadas na área de paquetes. |
| Ferramentas para editores | Cores de sintaxe e formato para VS Code, Emacs e gedit. | Servidores de linguaxe, depuradores, perfiladores. | Un servidor de linguaxe. |
| Estabilidade | Versión 0.9: a sintaxe aínda cambia entre versións. | Versións estables con compatibilidade a longo prazo. | A versión 1.0 conxela a sintaxe. |
| Velocidade demostrada | Melloras constantes entre versións; aínda sen comparativa publicada. | Anos de comparativas publicadas. | Comparativas con C, publicadas co seu código. |
A forma máis rápida de xulgalo é probalo: comeza en poucos minutos, ou le o libro na túa lingua.