Varför Ridgun
Vad Ridgun gör annorlunda.
Ridgun hämtar idéer från Haskell, Rust, Go, Erlang och arrayspråken och samlar dem på ett ställe: kod uppställd som tabeller, parallellism i syntaxen och minne som frigörs utan skräpsamlare eller borrow checker. Så här står det sig i jämförelse, och här ligger andra språk fortfarande före.
| Ridgun | Rust | Go | Haskell | C | Python | Erlang / Elixir | |
|---|---|---|---|---|---|---|---|
| Minne | Frigörs efter sista användningen, vilket kompilatorn avgör; delade värden räknas; regioner. Ingen skräpsamlare, inga livstider att skriva. | Ägarskap och lån, kontrollerade vid kompilering; livstider i koden. | Skräpsamlare. | Skräpsamlare. | Manuell (malloc och free). | Referensräkning plus en cykelsamlare. | Skräpsamlare per process. |
| Parallellism | I syntaxen: || rader bildar en beroendegraf; ||map, ||filter; agenter och kanaler. | Trådar och async i språket; dataparallellism via bibliotek. | Gorutiner och kanaler. | Trådar, sparks och STM, via bibliotek och körtidsmiljön. | Trådar och OpenMP, via bibliotek och kompilatorer. | Trådar begränsade av GIL i det vanliga bygget; processer för parallellt arbete. | Lätta processer och meddelanden. |
| Kodlayout | En funktion är en tabell: signaturen som rubrik, en klausul per rad, argumenten i kolumner. stable format håller dem justerade. | Fri layout; rustfmt. | Fri layout; gofmt. | Layoutkänsligt; formaterare från gemenskapen. | Fri layout; flera formaterare. | Indragskänsligt; formaterare från gemenskapen. | Fri layout; mix format för Elixir. |
| Typer | Statiska, deklarerade i signaturer; algebraiska datatyper; generiska typer skrivna A..Z; tensorer vars former kontrolleras vid kompilering. | Statiska, härledda inuti funktioner; traits. | Statiska; generiska typer sedan 1.18. | Statiska, härledda; typklasser. | Statiska, svaga. | Dynamiska; valfria typanvisningar. | Dynamiska; valfri kontroll. |
| Vad du levererar | En statisk körbar ELF64-fil för x86-64 eller ARM64, skriven av kompilatorn själv: ingen C-verktygskedja behövs. | En nativ körbar fil, via LLVM och en systemlänkare. | En nativ, oftast statisk, körbar fil. | En nativ körbar fil, via en C-verktygskedja. | En nativ körbar fil. | Källkod som körs av en tolk. | Bytekod som körs av den virtuella maskinen BEAM. |
| Projektfil | build.rg, skriven i Ridgun. | Cargo.toml (TOML). | go.mod. | En .cabal eller stack.yaml. | Makefiler, CMake och andra. | pyproject.toml (TOML). | mix.exs (Elixir), rebar.config (Erlang-termer). |
| Skrivet i sig självt | Ja: kompilator, projektverktyg, bibliotek, webbramverk och den här webbplatsen. | Ja. | Ja. | Till största delen (GHC). | Kompilatorerna mest i C och C++. | Nej: huvudtolken är skriven i C. | Kompilatorn ja; den virtuella maskinen är skriven i C. |
Där andra ligger före i dag
Ridgun är ungt. Det här är de luckor vi känner till och vad som planeras för var och en.
| Ridgun i dag | Språken ovan | Planerat | |
|---|---|---|---|
| Bibliotek | Standardbiblioteken, webbramverket Solstice och dess tillägg, allt i paketområdet. | Stora paketregister som byggts upp under många år. | Bibliotek från gemenskapen, publicerade via paketområdet. |
| Editorstöd | Syntaxfärgning och formatering för VS Code, Emacs och gedit. | Språkservrar, felsökare, profilerare. | En språkserver. |
| Stabilitet | Version 0.9: syntaxen ändras fortfarande mellan versioner. | Stabila versioner med långsiktig kompatibilitet. | Version 1.0 fryser syntaxen. |
| Bevisad hastighet | Jämna förbättringar mellan versioner; ingen publicerad jämförelse än. | År av publicerade prestandatester. | Prestandatester mot C, publicerade med sin kod. |
Det snabbaste sättet att bedöma det är att prova: kom igång på några minuter, eller läs boken på ditt språk.