Session
Programm EH19

Treiber in High-Level Programmiersprachen

Treiber werden üblicherweise in C geschrieben. Wir zeigen wie man Netzwerktreiber in Rust, Go, OCaml, Haskell, C#, Python und Swift schreibt.

Treiber in Betriebssystemen werden üblicherweise in der selben Sprache wie das System geschrieben -- also in C oder eingeschränkten Varianten von C++. In der Welt der Netzwerktreiber gibt es einen Trend dazu den Treiber aus dem Kernel in normale Prozesse zu verlagern. Dadurch fällt die Einschränkung in der Sprachwahl weg, aber gängige Treiber wie DPDK werden trotzdem noch in C geschrieben.

Wir haben Netzwerktreiber für Intel 10 Gbit/s Netzwerkkarten in Rust, Go, OCaml, Haskell, C#, Python und Swift geschrieben. Alle Implementierungen sind komplett im Userspace laufende PCIe Treiber die in jeweils ca. 1.000 Zeilen Code demonstrieren dass es möglich ist andere Sprachen als C zu benutzen.

Der Talk geht auf die Vor- und Nachteile der einzelnen Sprachen ein, insbesondere welche Sicherheitsfeatures von Sprachen für bessere Treiber benutzt werden können und wie viel Performance diese Sicherheitsfeatures kosten. Zusätzlich dazu haben wir noch Unterstützung für die IOMMU implementiert und evaluieren ob sich die Nutzung dieser Hardware lohnt.

Weitere Informationen zu den verschiedenen Projekten finden sich auf unserer GitHub-Seite: https://github.com/ixy-languages/ixy-languages/

Dieser Talk ist ein Update zu [unserem Talk auf dem 35C3](https://media.ccc.de/v/35c3-9670-safe_and_secure_drivers_in_high-level_languages), seitdem hat sich viel getan:

* Performance- und Latenzmessungen für alle Sprachen * Warum ist Rust langsamer als C? Ergebnisse basierend auf Performancecountern der CPUs * Meta-Analyse der Implementierungen: Welche Sprache bietet welche Sicherheitsfeatures? Wie groß/komplex sind die verschiedenen Implementierungen?

Additional information

Type Talk
Language German

More sessions

4/19/19
EI 7
Der Eröffnungstalk!
4/19/19
EI 7
In diesem Talk wird die KI-basierte Manipulation von Videos gezeigt. Als Beispiel werden Personen aus der Echtzeitübertragung einer IP-Kamera entfernt, um unbemerkt Objekte zu platzieren. Um dies zu ermöglichen wird zusätzlich ein Angriffsvektor auf IP-Kameras gezeigt.
4/19/19
Bastian W. / @dasrecht
EI 9
Wie sich die tägliche Arbeit verändert, wenn man ausschliesslich an einem OpenSource Projekt arbeitet.
4/19/19
EI 7
Für eine sichere und funktionale Datenspeicherung in der Cloud benötigen wir neue Technologien, ein Ansatz ist Searchable Encryption (SE). Nach einer kurzen Einführung zum aktuellen Stand der Verfahren werden wir Searchitekt, unser Developer Framework für SE vorstellen.
4/19/19
Paul Fuxjäger
EI 9
Yes, we want to talk about ActivityPub - because it's what drives many popular fediverse services (e.g. mastodon). We will cover history and basic structure of the spec. And then discuss whether or not this a case of XKCD 927 and if Moxie Marlinspike's blogpost applies.
4/19/19
Habrok
EI 7
In diesem Talk werden wir uns eine richtige Untote unter den Programmiersprachen etwas genauer anschauen. Unter Anderem stelle ich Details vor, die heute furchterregend sind, zu ihrer Zeit aber wie eine gute Idee aussahen oder technisch notwendig waren.
4/19/19
EI 7
Vor zwei Jahren stand auf dem Easterhegg-Fahrplan ein Treffen zur Reanimation der Datenschleuder. Seitdem arbeitet ein Team daran, dass es wieder eine Datenschleuder gibt. Darüber, warum und wie wir das machen und wie ihr das auch machen könnt, wollen wir reden.