Ruby 2.6.0-rc2 veröffentlicht
Veröffentlicht von naruse am 15. Dez 2018
Wir freuen uns, die Veröffentlichung von Ruby 2.6.0-rc2 bekannt zu geben.
Ruby 2.6.0-rc2 ist die zweite Release Candidate von Ruby 2.6.0. RC2 wird veröffentlicht, um das gebundelte Bundler 1.17 anstelle von 2.0 zu testen. Es führt einige neue Features und Leistungsverbesserungen ein, zum Beispiel
JIT
Ruby 2.6 führt eine erste Implementierung eines JIT (Just-in-time) Compilers ein.
Der JIT-Compiler zielt darauf ab, die Leistung jeder Ruby-Programmausführung zu verbessern. Im Gegensatz zu herkömmlichen JIT-Compilern für andere Sprachen führt Rubys JIT-Compiler eine JIT-Kompilierung auf einzigartige Weise durch, indem er C-Code auf eine Festplatte schreibt und einen gemeinsamen C-Compilerprozess startet, um nativen Code zu generieren. Siehe auch: MJIT-Organisation (von Vladimir Makarov).
Anwendung: Geben Sie einfach --jit in der Befehlszeile oder in der Umgebungsvariable $RUBYOPT an. Die Angabe von --jit-verbose=1 ermöglicht die Ausgabe grundlegender Informationen über die laufende JIT-Kompilierung. Weitere Optionen finden Sie unter ruby --help.
Der Hauptzweck dieser JIT-Veröffentlichung ist es, eine Gelegenheit zu bieten, zu prüfen, ob sie für Ihre Plattform funktioniert, und Sicherheitsrisiken vor der 2.6-Veröffentlichung zu finden. Der JIT-Compiler wird unterstützt, wenn Ruby mit GCC, Clang oder Microsoft VC++ erstellt wurde, was zur Laufzeit verfügbar sein muss. Andernfalls können Sie ihn vorerst nicht verwenden.
Mit Ruby 2.6.0-rc2 haben wir eine 1,7-fache Leistungssteigerung gegenüber Ruby 2.5 auf einer CPU-intensiven, nicht-trivialen Benchmark-Workload namens Optcarrot erzielt https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208. Wir werden die Leistung auch bei speicherintensiven Workloads wie Rails-Anwendungen verbessern.
Bleiben Sie dran für das neue Zeitalter der Ruby-Performance.
RubyVM::AbstractSyntaxTree [Experimentell]
Ruby 2.6 führt das Modul RubyVM::AbstractSyntaxTree ein.
Dieses Modul verfügt über eine parse-Methode, die Ruby-Code aus einer gegebenen Zeichenkette parst und AST-Knoten (Abstract Syntax Tree) zurückgibt, sowie eine parse_file-Methode, die Ruby-Code aus einer gegebenen Datei parst und AST-Knoten zurückgibt. Die Klasse RubyVM::AbstractSyntaxTree::Node wird ebenfalls eingeführt. Sie können Standortinformationen und Kindknoten von Node-Objekten abrufen. Dieses Feature ist experimentell. Die Kompatibilität der Struktur der AST-Knoten wird nicht garantiert.
Neue Funktionen
-
Fügt einen neuen Alias
thenzuKernel#yield_selfhinzu. [Feature #14594] -
elseohnerescueverursacht jetzt einen Syntaxfehler. [EXPERIMENTELL][Feature #14606] -
Konstantennamen dürfen mit einem nicht-ASCII-Großbuchstaben beginnen. [Feature #13770]
-
Einführung von endlosen Bereichen (endless ranges). [Feature #12912]
Ein endloser Bereich,
(1..), wird eingeführt. Er funktioniert, als ob er kein Ende hätte. Hier sind typische Anwendungsfälleary[1..] # identical to ary[1..-1] without magical -1 (1..).each {|index| block } # infinite loop from index 1 ary.zip(1..) {|elem, index| block } # ary.each.with_index(1) { } -
Binding#source_locationhinzugefügt. [Feature #14230]Diese Methode gibt den Quellcode-Speicherort der Bindung zurück, ein 2-Element-Array von
__FILE__und__LINE__. Traditionell konnten dieselben Informationen durcheval("[__FILE__, __LINE__]", binding)abgerufen werden, aber wir planen, dieses Verhalten zu ändern, sodassKernel#evalden Quellcode-Speicherort der Bindung ignoriert [Bug #4352]. Daher sollten Benutzer diese neu eingeführte Methode anstelle vonKernel#evalverwenden. -
Fügt die Option
:exceptionhinzu, damitKernel#systembei einem Fehler eine Ausnahme auslöst, anstattfalsezurückzugeben. [Feature #14386] -
Fügt einen "Oneshot"-Modus zu
Coveragehinzu. [Feature#15022]- Dieser Modus prüft, ob jede Zeile mindestens einmal ausgeführt wurde", anstatt wie oft jede Zeile ausgeführt wurde". Ein Hook für jede Zeile wird höchstens einmal ausgelöst, und nachdem er ausgelöst wurde, wird das Hook-Flag entfernt, d.h. er läuft ohne Overhead.
- Fügt das Schlüsselwortargument
:oneshot_lineszu Coverage.start hinzu. - Fügt die Schlüsselwortargumente
:stopund:clearzu Coverage.result hinzu. Wenncleartrue ist, werden die Zähler auf null gesetzt. Wennstoptrue ist, wird die Coverage-Messung deaktiviert. Coverage.line_stub, eine einfache Hilfsfunktion, die den "Stub" der Zeilen-Coverage aus einem gegebenen Quellcode erstellt.
-
Fügt
FileUtils#cp_lrhinzu. [Feature #4189]
Leistungsverbesserungen
-
Beschleunigt
Proc#call, da wir uns nicht mehr um$SAFEkümmern müssen. [Feature #14318]Mit dem Benchmark
lc_fizzbuzz, derProc#callviele Male verwendet, können wir x1.4 Verbesserungen messen. [Bug #10212]. -
Beschleunigt
block.call, wobeiblockein Blockparameter ist. [Feature #14330]Ruby 2.5 verbessert die Leistung von Blockübergaben. [Feature #14045]
Zusätzlich verbessert Ruby 2.6 die Leistung des Aufrufs übergebener Blöcke. Mit einem Mikrobenchmark können wir eine Verbesserung um das 2,6-fache beobachten.
-
Transient Heap (theap) wird eingeführt. [Bug #14858] [Feature #14989]
Theap ist ein verwalteter Heap für kurzlebige Speicherobjekte, auf die von bestimmten Klassen (Array, Hash, Object und Struct) verwiesen wird. Zum Beispiel ist die Erstellung eines kleinen und kurzlebigen Hash-Objekts 2-mal schneller. Mit dem rdoc-Benchmark haben wir eine Leistungsverbesserung von 6-7% beobachtet.
Weitere bemerkenswerte Änderungen seit 2.5
-
$SAFEist jetzt ein prozessglobaler Zustand und kann wieder auf0gesetzt werden. [Feature #14250] -
Die Übergabe von
safe_levelanERB.newist veraltet. Die Argumentetrim_modeundeoutvarwerden zu Schlüsselwortargumenten. [Feature #14256] -
Die unterstützte Unicode-Version wird auf 11 aktualisiert. Es ist geplant, in zukünftigen TEENY-Releases von Ruby 2.6 auf 12 und 12.1 zu aktualisieren.
-
RubyGems 3.0.0.beta3 zusammengeführt. Die Optionen
--riund--rdocwurden entfernt. Bitte verwenden Sie stattdessen die Optionen--documentund--no-document. -
Bundler Bundler als Standardgem zusammengeführt.
Weitere Informationen finden Sie in NEWS oder in den Commit-Logs.
Mit diesen Änderungen wurden 6411 Dateien geändert, 228864 Einfügungen(+), 97600 Löschungen(-) seit Ruby 2.5.0!
Viel Spaß beim Programmieren mit Ruby 2.6.0-rc2!
Herunterladen
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.gz
SIZE: 16723556 bytes SHA1: a4d7f8c8c3584a60fe1a57d03d80162361fe3c78 SHA256: 9c0245e96379246040f1fd0978f8e447e7f47cdccbdaffdb83302a995276b62b SHA512: 789f608f93db6e12835911f3105d9abe2fabb67cd22dc3bafdff38716ac56974925738e7f7788ebef5bdf67b6fd91f84a4ee78a3e5d072cfc8ee0972de737b08 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.zip
SIZE: 20643747 bytes SHA1: c1a2898949d929dd952880f1c1c2bac2ef2609b4 SHA256: e8a446cf1f2ffc14483604de0a5e12c2578dd2f672ae87798ca2bbb9b7b73899 SHA512: 2d06feae13f485f5da59574672b14d03881ed532d652648f94e2435f5d81df623b5ef532b8ba8e0b9bc4ee6baf7c0328a5610eab753a9020a0fea2673254c76c -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.bz2
SIZE: 14581998 bytes SHA1: 94bbee97de4955e67effb7f512c58300617a3a09 SHA256: b3d03e471e3136f43bb948013d4f4974abb63d478e8ff7ec2741b22750a3ec50 SHA512: 9bfbe83fd3699b71bae2350801d8c967eb128e79b62a9d36fc0f011b83c53cab28a280939f4cc9f0a28f9bf02dce8eea30866ca4d06480dc44289400abf580ba -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.xz
SIZE: 11908088 bytes SHA1: 13a7f06d832dc28989e3e4321490a6ba528ed023 SHA256: d620b3d87b3190867304067f3ce77f5305f7ec1b2e73b09c17710c97c028986d SHA512: a3dc43c0bc70dfdb9ff0d18b5b9797bbf332524f5d3bbb7940cf4e32286ca715808acfd11ebf3cdbe358a2466b7c6b5be3a7a784af7eb95c071fe1f8b4ab1261
Aktuelle Nachrichten
Ruby 4.0.0 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 4.0.0 bekannt zu geben. Ruby 4.0 führt „Ruby Box“ und „ZJIT“ ein und bringt viele Verbesserungen mit sich.
Veröffentlicht von naruse am 25. Dez 2025
Ein neuer Look für Rubys Dokumentation
Nach dem Redesign von ruby-lang.org gibt es weitere Neuigkeiten zur Feier des 30-jährigen Jubiläums von Ruby: docs.ruby-lang.org hat ein komplett neues Erscheinungsbild mit Aliki – dem neuen Standard-Theme von RDoc.
Veröffentlicht von Stan Lo am 23. Dez 2025
Neues Website-Erscheinungsbild
Wir freuen uns, ein umfassendes Redesign unserer Website bekannt zu geben. Das Design für dieses Update wurde von Taeko Akatsuka erstellt.
Veröffentlicht von Hiroshi SHIBATA am 22. Dez 2025
Ruby 4.0.0 preview3 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 4.0.0-preview3 bekannt zu geben. Ruby 4.0 führt Ruby::Box und „ZJIT“ ein und bringt viele Verbesserungen mit sich.
Veröffentlicht von naruse am 18. Dez 2025