Vai al contenuto
Ridgun
Italiano

Perché Ridgun

Cosa fa Ridgun in modo diverso.

Ridgun prende idee da Haskell, Rust, Go, Erlang e dai linguaggi array, e le riunisce in un unico posto: codice disposto in tabelle, parallelismo nella sintassi e memoria liberata senza garbage collector né borrow checker. Ecco come si confronta, e dove altri linguaggi sono ancora avanti.

Ridgun a confronto con linguaggi molto diffusi
RidgunRustGoHaskellCPythonErlang / Elixir
MemoriaLiberata dopo l’ultimo uso, lo decide il compilatore; i valori condivisi hanno un conteggio dei riferimenti; regioni. Nessun garbage collector, nessun lifetime da scrivere.Ownership e borrowing, verificati in fase di compilazione; lifetime nel codice.Garbage collector.Garbage collector.Manuale (malloc e free).Conteggio dei riferimenti più un garbage collector per i cicli.Garbage collector per processo.
ParallelismoNella sintassi: || formano un grafo di dipendenze; ||map, ||filter; agenti e canali.Thread e async nel linguaggio; parallelismo dei dati tramite librerie.Goroutine e canali.Thread, spark e STM, tramite librerie e il runtime.Thread e OpenMP, tramite librerie e compilatori.Thread limitati dal GIL nella build abituale; processi per il lavoro in parallelo.Processi leggeri e messaggi.
Disposizione del codiceUna funzione è una tabella: la firma come intestazione, una clausola per riga, gli argomenti in colonne. stable format le mantiene allineate.Disposizione libera; rustfmt.Disposizione libera; gofmt.Sensibile al layout; formattatori della comunità.Disposizione libera; vari formattatori.Sensibile all’indentazione; formattatori della comunità.Disposizione libera; mix format per Elixir.
TipiStatica, dichiarata nelle firme; tipi algebrici; generici scritti A..Z; tensori con le dimensioni verificate in fase di compilazione.Statica, inferita all’interno delle funzioni; trait.Statica; generici dalla 1.18.Statica, inferita; classi di tipi.Statica, debole.Dinamica; annotazioni opzionali.Dinamica; controllo opzionale.
Cosa distribuisciUn eseguibile ELF64 statico per x86-64 o ARM64, scritto dal compilatore stesso: non serve una toolchain C.Un eseguibile nativo, tramite LLVM e un linker di sistema.Un eseguibile nativo, di solito statico.Un eseguibile nativo, tramite una toolchain C.Un eseguibile nativo.Codice sorgente eseguito da un interprete.Bytecode eseguito dalla macchina virtuale BEAM.
File di progettobuild.rg, scritto in Ridgun.Cargo.toml (TOML).go.mod.Un file .cabal o stack.yaml.Makefile, CMake e altri.pyproject.toml (TOML).mix.exs (Elixir), rebar.config (termini Erlang).
Scritto in sé stessoSì: compilatore, strumento di progetto, librerie, framework web e questo sito.Sì.Sì.In gran parte (GHC).Compilatori scritti per lo più in C e C++.No: l’interprete principale è in C.Il compilatore sì; la macchina virtuale è in C.

Dove altri sono avanti oggi

Ridgun è giovane. Queste sono le lacune che conosciamo e cosa è previsto per ciascuna.

Ridgun oggiI linguaggi qui sopraPrevisto
LibrerieLe librerie standard, il framework web Solstice e i suoi addon, tutto nella sezione dei pacchetti.Grandi registri di pacchetti costruiti in molti anni.Librerie della comunità, pubblicate nella sezione dei pacchetti.
Strumenti per editorColori della sintassi e formattazione per VS Code, Emacs e gedit.Language server, debugger, profiler.Un language server.
StabilitàVersione 0.9: la sintassi cambia ancora tra una versione e l’altra.Versioni stabili con compatibilità a lungo termine.La versione 1.0 congela la sintassi.
Velocità dimostrataMiglioramenti costanti tra una versione e l’altra; nessun confronto pubblicato per ora.Anni di benchmark pubblicati.Benchmark rispetto a C, pubblicati con il loro codice.

Il modo più rapido per giudicare è provarlo: inizia in pochi minuti, oppure leggi il libro nella tua lingua.