Ruby 2.7 migliora la garbage collection e il pattern matching

Ruby 2.7, l'ultimo aggiornamento del linguaggio di programmazione Ruby, è ora generalmente disponibile come versione di produzione. La nuova versione apporta miglioramenti nella raccolta dei rifiuti, nella corrispondenza dei modelli e in REPL (read-eval-print-loop).

Una novità in Ruby 2.7 è la raccolta dei rifiuti di compattazione, che viene utilizzata per deframmentare uno spazio di memoria frammentato. Il GC.compactmetodo compatta gli oggetti nell'heap in modo che vengano utilizzate meno pagine. I membri del team di sviluppo di Ruby hanno spiegato che alcuni programmi Ruby multi-thread possono causare la frammentazione della memoria, che porta a un elevato utilizzo della memoria e alla riduzione della velocità.

Altri miglioramenti in Ruby 2.7.0 includono:

  • Una capacità sperimentale di corrispondenza del modello, che può attraversare un determinato oggetto e assegnare un valore se corrisponde a un modello. Il pattern matching è ampiamente utilizzato nei linguaggi di programmazione funzionale.
  • La modifica su più righe è ora supportata nella irbshell Ruby interattiva. Viene fornita anche l'integrazione con rdoc, il sistema di documentazione di Ruby. Con irb, gli sviluppatori possono visualizzare il riferimento per una classe, un metodo o un modulo. Inoltre, le linee di origine mostrate in binding.irbe ispezionare i risultati per gli oggetti di classe principale ora sono colorate.
  • La conversione automatica di parole chiave e argomenti posizionali è stata deprecata. Questa funzione verrà rimossa in Ruby 3.
  • Per il compilatore just-in-time (JIT) ancora sperimentale, introdotto per la prima volta in Ruby 2.6, il codice JIT viene ricompilato in codice meno ottimizzato quando un'ottimizzazione è stata invalidata. Inoltre, il metodo inlining viene eseguito quando un metodo è considerato puro. Tuttavia, molti metodi non sono ancora considerati puri.
  • Un Enumerable#tally conta l'occorrenza di ogni elemento.
  • Viene inoltre introdotto un parametro numerato come parametro di blocco predefinito.

Puoi scaricare Ruby 2.7 da ruby-lang.org.