Ruby 2.6.0-preview2 veröffentlicht
Veröffentlicht von naruse am 31. Mai 2018
Wir freuen uns, die Veröffentlichung von Ruby 2.6.0-preview2 bekannt zu geben.
Ruby 2.6.0-preview2 ist die zweite Vorschau für Ruby 2.6.0. Dieses Preview2 wird früher als üblich veröffentlicht, da es eine wichtige neue Funktion, JIT, enthält.
JIT
Ruby 2.6 führt eine erste Implementierung eines JIT-Compilers (Just-in-time) ein.
Der JIT-Compiler zielt darauf ab, die Leistung jeder Ruby-Programmausführung zu verbessern. Im Gegensatz zu gewöhnlichen JIT-Compilern für andere Sprachen führt der JIT-Compiler von Ruby die JIT-Kompilierung auf einzigartige Weise durch, indem er C-Code auf eine Festplatte schreibt und einen gängigen C-Compiler-Prozess startet, um nativen Code zu generieren. Siehe auch: MJIT-Organisation von Vladimir Makarov.
Verwendung: Geben Sie einfach --jit in der Befehlszeile oder die Umgebungsvariable $RUBYOPT an. Die Angabe von --jit-verbose=1 ermöglicht die Ausgabe grundlegender Informationen über die laufende JIT-Kompilierung. Weitere Optionen finden Sie in ruby --help.
Der Hauptzweck dieser JIT-Veröffentlichung ist es, eine Möglichkeit zu bieten, zu überprüfen, ob es für Ihre Plattform funktioniert und um Sicherheitsrisiken vor der Veröffentlichung von 2.6 zu finden. Derzeit wird der JIT-Compiler nur unterstützt, wenn Ruby mit gcc oder clang kompiliert wurde und der Compiler zur Laufzeit verfügbar ist. Andernfalls können Sie ihn vorerst nicht verwenden.
Mit 2.6.0-preview2 bereiten wir nur die Infrastruktur für JIT vor und es sind nur sehr wenige Optimierungen implementiert. Sie können mit dieser Veröffentlichung einige potenzielle Verbesserungen in Micro-Benchmarks messen, aber sie ist NICHT bereit für die Leistungsmessung des Ruby-JIT-Compilers, insbesondere für größere Programme wie Rails-Anwendungen.
Wir werden die Methoden-Inline-Funktion im JIT-Compiler implementieren, was voraussichtlich die Leistung von Ruby um eine Größenordnung steigern wird. Außerdem planen wir, die unterstützten Plattformen zu erweitern, und der nächste Plan ist die Unterstützung von Visual Studio.
Bleiben Sie dran für das neue Zeitalter der Ruby-Performance.
RubyVM::AST [Experimentell]
Ruby 2.6 führt das Modul RubyVM::AST ein.
Dieses Modul hat die Methode parse, die einen gegebenen Ruby-Code als String parst und AST (Abstract Syntax Tree)-Knoten zurückgibt, und die Methode parse_file, die eine gegebene Ruby-Code-Datei parst und AST-Knoten zurückgibt.
Die Klasse RubyVM::AST::Node wird ebenfalls eingeführt, von der aus Sie Standortinformationen und Kindknoten erhalten können. Dieses Feature ist experimentell. Die Kompatibilität der AST-Knotenstruktur ist nicht garantiert.
Neue Funktionen
-
Fügt einen neuen Alias
thenzuKernel#yield_selfhinzu. [Feature #14594] -
elseohnerescueführt nun zu einem Syntaxfehler. [EXPERIMENTELL] -
Konstante Namen können mit einem nicht-ASCII-Großbuchstaben beginnen. [Feature #13770]
-
Endlose Bereiche [Feature #12912]
Ein endloser Bereich,
(1..), wird eingeführt. Er funktioniert so, als hätte er kein Ende. Dies zeigt typische Anwendungsfälleary[1..] # identical to ary[1..-1] without magical -1 (1..).each {|index| ... } # infinite loop from index 1 ary.zip(1..) {|elem, index| ... } # 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, so dassKernel#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.#systemeinen Fehler auslöst, anstattfalsezurückzugeben. [Feature #14386]
Leistungsverbesserungen
-
Beschleunigt
Proc#call, da wir uns nicht mehr um$SAFEkümmern müssen. [Feature #14318]Mit dem Benchmark
lc_fizzbuzz, derProc#callsehr oft verwendet, können wir eine Verbesserung um das 1,4-fache messen [Bug #10212]. -
Beschleunigt
block.call, wobeiblockein Blockparameter ist. [Feature #14330]Ruby 2.5 verbessert die Leistung beim Übergeben von Blöcken. [Feature #14045] Zusätzlich verbessert Ruby 2.6 die Leistung beim Aufruf übergebener Blöcke. Mit einem Mikrobenchmark können wir eine Verbesserung um das 2,6-fache beobachten.
Weitere bemerkenswerte Änderungen seit 2.5
-
$SAFEist ein prozessglobaler Zustand, und wir können ihn wieder auf0setzen. [Feature #14250] -
Die Übergabe von
safe_levelanERB.newist veraltet. Die Argumentetrim_modeundeoutvarwerden zu Schlüsselwortargumenten. [Feature #14256] -
Merge RubyGems 3.0.0.beta1
Siehe NEWS oder die Commit-Logs für Details.
Mit diesen Änderungen wurden 4699 Dateien geändert, 45744 Einfügungen(+), 30885 Löschungen(-) seit Ruby 2.5.0!
Viel Spaß beim Programmieren mit Ruby 2.6.0-preview2!
Herunterladen
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.gz
SIZE: 16170732 bytes SHA1: 6867b00e81af0b70fcb6f1aa7fc22d89d48a7d12 SHA256: ee15ab35f17c942b1f41bd792f2494f639affff6e03babf44708b72fdbb6de34 SHA512: 95c5a277785dfeb3006503e1b9ccccefdf6ce29669d4576f0191ee6986ba0e3567fbbed18a8d2b1f147d637434e4a3a4fdf47d84995e10ad4a354950e9092690 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.zip
SIZE: 19850776 bytes SHA1: eba80a09b552ce3142fd571ff5867a13736d170e SHA256: 97fc187b90570fce110d22803a319ab04e68700692b2b6b4e9961886f1a931e5 SHA512: d5501819635bda64ac3dc717815652b692302b44a7cdf4c08edfa5cb9ec7f79a70fffc534879b316a4a9584825ed3c0948667beae2d7c313de58583931b981f4 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.bz2
SIZE: 14209461 bytes SHA1: a9b1b4f359601b94b3f5b77115fcbf3790ff69cd SHA256: d8ede03d5ad3abd9d2c81cf0ad17a41d22b747c003cc16fd59befb2aaf48f0b2 SHA512: 3872227e9b1c97c206d19bf1e6ce15a38ee15a26c431b4436605dea67affcf16372358984df76b35e7abaa902c15c16f533ac7af47e3031dea9451bbe459b693 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview2.tar.xz
SIZE: 11525372 bytes SHA1: e795abe1a4f828b3d851f7148b4bf6c9d9a7e7fd SHA256: 00ddfb5e33dee24469dd0b203597f7ecee66522ebb496f620f5815372ea2d3ec SHA512: bef3e90e97d6e58889cd500c591c579b728ca5833022b690182c0bf4d661e437b3a2ca33470dac35fcf693897819b9d7f500c0f71b707e2fcdcb0644028f2c03
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