Ein neuer JIT-Compiler ZJIT wurde in den Ruby-Code eingebracht.

In den Code der Referenzimplementierung der Programmiersprache Ruby wurde ein neuer JIT-Compiler namens ZJIT integriert, der als die nächste Generation des Ruby JIT positioniert wird. ZJIT wird in die nächste bedeutende Veröffentlichung von Ruby 3.5 aufgenommen, wo es parallel zum JIT-Compiler YJIT als Option verfügbar sein wird. In der Version Ruby 3.6 könnte es YJIT möglicherweise ersetzen. Wie YJIT ist der neue JIT-Compiler in Rust geschrieben. Beide JIT-Compiler wurden von einem Entwicklerteam der Firmen Shopify im Rahmen einer Initiative zur Leistungssteigerung von Ruby-Anwendungen, die das Rails-Framework nutzen und viele Methoden aufrufen, entwickelt.

Im Gegensatz zu YJIT übersetzt der neue JIT-Compiler nicht den Bytecode der YARV-virtuellen Maschine in eine niederlevelige Zwischendarstellung (nahezu direkt in Maschinencode), sondern transformiert den Bytecode in eine hochlevelige Zwischendarstellung SSA (Static Single Assignment), die es ermöglicht, zusätzliche Optimierungsphasen durchzuführen und Optimierungen auf Basis größerer Codeblöcke vorzunehmen, anstatt sich nur auf die aktuellen Operationen zu stützen.

ZJIT kompiliert die gesamte Methode auf einmal, während YJIT nur die Kompilierung grundlegender Blöcke handhaben konnte. Für die Typprofilierung implementiert ZJIT eine klassische JIT-Architektur, die die historischen Daten über Typen nutzt, die der Interpreter gesammelt hat, anstatt die in YJIT angewandte Technik der Versionierung grundlegender Blöcke (LBBV — Lazy Basic Block Versioning).

Die Verwendung eines hochgradigen Zwischenformats wird die Skalierungsprobleme lösen, die bei YJIT aufgetreten sind, eine Grundlage für die zukünftige Implementierung einer mehrstufigen JIT-Kompilierung schaffen, erweiterte Optimierungen ermöglichen (z. B. eine aggressivere Inlining-Entfaltung) und die Anpassung von JIT für verschiedene Plattformen vereinfachen. Die Rückkehr zu einem traditionellen Modell der Typprofilierung befreit den Code von Komplikationen und ermöglicht es, neue Mitwirkende einzubeziehen (die Verwendung von LBBV in YJIT führte dazu, dass das Projekt für andere Beteiligte unverständlich wurde und nur von Mitarbeitern von Shopify weiterentwickelt wurde).

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster