Ruby è un software da riga di comando multipiattaforma, liberamente distribuito, ricco di funzionalità e open source che è stato progettato da zero per fornire un potente linguaggio di programmazione per gli sviluppatori che desiderano creare un'applicazione in Ruby .
Caratteristiche, molte funzionalità
Le caratteristiche principali includono una sintassi semplice ispirata ad Ada ed Eiffel, threading indipendente del sistema operativo, capacità di gestione delle eccezioni per la gestione degli errori, numerosi operatori, un linguaggio object oriented puro e completo, oltre al supporto per l'aggiunta di metodi a una classe.
Inoltre, Ruby offre una sola eredità, vere chiusure, blocchi nella sua sintassi, un vero garbage collector mark-and-sweep, supporto per scrivere estensioni C, interi, supporto per caricare dinamicamente le librerie di estensioni, e non riesce a bisogno di dichiarazioni variabili.
Iniziare con Ruby
L'installazione del linguaggio di programmazione Ruby su un sistema operativo GNU / Linux è un'operazione molto semplice, in quanto il pacchetto è disponibile per il download su tutte le principali distribuzioni, direttamente dai loro repository software principali. Utilizzare l'app integrata Software Center per installarlo.
In alternativa, l'ultima versione può essere installata usando il pacchetto sorgente, che è distribuito gratuitamente su Softoware. È sufficiente scaricarlo e salvarlo nella directory Home, estrarre l'archivio e accedere alla posizione dei file di archivio estratti in un'app emulatore di terminale (ad esempio cd /home/softoware/ruby-2.2.0).
Esegui il & lsquo; ./ configure & rsquo; comando per configurare il progetto (puoi usare il comando & lsquo; ./ configure --help & rsquo; per visualizzare le opzioni disponibili per l'ottimizzazione di Ruby per una specifica architettura hardware). Quindi, esegui & lsquo; fai & rsquo; comando per compilarlo e il & lsquo; sudo make install & rsquo; comando per installarlo.
Supportato su GNU / Linux, Windows, Mac OS X, BeOS e OS / 2
Ruby è un software multipiattaforma che può essere utilizzato con successo su tutte le distribuzioni GNU / Linux, nonché su qualsiasi sistema operativo simile a UNIX, inclusi Mac OS X, BeOS, OS / 2 e Microsoft Windows. È compatibile con piattaforme di computer a 32 e 64 bit.
Novità in questa versione:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità nella versione 2.5.0:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità della versione nella versione 2.4.2:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità nella versione 2.4.1:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità della versione nella versione 2.4.0:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità in nella versione 2.3.3:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità nella versione 2.3.1:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità della versione nella versione 2.3.0:
- Viene introdotto un Pragma letterale stringa congelato. Con Ruby 2.1, & quot; str & quot; .freeze è stato ottimizzato per ridurre l'allocazione degli oggetti. Ruby 2.3 introduce un nuovo commento magico e un'opzione della riga di comando per bloccare tutti i valori letterali delle stringhe nei file sorgente. Inoltre per il debug, puoi ottenere dove viene creato l'oggetto su & quot; impossibile modificare la stringa congelata & quot; errore di --debug = opzione della riga di comando di congelamento-stringa-letterale.
- Un operatore di navigazione sicuro (il cosiddetto operatore solitario) &., che già esiste in C #, Groovy e Swift, viene introdotto per facilitare la gestione di nil come obj e .foo. Vengono aggiunti anche gli array # dig e Hash # dig. Si noti che questo si comporta come prova! di Active Support, che gestisce in modo speciale solo nil.
- La gemma did_you_mean è in bundle. La gemma did_you_mean mostra i candidati su NameError e NoMethodError per facilitare il debugging.
- RubyVM :: InstructionSequence # to_binary e .load_from_binary vengono introdotti come funzionalità sperimentale. Con queste funzionalità, possiamo creare un sistema di pre-compilazione ISeq (bytecode).
- Include anche molti miglioramenti delle prestazioni, ad esempio, riconsiderare la struttura dei dati di ingresso del metodo, introdurre la nuova struttura dati della tabella, ottimizzare la chiamata Proc #, l'ottimizzazione del livello del codice macchina per l'allocazione degli oggetti e il codice di chiamata del metodo, struttura dei dati delle variabili di istanza più intelligente, Socket e I / O consentono di usare & quot; exception: & quot; parole chiave per I / O non bloccanti ad alte prestazioni e così via.
Novità nella versione 2.2.3:
- Questa versione include la correzione per la sicurezza per un dominio RubyGems vulnerabilità di verifica del nome. CVE-2015-3900 Richiedi vulnerabilità di hijacking in RubyGems 2.4.6 e precedenti
Novità nella versione 2.2.2:
- Questa versione include la correzione per la sicurezza per un'estensione OpenSSL vulnerabilità della verifica del nome host.
Novità della versione nella versione 2.2.0:
- VM (cache dei metodi)
- RGenGC (Vedi presentazione RubyKaigi di ko1 e presentazione di RubyConf 2013)
- perfezionamenti # 8481 # 8571
- modifiche alla sintassi:
- Decimal / Complex Literal # 8430
- valore di ritorno di def # 3753
- bignum:
- usa GMP # 8796
- String # scrub # 8414
- Socket.getifaddrs # 8368
- RDoc 4.1.0 e RubyGems 2.2.0
- & quot; literal & quot; .freeze ora è ottimizzato # 9042
- aggiungi Eccezione # causa # 8257
- aggiorna le librerie come BigDecimal, JSON, NKF, Rake, RubyGems e RDoc
- rimuovi curses # 8584
Novità della versione 2.0.0-p0
- Caratteristiche principali della lingua:
- Argomenti della parola chiave, che offrono flessibilità per la progettazione dell'API
- Modulo # precede, che è un nuovo modo per estendere una classe
- Un letterale% i, che crea facilmente una serie di simboli
- __ dir__, che restituisce la dirname del file attualmente in esecuzione
- La codifica predefinita UTF-8, che rende omissibili molti commenti magici
- Librerie incorporate:
- Enumerable # lazy ed Enumerator :: Lazy, per (forse infinito) lazy stream
- Enumerator # size e Range # size, per la valutazione della dimensione lenta li>
- #to_h, che è una nuova convenzione per la conversione in hash
- Onigmo, che è un nuovo motore regexp (un fork di Oniguruma)
- API di gestione delle eccezioni asincrone
- Supporto debug:
- Supporto DTrace, che consente la diagnosi di runtime in produzione
- TracePoint, che è un'API di tracciamento migliorata li>
- Miglioramenti delle prestazioni:
- Ottimizzazione GC mediante marcatura bitmap
- Kernel # richiede un'ottimizzazione che rende l'avvio di Rails molto veloce
- Ottimizzazione della VM come l'invio del metodo
- Ottimizzazione dell'operazione Float
Novità nella versione 1.9.3-p392:
- Questa versione include correzioni di sicurezza relative a JSON e REXML in bundle:
- Vulnera zione del tipo Denial of Service e creazione di oggetti non sicuri in JSON (CVE-2013-0269)
- Espansione delle entità vulnerabilità DoS in REXML (bomba XML)
- Sono inclusi anche alcuni piccoli bugfix.
Novità nella versione 1.9.3-p385:
- Questa versione include una correzione di sicurezza relativa al pacchetto RDoc.
Novità nella versione 1.9.3-p384:
- Questa versione include una correzione di sicurezza relativa al pacchetto RDoc.
Novità nella versione 1.9.3-p286:
- $ SAFE che sfugge la vulnerabilità relativa a Eccezione # to_s / NameError # to_s (CVE-2012-4464, CVE-2012-4466)
- Creazione involontaria di file causata dall'inserimento di un carattere NUL illegale
- altre numerose correzioni di bug.
I commenti non trovato