Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen: http://dx.doi.org/10.18419/opus-10307
Autor(en): Jäger, Roland
Titel: Typesafe parallel serialization with SKilL/Rust
Sonstige Titel: Typsichere parallele Serialisierung mit SKilL/Rust
Erscheinungsdatum: 2018
Dokumentart: Abschlussarbeit (Master)
Seiten: 59
URI: http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-103244
http://elib.uni-stuttgart.de/handle/11682/10324
http://dx.doi.org/10.18419/opus-10307
Zusammenfassung: The goal of this thesis is to provide a generator for SKilL that targets Rust. Since Rusts type system enforces strict rules to offer guaranteed thread safety the generated binding has to accommodate these rules, which makes it difficult to create a graph with cycles. A lot of the effort goes into the research and creation of solutions for the missing inheritance between structs and the resulting missing casting functionality in the language. In conjunction an option has to be found that allows Rusts rules to be enforced at runtime that works with the enhanced inheritance support. Peculiarly, the resulting implementation is not able to benefit from Rusts rules in regard to safe parallelism, as the runtime enforcement of these rules inhibits parallelism. To validate that the implementation works as expected pre-existing functional tests are used. Additionally performance tests are executed to see how Rust bindings fare against a reference implementation in C++.
Das Ziel dieser Arbeit ist es einen Generator für SKilL zu erstellen, welcher Rust Code erzeugt. Da Rust strenge Regeln anwendet, um Threadsicherheit garantieren zu können, muss der generierte Code diesen folgen, was Probleme bei der Darstellung von Graphen mit Zyklen bereitet. Viel Zeit wird für die Findung von Alternativen und Implementierungen für Vererbung zwischen structs und deren fehlenden Konvertierungen aufgewendet. Dazu passend muss auch eine Möglichkeit gefunden werden, die Rusts Regeln zur Laufzeit anwendet und die erweiterte Vererbungsfunktionalität unterstützt. Auffallend ist, dass die Implementierung die Threadsicherheitsgarantien von Rusts Regeln nicht nutzen kann, weil die Einhaltung dieser, zur Laufzeit, die Parallelisierbarkeit einschränkten. Um zu validieren, dass die Implementierung wie erwartet funktioniert, werden bereits existierende funktionale Tests verwendet. Außerdem wird die Durchsatzrate, des generierten Rust Codes, mit der des generiertem C++ Codes verglichen.
Enthalten in den Sammlungen:05 Fakultät Informatik, Elektrotechnik und Informationstechnik

Dateien zu dieser Ressource:
Datei Beschreibung GrößeFormat 
thesis.pdf1,19 MBAdobe PDFÖffnen/Anzeigen


Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.