Ruby 2.6.0-preview3 veröffentlicht
Veröffentlicht von naruse am 6. Nov 2018
Wir freuen uns, die Veröffentlichung von Ruby 2.6.0-preview3 bekannt zu geben.
Ruby 2.6.0-preview3 ist die dritte Vorschauversion auf dem Weg zu Ruby 2.6.0. Diese Vorschau3 wird veröffentlicht, um neue Funktionen vor dem kommenden Release Candidate zu testen.
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-Version ist es, die Möglichkeit zu bieten, zu prüfen, ob sie für Ihre Plattform funktioniert, und Sicherheitsrisiken vor der Veröffentlichung von 2.6 aufzudecken. Der JIT-Compiler wird unterstützt, wenn Ruby mit GCC, Clang oder Microsoft VC++ kompiliert wird, was zur Laufzeit verfügbar sein muss. Andernfalls können Sie ihn derzeit nicht verwenden.
Mit Ruby 2.6.0 preview3 haben wir eine um 1,7x schnellere Leistung als Ruby 2.5 bei einer CPU-intensiven, nicht-trivialen Benchmark-Arbeitslast namens Optcarrot erzielt: https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208. Wir werden die Leistung auch bei speicherintensiven Arbeitslasten wie Rails-Anwendungen verbessern.
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 verfügt über die Methode parse, die einen gegebenen Ruby-Code als Zeichenkette parst und AST-Knoten (Abstract Syntax Tree) zurückgibt, sowie 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. Sie können Standortinformationen und Kindknoten von Node-Objekten erhalten. Dieses Feature ist experimentell. Die Kompatibilität der Struktur von AST-Knoten 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. -
Option
:exceptionhinzugefügt, 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.
-
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 2x schneller. Mit dem rdoc-Benchmark beobachteten wir eine Leistungssteigerung von 6-7 %.
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] -
RubyGems 3.0.0.beta2 wurde zusammengeführt. Die Optionen
--riund--rdocwurden entfernt. Bitte verwenden Sie stattdessen die Optionen--documentund--no-document. -
Bundler als Standardgem verschmolzen.
Weitere Details finden Sie in NEWS oder in den Commit-Logs.
Mit diesen Änderungen wurden 6474 Dateien geändert, 171888 Einfügungen (+) und 46617 Löschungen (-) seit Ruby 2.5.0!
Viel Spaß beim Programmieren mit Ruby 2.6.0-preview3!
Herunterladen
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.gz
SIZE: 17071670 bytes SHA1: 67836fda11fa91e0b988a6cc07989fbceda025b4 SHA256: 60243e3bd9661e37675009ab66ba63beacf5dec748885b9b93916909f965f27a SHA512: 877278cd6e9b947f5bb6ed78136efb232dcc9c5c218b7236576171e7c3cd7f6b7d10d07d8402014a14aba1fcd1913a4370f0725c561ead41d8a3fe92029f7f76 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.zip
SIZE: 21537655 bytes SHA1: 45f3c90dfffe03b746f21f24152666e361cbb41a SHA256: 9152af9e700349dcfa2eec196dd91587d42d70a6837fa2c415ebba1167587be1 SHA512: 335de36cf56706326f4acc4bbd35be01e0ac5fff30d0a69b2e1630ba4c78f0e711822d1623d0099a517c824b154917d2f60be192dfb143a422cf1d17b38e1183 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.bz2
SIZE: 14973451 bytes SHA1: 5f2df5d8c5a3888ccb915d36a3532ba32cda8791 SHA256: 1f09a2ac1ab26721923cbf4b9302a66d36bb302dc45e72112b41d6fccc5b5931 SHA512: d1693625723796e8902f3e4c4fae444f2912af9173489f7cf18c99db2a217afc971b082fce7089e39f8edd54d762d2b4e72843c8306ed29b05ccb15ac03dbb5b -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview3.tar.xz
SIZE: 12291692 bytes SHA1: 7f8216247745215e9645568e7a02140f9a029b31 SHA256: 9856d9e0e32df9e5cdf01928eec363d037f1a76dab2abbf828170647beaf64fe SHA512: b4d3b17ecf96272c43cd7518c0b54dee63fc1150ad143e1d9c9d708506fe78676c80eb96cc47b8d46d1128bd483a53f16c944963a03d1f99f00131b74714df7b
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