Den Ruby-Parser neu schreiben
(railsatscale.com)- Shopify hat einen neuen Ruby-Parser namens YARP entwickelt
- Auf dem aktuellen Stand kann er den Hauptcode von Shopify/GitHub sowie die 100 beliebtesten Gems auf RubyGems identisch parsen
- Der Merge in CRuby wurde genehmigt
- Die Probleme des bestehenden CRuby-Parsers lassen sich grob in vier Kategorien einteilen
- Wartbarkeit: keine Dokumentation vorhanden, komplex und daher schwer zu ändern
- Fehlertoleranz: Es gibt zwar etwas Toleranz, aber schon bei kleinen Fehlern wird kein Syntaxbaum erzeugt
- Portabilität: Der Parser ist eng an das Innere von CRuby gekoppelt und kann deshalb in anderen Tools nicht verwendet werden
- Performance: Die Einführung fortgeschrittener Optimierungstechniken ist schwierig
- Entwicklung von YARP
- In C geschrieben
- Ein von Hand geschriebener Recursive Descent Parser (der aktuelle Trend bei wichtigen Programmiersprachen; auch gcc/golang sind von Bison umgestiegen)
- Man wollte zunächst denselben Syntaxbaum wie CRuby beibehalten, entschied sich dann aber für einen eigenen Baum
- Kann Shopifys 50.000 Ruby-Dateien in nur 4,49 Sekunden parsen (Peak-Speicher 10,94 MB)
- Ausblick
- YARP soll in verschiedene Ruby-Runtimes integriert werden
- Geschwindigkeit, Speicherverbrauch und Genauigkeit sollen weiter verbessert werden
- Matz und das CRuby-Team haben zugestimmt, es in Ruby 3.3 (geplante Veröffentlichung im Dezember dieses Jahres) als Bibliothek aufzunehmen
- YARP: Yet Another Ruby Parser
Noch keine Kommentare.