Geschrieben von naruse am 9.11.2016
Übersetzt von Marvin Gülker
Wir freuen uns, die Veröffentlichung von Ruby 2.4.0-preview3 ankündigen zu können.
Ruby 2.4.0-preview3 ist die dritte Vorschau auf Ruby 2.4.0 und wird in der Absicht veröffentlicht, Feedback von der Gemeinschaft zu erhalten. Bitte geben Sie uns Rückmeldung, da Sie immer noch Einfluss auf die Features nehmen können.
Verbesserung der Hash-Tabellen (von Wladimir Makarow)
Die interne Struktur von Hash-Tabellen (st_table) wird durch die Einführung offener Adressierung (open addressing) und eines die Einfügungsreihenfolge beibehaltenden Arrays (inclusion order array) verbessert. Diese Verbesserung ist mit diversen Leuten diskutiert worden, insbesondere mit Jura Sokolow.
Binding#irb: Startet eine REPL-Sitzung wie binding.pry
Im Rahmen von Debugging ist es oft erforderlich, sich Variablenwerte
mithilfe von p
anzeigen zu lassen. Mit
pry war es möglich, durch Einfügen der
Anweisung binding.pry
in die Anwendung an der betroffenen Stelle
eine REPL zu starten und beliebigen Ruby-Code auszuführen. Mit
r56624
wird binding.irb
eingeführt, das sich ganz ähnlich verhält, aber
eine reguläre IRB startet.
Zusammenführung von Fixnum und Bignum in Integer
Obwohl ISO/IEC 30170:2012 keine näheren Bestimmungen über die Integer-Klasse trifft, führt Ruby mit Fixnum und Bignum zwei sichtbare Subklassen von Integer. Mit Ruby 2.4 werden diese mit Integer vereinigt. Daraus folgt, dass alle C-Extensions, die die Klassen Fixnum oder Bignum benutzen, überarbeitet werden müssen.
Siehe dazu auch das dazugehörige Ticket und die Folien von akr.
String unterstützt Groß- und Kleinschreibung mit Unicode
Die Methoden String/Symbol#upcase/downcase/swapcase/capitalize(!)
wenden bei der Konvertierung in Groß- oder Kleinschreibung nunmehr
Unicode-Regeln anstelle der bisherigen ASCII-Regeln an.
Performanzverbesserungen
Ruby 2.4 enthält im Übrigen die folgenden Performanzverbesserungen, die Änderungen am Sprachverhalten mit sich bringen:
Array#max, Array#min
[x, y].max
and [x, y].min
wurden so optimiert, dass sie unter
bestimmten Bedingungen kein zusätzliches temporäres Array erzeugen.
Regexp#match?
Eine Methode Regexp#match?
wurde hinzugefügt, die einen Regulären
Ausdruck anwendet, ohne eine Backreference zu erstellen oder $~
zu
verändern, wodurch Objektallozierungen eingespart werden können.
Sonstige Performanzverbesserungen
Debugging
Thread#report_on_exception und Thread.report_on_exception
Exceptions in Threads werden von Ruby ignoriert, bis der betreffende
Thread mit einem anderen zusammengeführt (joined) wird. Wenn
report_on_exception = true
gesetzt ist, erhalten Sie einen Hinweis,
wenn ein Thread wegen einer nicht behandelten Exception abgestürzt
ist.
Geben Sie uns Rückmeldung über das gewünschte Standardverhalten von
report_on_exception
und über report-on-GC, welches eine Nachricht
anzeigt, wenn ein Thread vom GC vernichtet wird, ohne zuvor mit
einem anderen Thread zusammengeführt worden zu sein.
Deadlock-Erkennung für Threads zeigt Threads nun mit Backtrace und Abhängkeiten
Zwar besitzt Ruby eine Deadlock-Erkennung bezüglich wartender Threads, aber ihre Meldungen enthalten nicht ausreichend Informationen für sinnvolles Debugging. Die Deadlock-Erkennung von Ruby 2.4 listet Threads nun mit ihrem Backtrace und abhängigen Threads.
Versuchen Sie Ruby 2.4.0-preview3, haben Sie Spaß daran und geben Sie Rückmeldung!
Sonstige wesentliche Änderungen seit 2.3
- Unterstützung von OpenSSL 1.1.0
- ext/tk wurde aus der stdlib entfernt Feature #8539
- XMLRPC wurde aus der stdlib entfernt Feature #12160
Siehe die NEWS und das ChangeLog für weitere Informationen.
Mit diesen Änderungen wurden seit Ruby 2.3.0 2470 Dateien geändert, 283051 Einfügungen(+), 64902 Löschungen(-)!
Download
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.bz2
SIZE: 12615328 bytes SHA1: fefe49f6a7d5b642936c324f3b05aaac827355db SHA256: 305a2b2c627990e54965393f6eb1c442eeddfa149128ccdd9f4334e2e00a2a52 SHA512: 6602c65a7b1e3bc680acc48217108f4335e84fdd74a9cf06f2e2f9ad00a2fccacf9fa035a912bc9d5cc3f0c7a5e21475971dfac37b0364311ef3645f25c7ddf9
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.gz
SIZE: 15758023 bytes SHA1: f6a6ec9f7fedad0bf4efee2e42801cc963f60dca SHA256: c35fe752ccfabf69bf48e6aab5111c25a05938b428936f780638e2111934c9dd SHA512: 68556d5252b6813b4c8eeba32733e940207f80694b5c5d20e69bf01eb52929ed2466496b05a895a5ad4831d430695e17624eb35b728b2d4d7cf02df756ac48b4
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.tar.xz
SIZE: 9957596 bytes SHA1: 66592b1a52f985638d639e7c3dd6bdda4e0569d0 SHA256: b14be2b5c80bff0d6894ae2b37afdb17a968413e70236ec860f3e2d670b4c317 SHA512: 5be20f0b2609745790c2b22f2228e69a840f63c34a117a1f95fd5436af211f0a6db2758d513d3e095a2d97c53c80793579cb2a1e00e70cf72c487a88c4a40d33
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0-preview3.zip
SIZE: 17579012 bytes SHA1: 15d08cff952da3844ae54887b7f74b12d47c9ee2 SHA256: b95a8f67fb7d6e852db77c5660c8878c14d68eb72c5501dac164a7e640ecb06e SHA512: fa15e1b7ab0cab56c9a580e1b1e2fee250ee0b9c59546079675a1931a36e37131bd37d64033c75e05d8e9d9fcc33ce7850254d3acaca2136cf3bd08b070244f0
Veröffentlichungskommentar
Siehe auch den Veröffentlichungsplan und andere Informationen: