Rilasciato Ruby 2.0.0-p0

Siamo lieti di annunciare l'uscita di Ruby 2.0.0-p0.

Ruby 2.0.0 è il primo rilascio stabile della serie Ruby 2.0, con molte nuove funzionalità e miglioramenti in risposta alle crescenti e diverse richieste per Ruby.

Buon divertimento con Ruby 2.0.0!

Download

Cos'è Ruby 2.0.0

Nuove Funzionalità

In evidenza:

  • Nuove funzionalità del linguaggio
    • Argomenti con parole chiave, che danno maggiore flessibilità al design di API
    • Module#prepend, un nuovo modo per estendere una classe
    • L'espressione letterale %i, che può essere usata per creare facilmente un array di simboli
    • __dir__, che ritorna il nome della directory che contiene il file che eseguito correntemente
    • L'encoding UTF-8 è ora il default, quindi è ora possibile omettere i "commenti magici" per configurare l'encoding di un file sorgente
  • Librerie incluse
    • Enumerable#lazy e Enumerator::Lazy, per creare (anche infiniti) lazy stream
    • Enumerator#size e Range#size, per ottenere una lazy size evaluation
    • #to_h, una nuova convenzione per la conversione a Hash
    • Onigmo, un nuovo motore per le espressioni regolari (un fork di Oniguruma)
    • API per la gestione asincrona delle eccezioni
  • Supporto per il debug
    • Supporto di DTrace, che permette la diagnosi a runtime in produzione
    • TracePoint, un'api per la tracciabilità migliorata
  • Miglioramenti di prestazioni
    • Ottimizzazione del Garbage Collector tramite bitmap marking
    • Ottimizzazione di Kernel#require che rende molto veloce lo startup di Rails
    • Ottimizzazione della VM, per esempio sul dispatch dei metodi
    • Ottimizzazione delle operazioni con Float

In aggiunta, sebbene sia una funzionalità sperimentale, la versione 2.0.0 include i Raffinamenti (Refinements), che aggiungono un nuovo concetto alla modularità di Ruby.

Compatibilità

La versione 2.0.0 è stata progettata affinchè sia compatibile con la versione 1.9. Sarà molto più facile migrare dalla 1.9 alla 2.0 di quanto è stato migrare dalla versione 1.8 a 1.9. (Alcune incompatibilità degne di nota sono descritte di seguito.)

Infatti, grazie alla dedizione e al lavoro di terzi, alcune popolari applicazioni quali Rails e tDiary sembrano funzionare già con la release candidate di Ruby 2.0.0.

Documentazione

Abbiamo inoltre migliorato la documentazione, cosa che è stata richiesta da molti utenti di Ruby. Abbiamo aggiunto tantissimo codice RDoc per moduli e metodi. La versione 2.0.0 sarà documentata al 75%, mentre la versione 1.9.3 era documentata circa al 60%. Inoltre, abbiamo anche aggiunto una descrizione della sintassi di Ruby, come puoi vedere eseguendo:

ri ruby:syntax

Stabilità

Nota che al contrario della versione 1.9.0, la versione 2.0.0 è una versione stabile, sebbene l'ultimo numero sia uno 0. Tutti gli autori di librerie sono fortemente invitati a supportare la versione 2.0.0. Come menzionato in precedenza, la migrazione da 1.9 a 2.0 sarà comparativamente facile.

Ruby 2.0.0 è pronto per essere utilizzato in produzione, e migliorerà assolutamente il tuo modo di programmare in Ruby.

Note

Articoli introduttivi

Questi sono alcuni articoli introduttivi scritti da terze parti sulle nuove funzionalità di Ruby 2.0.0:

I seguenti articoli sono inoltre utili, ma non aggiornati in materia di Raffinamenti:

Inoltre, la recente edizione di "Rubyist Magazine" include alcuni articoli che sono scritti dagli stessi autori delle nuove funzionalità, per introdurre alcune nuove funzionalità rilasciate con Ruby 2.0.0.

Sebbene siano scritti in Giapponese, delle traduzioni in inglese saranno disponibili in futuro.

Incompatibilità

Ci sono cinque incompatibilità degne di nota di cui siamo a conoscenza:

  • L'encoding di default per gli script Ruby è ora UTF-8 [#6679]. Alcune persone ci hanno notificato che questo ha impatto su programmi esistenti; per esempio alcuni programmi di benchark sembrano diventare più lenti [ruby-dev:46547].
  • Iconv è stato rimosso, dal momento che era già stato deprecato quando M17N è stato introdotto in Ruby 1.9. Utilizza String#encode, ecc. al suo posto.
  • Rottura di ABI (Application Binary Interface) [ruby-core:48984]. Normalmente, gli utenti dovrebbero solamente reinstallare le estensioni. Ricordati di NON COPIARE file .so o .bundle dalla versione 1.9.
  • #lines, #chars, #codepoints, #bytes ora ritornano un Array invece di un Enumerator [#6670]. Questo cambiamento permette di evitare il comune idioma "lines.to_a". Per ritornare un Enumerator, utilizza #each_line, ecc.
  • Object#inspect ritorna sempre una stringa quale #<ClassName:0x…> invece di delegare a #to_s. [#2152]

Ci sono inoltre altre incompatibilità minori. [ruby-core:49119]

Stato dei Raffinamenti

La versione 2.0.0 includerà i raffinamenti (refinements) come una "funzionalità sperimentale", siccome non siamo ancora tutti d'accordo su alcuni dettagli riguardanti le specifiche. Il comportamento di questa funzionalità potrà cambiare in future versioni di Ruby. Malgrado ciò, vorremmo che incominciassi ad utilizzare questa funzionalità e che ci facessi pervenire le tue impressioni. Il tuo feedback aiuterà a forgiare questa interessante funzionalità.

Ringraziamenti

Moltissime persone hanno contribuito a Ruby 2.0.0.

Anche una lista incompleta con solo alcune parti dei contributi è troppo lunga per essere inserita in questo annuncio, quindi, ecco qui un link alla pagina che contiene i ringraziamenti speciali:

Grazie a tutti!