Geschrieben von naruse am 25.12.2017
Übersetzt von Marvin Gülker
Wir freuen uns, die Veröffentlichung von Ruby 2.5.0 bekanntgeben zu können.
Ruby 2.5.0 ist die erste stabile Veröffentlichung der 2.5er-Serie und enthält viele neue Features sowie Performanzverbesserungen. Die wichtigsten Änderungen sind:
Neue Features
rescue
/else
/ensure
können direkt indo
/end
-Blöcken genutzt werden. [Feature #12906]yield_self
führt den übergebenen Block im umgebenden Kontext aus. Anders alstap
gibt es aber das Ergebnis des Blocks zurück. [Feature #6721]- Unterstützung für Codeverzweigungs- und Methodenanalysen. Erstere geben an, welche logischen Zweige im Code ausgeführt werden und welche nicht. Letztere geben an, welche Methoden ausgeführt werden und welche nicht. Indem Sie eine Testsuite mit diesen neuen Features ausführen, können Sie feststellen, welche Codezweige und Methoden ausgeführt werden und können so die Testabdeckung Ihres Programms besser überblicken. [Feature #13901]
- Hash#slice [Feature #8499] und Hash#transform_keys [Feature #13583] hinzugefügt.
- Struct.new kann nun Klassen erzeugen, die mit Schlüsselwortargumenten (keyword arguments) umgehen können. [Feature #11925]
- Enumerable#any?, all?, none? und one? können jetzt Musterabgleiche gegen ihr Argument vornehmen. [Feature #11286]
- Die Auflösung von Konstanten über die oberste Ebene wurde entfernt. [Feature #11547]
- Eine der beliebtesten Bibliotheken, pp.rb, wird nunmehr automatisch
geladen. Sie müssen nicht länger
require "pp"
schreiben. [Feature #14123] - Backtrace und Fehlermeldung werden nunmehr in umgekehrter Reihenfolge (ältester Aufruf zuerst, neuester Aufruf zuletzt) ausgegeben. Wenn ein langes Backtrace auf einem Terminal (TTY) auftaucht, können Sie den Grund daher jetzt einfach am Ende des Backtraces finden. Beachten Sie, dass die Reihenfolge nur dann umgekehrt wird, wenn das Backtrace direkt auf einem Terminal ausgegeben wird. [Feature #8661] [experimentell]
Performanzverbesserungen
- Zwischen 5 und 10 % Performanzverbesserung durch die Entfernung
sämtlicher
trace
-Befehle aus dem Bytecode (instruction sequences). Dertrace
-Befehl wurde ursprünglich hinzugefügt, um dieTracePoint
-API zu unterstützen, welche jedoch praktisch kaum benutzt wurde. Es handelte sich somit um unnötigen Ballast. Stattdessen verwenden wir jetzt eine dynamische Technik. Siehe [Feature #14104] für weitere Details. - Die Übergabe von Blöcken mithilfe eines Blockparameters
(z.B.
def foo(&b); bar(&b); end
) ist dank der neuen verzögerten Allozierung der Proc-Instanzen (lazy proc allocation) etwa dreimal so schnell wie unter Ruby 2.4. [Feature #14045] - Mutex wurde neu geschrieben. Es ist jetzt kleiner und schneller. [Feature #13517]
- ERB generiert Quelltext aus einer Vorlage jetzt doppelt so schnell wie unter Ruby 2.4.
- Die Performanz einiger eingebauter Methoden wie u.a.
Array#concat
,Enumerable#sort_by
,String#concat
,String#index
,Time#+
und einigen mehr wurde verbessert. - IO.copy_stream benutzt jetzt copy_file_range(2). [Feature #13867]
Sonstige bemerkenswerte Änderungen seit 2.4
- SecureRandom bezieht Zufallsdaten jetzt bevorzugt vom Betriebssystem statt von OpenSSL. [Bug #9569]
- cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib wurden von der Standardbibliothek in Standard-Gems verschoben.
- Onigmo wurde auf 6.1.3 aktualisiert.
- Dies fügt einen neuen Abwesenheitsoperator hinzu.
- Beachten Sie, dass Ruby 2.4.1 diese Änderung ebenfalls enthält.
- Psych auf 3.0.2 aktualisiert.
- RubyGems auf 2.7.3 aktualisiert.
- RDoc auf 6.0.1 aktualisiert.
- Der Lexer basiert nun nicht mehr auf IRB, sondern auf Ripper, wodurch die Geschwindigkeit, mit der die Dokumentation generiert wird, erheblich zunimmt.
- Zahlreiche Fehler, die seit über zehn Jahren bekannt waren, wurden behoben.
- Unterstützung von neuer Ruby-Syntax der neuesten Versionen.
- Die unterstützte Unicode-Version ist jetzt 10.0.0.
Thread.report_on_exception
steht jetzt standardmäßig auf true. Das hilft beim Debugging von Programmem mit mehreren Threads. [Feature #14143]- IO#write akzeptiert jetzt mehrere Argumente. [Feature #9323]
Siehe die NEWS oder die Commit-Logs für weitere Informationen.
Mit diesen Änderungen wurden 6158 Dateien geändert, 348484 Einfügungen(+), 82747 Löschungen(-) seit Ruby 2.4.0!
Frohe Weihnachten, schöne Feiertage und viel Spaß bei der Programmierung mit Ruby 2.5!
Download
-
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
SIZE: 15834941 bytes SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d
-
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip
SIZE: 19495617 bytes SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84
-
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
SIZE: 13955820 bytes SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c
-
https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz
SIZE: 11292472 bytes SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578