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 then zu Kernel#yield_self hinzu. [Feature #14594]

  • else ohne rescue fü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älle

    ary[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_location hinzugefü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 durch eval("[__FILE__, __LINE__]", binding) abgerufen werden, aber wir planen, dieses Verhalten zu ändern, so dass Kernel#eval den Quellcode-Speicherort der Bindung ignoriert [Bug #4352]. Daher sollten Benutzer diese neu eingeführte Methode anstelle von Kernel#eval verwenden.

  • Fügt die Option :exception hinzu, damit Kernel.#system einen Fehler auslöst, anstatt false zurückzugeben. [Feature #14386]

Leistungsverbesserungen

  • Beschleunigt Proc#call, da wir uns nicht mehr um $SAFE kümmern müssen. [Feature #14318]

    Mit dem Benchmark lc_fizzbuzz, der Proc#call sehr oft verwendet, können wir eine Verbesserung um das 1,4-fache messen [Bug #10212].

  • Beschleunigt block.call, wobei block ein 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

  • $SAFE ist ein prozessglobaler Zustand, und wir können ihn wieder auf 0 setzen. [Feature #14250]

  • Die Übergabe von safe_level an ERB.new ist veraltet. Die Argumente trim_mode und eoutvar werden 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

Weitere Neuigkeiten...