Vergleich und Implementierung von SmallRuby-Interpretierern mittels Tree Walk und Truffle-Framework

  • Dominik Bauernfeind

    Studienabschlussarbeit: Masterarbeit

    Abstract

    Diese Masterarbeit implementiert zwei unterschiedliche Interpretierer für eine Teilmenge
    der Programmiersprache Ruby namens SmallRuby. Beide Implementierungen umfassen
    den gleichen Sprachumfang. Ziel ist es einen Tree-Walk-Interpretierer mit einer Implementierung unter Verwendung des Truffle-Frameworks und der GraalVM zu vergleichen.
    Ruby wurde aufgrund seiner Dynamik und Spracheigenschaften ausgewählt, während
    die GraalVM und das Truffle-Framework als Plattform für optimierte Interpreter dienen. SmallRuby enthält wesentliche Ruby-Sprachkonstrukte wie Variablen, Klassen und Methoden, Repräsentation von Datentypen mittels Klassen und Block-Paramenter. Das
    Parser-Generator-Werkzeug ANTLR wird für die Implementierung eines Lexer und Parser verwendet. Mit dem Visitor Entwurfsmuster wird der Syntaxbaum in einen abstrakten Syntaxbaum (AST) für SmallRuby transformiert. Eine weitere Transformation nachdem selben Prinzip findet vom SmallRuby-AST in einen Truffle-AST statt. Der Tree-Walk-Interpretierer bietet eine einfache und leicht erweiterbare Basis, während der Truffle-Interpretierer durch Just-in-Time-Kompilierung und andere GraalVMOptimierungstechniken eine höhere Ausführungsgeschwindigkeit erreicht.
    Experimente mit Programmen wie dem N-Damen-Problem und Conways Game of Life zeigen, dass der Truffle Interpretierer deutlich schneller in der Ausführung ist. Ein Vergleich der Code-Basis beider Interpretierer verdeutlicht, dass die Verwendung des Truffle-Frameworks mehr Quelltext und komplexeren Quelltext benötigt. Die Arbeit
    zeigt, dass das Truffle-Framework und die e GraalVM erhebliche Leistungsvorteile bieten,
    während der Tree-Walk-Interpretierer gut für die schnelle Entwicklung und das Testen
    neuer Sprachfunktionen geeignet ist.
    Abschließend bietet die Arbeit einen Ausblick auf mögliche Erweiterungen von SmallRuby sowie auf die Möglichkeit, das Gelernte für die Weiterentwicklung der offiziellen Implementierung von Ruby mit dem Truffle-Framework einzusetzen.
    Datum der Bewilligung2024
    OriginalspracheDeutsch (Österreich)
    Betreuer/-inHeinz Dobler (Betreuer*in)

    Studiengang

    • Software Engineering

    Zitieren

    '