Ruby
Ruby 2.6
Ruby 2.6 és la versió estable més recent de Ruby. S’inclouen moltes funcions noves i millores per a les demandes cada vegada més diverses i en expansió de Ruby. Amb aquesta actualització important de Ruby 2.5 a Fedora 29 a Ruby 2.6 a Fedora 30, Fedora es converteix en la plataforma de desenvolupament Ruby superior.
Els canvis notables inclouen:
-
Ara està disponible una implementació inicial d’un compilador Just-In-Time (JIT). El compilador JIT té com a objectiu millorar el rendiment de qualsevol execució de programa Ruby. A diferència dels compiladors JIT ordinaris per a altres llenguatges, el compilador JIT de Ruby fa la compilació JIT d’una manera única, que imprimeix codi C a un disc i genera un procés de compilador C comú per generar codi natiu.
El propòsit principal d’aquest llançament JIT és proporcionar una oportunitat per comprovar si funciona per a la vostra plataforma i per descobrir riscos de seguretat abans del llançament 2.6. El compilador JIT és compatible quan Ruby es construeix amb GCC, Clang o Microsoft VC++, que ha d’estar disponible en temps d’execució. En cas contrari, no podeu utilitzar-lo de moment.
A partir de Ruby 2.6.0 preview3, hem aconseguit un rendiment 1,7 vegades més ràpid que Ruby 2.5 en càrrega de treball de referència no trivial intensiva en CPU anomenada Optcarrot. El rendiment en càrrega de treball intensiva en memòria com l’aplicació Rails també es millorarà.
-
Ara està disponible un nou mòdul experimental
RubyVM::AST. Aquest mòdul té un mètodeparseque analitza un codi ruby donat de cadena i retorna nodes AST (Abstract Syntax Tree), i un mètodeparse_fileque analitza un fitxer de codi ruby donat i retorna nodes AST. També s’introdueix una classeRubyVM::AST::Node. Podeu obtenir informació d’ubicació i nodes fills dels objectes Node. Aquesta característica és experimental. No es garanteix la compatibilitat de l’estructura dels nodes AST. -
Noves característiques:
-
Afegeix un nou àlies
thenaKernel#yield_self. -
Afegeix
Random.bytes. -
Afegeix
Binding#source_location. Aquest mètode retorna la ubicació d’origen de l’enllaç, una matriu de 2 elements deFILEiLINE. -
Afegeix l’opció
:exceptionper permetre queKernel.#systemgeneri un error en lloc de retornar false. -
elsesenserescueara causa un error de sintaxi. [EXPERIMENTAL] -
Els noms de constants poden començar amb una lletra majúscula no ASCII.
-
S’introdueix un rang sense fi,
(1..). Funciona com si no tingués fi.
-
S’han fet les següents millores de rendiment:
-
S’ha accelerat
Proc#callperquè ja no cal preocupar-se de$SAFE. La referèncialc_fizzbuzzmostra una millora de velocitat del 40%. -
S’ha accelerat
block.callon el bloc es passa com a paràmetre de bloc. Ruby 2.6 millora el rendiment de la crida de bloc passat. Es pot observar una millora de 2,6x amb micro-referències. -
S’ha introduït Transient Heap (
theap).theapés un heap gestionat per a objectes de memòria de curta durada que són apuntats per classes específiques. Per exemple, fer un objecte Hash petit i de curta durada és el doble de ràpid. Amb la referènciardoc, s’observa una millora de rendiment del 6-7%.
Altres canvis notables des de la versió 2.5:
-
$SAFEés un estat global del procés i podem establir 0 de nou. -
Passar
safe_levelaERB.newestà obsolet. Els argumentstrim_modeieoutvarara són arguments de paraula clau. -
S’ha fusionat RubyGems 3.0.0.beta2.
-
Fusiona Bundler com a gem predeterminat.
Consulteu l’anunci de llançament upstream per obtenir informació més detallada sobre aquest llançament.
Want to help? Learn how to contribute to Fedora Docs ›