Auf dem kürzlich abgehaltenen Gipfel für Open-Source-Technologien (Open Source Technology Summit - OSTS) , leitender Ingenieur bei Intel, erklärte, dass sein Unternehmen daran interessiert ist, dass Rust in naher Zukunft "Parität" mit der weiterhin dominierenden Sprache C im Bereich der System- und Low-Level-Entwicklung erreicht. mit dem Titel "Intel und Rust: Die Zukunft der Systemprogrammierung" sprach er auch über die Geschichte der Systemprogrammierung, wie C zur Standardprogrammiersprache wurde, welche Vorteile Rust gegenüber C bietet und wie es in naher Zukunft C vollständig in diesem Bereich der Programmierung ersetzen kann.

Systemprogrammierung ist die Entwicklung und Verwaltung von Software, die als Plattform für die Erstellung von Anwendungen dient und die Interaktion der letztgenannten mit dem Prozessor, dem Arbeitsspeicher, den Eingabe-/Ausgabegeräten und der Netzwerkausrüstung ermöglicht. Systemsoftware schafft eine spezielle Abstraktion in Form von Schnittstellen, die dabei helfen, Anwendungssoftware zu erstellen, ohne in die Details einzutauchen, wie die Hardware selbst funktioniert.
Triplett selbst definiert Systemprogrammierung als "alles, was keine Anwendung ist". Dazu gehören Dinge wie BIOS, Firmware, Bootloader und Betriebssystemkerne, verschiedene Arten von eingebettetem Low-Level-Code sowie Implementierungen von virtuellen Maschinen. Interessanterweise ist Triplett der Meinung, dass auch ein Webbrowser Systemsoftware ist, da der Browser längst mehr ist als "nur ein Programm" und sich zu einer eigenständigen "Plattform für Websites und Webanwendungen" entwickelt hat.
In der Vergangenheit wurden die meisten Systemprogramme, einschließlich BIOS, Bootloader und Firmware, in Assemblersprache geschrieben. In den 1960er Jahren begannen Experimente zur Bereitstellung von Hardwareunterstützung für Hochsprachen, was zur Entwicklung von Sprachen wie PL/S, BLISS, BCPL und ALGOL 68 führte.
In den 1970er Jahren entwickelte Dennis Ritchie die Programmiersprache C für das Unix-Betriebssystem. Basierend auf der Programmiersprache B, die nicht einmal Typunterstützung hatte, war C mit leistungsstarken, hochgradigen Funktionen ausgestattet, die sich hervorragend für das Schreiben von Betriebssystemen und Treibern eigneten. Mehrere Komponenten von UNIX, einschließlich des Kerns, wurden schließlich in C neu geschrieben. Später wurden auch viele andere Systemprogramme, darunter die Oracle-Datenbank, ein Großteil des Windows-Quellcodes und das Betriebssystem Linux, in C geschrieben.
C erhielt in diesem Bereich eine enorme Unterstützung. Aber was hat die Entwickler wirklich dazu gebracht, zu ihm zu wechseln? Triplett ist der Ansicht, dass ein Entwickler normalerweise motiviert werden muss, von einer Programmiersprache zur anderen zu wechseln, und die neue Sprache muss vor allem neue Funktionen bieten, ohne die alten Möglichkeiten zu verlieren.
Erstens muss die Sprache "ziemlich beeindruckende" neue Funktionen bieten. "Sie kann nicht nur ein bisschen besser sein. Sie muss erheblich besser sein, um die Mühe und die Zeit der Ingenieure zu rechtfertigen, die für den Übergang erforderlich sind“, erklärt er. Im Vergleich zur Assemblersprache hatte C viele Dinge zu bieten. Es unterstützte in gewissem Maße sichere Typisierung, bot bessere Portabilität und Leistung mit hochgradigen Konstruktionen und generierte insgesamt viel leserlicheren Code.
Zweitens muss die Sprache die Unterstützung für alte Möglichkeiten gewährleisten, was bedeutet, dass die Entwickler beim Übergang zu C sicher sein mussten, dass diese nicht weniger funktional ist als die Assemblersprache. Triplett erläutert: "Eine neue Sprache kann nicht nur besser sein, sie darf auch nicht schlechter sein." Neben der Tatsache, dass C schneller war und alle Datentypen unterstützte, die auch die Assemblersprache verwenden konnte, hatte es auch das, was Triplett als "Notausstieg" bezeichnete, nämlich die Möglichkeit, Code in Assemblersprache einzufügen.

Triplett ist der Meinung, dass C jetzt das wird, was die Assemblersprache vor vielen Jahren war. „C ist das neue Assembler“, erklärt er. Jetzt suchen Entwickler nach einer neuen Hochsprache, die nicht nur die angesammelten Probleme von C löst, die bereits nicht mehr zu beheben sind, sondern auch neue beeindruckende Möglichkeiten bietet. Eine solche Sprache muss überzeugend genug sein, um Entwickler zum Umstieg zu bewegen, muss sicher sein, automatisches Speichermanagement bieten und vieles mehr.
„Jede Sprache, die besser sein will als C, muss viel mehr bieten als nur Schutz vor Pufferüberlauf, wenn sie wirklich eine überzeugende Alternative werden möchte. Entwickler sind an Benutzerfreundlichkeit und Leistung interessiert, daran, Code zu schreiben, der ohne Erklärungen auskommt und mehr Arbeit mit weniger Zeilen erledigt. Auch Sicherheitsprobleme müssen gelöst werden. Benutzerfreundlichkeit und Leistung sind untrennbar miteinander verbunden. Je weniger Code Sie schreiben müssen, um etwas zu erreichen, desto weniger Möglichkeiten haben Sie, Sicherheitsfehler zu machen“, erläutert Triplett.
Vergleich zwischen Rust und C
Bereits 2006 begann Graydon Hoare, ein Mitarbeiter von Mozilla, Rust als persönliches Projekt zu entwickeln. 2009 begann Mozilla, die Entwicklung von Rust für eigene Bedürfnisse zu sponsern und erweiterte zudem das Team für die Weiterentwicklung der Sprache.
Ein Grund, warum Mozilla an einer neuen Sprache interessiert war, ist, dass Firefox aus über 4 Millionen Zeilen C++-Code geschrieben wurde und ziemlich viele kritische Sicherheitsanfälligkeiten hatte. Rust wurde mit dem Fokus auf Sicherheit und Parallelität entwickelt, was es zur idealen Wahl macht, viele Komponenten von Firefox im Rahmen des Quantum-Projekts für eine vollständige Neugestaltung der Browserarchitektur neu zu schreiben. Außerdem verwendet Mozilla Rust, um Servo zu entwickeln, eine HTML-Rendering-Engine, die in Zukunft die aktuelle Rendering-Engine von Firefox ersetzen wird. Viele andere Unternehmen haben ebenfalls begonnen, Rust für ihre Projekte zu nutzen, darunter Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu und viele andere.
Rust löst eines der wichtigsten Probleme der Programmiersprache C. Es bietet eine automatische Speicherverwaltung, sodass Entwickler den Speicher für jedes Objekt in der Anwendung nicht manuell zuweisen und anschließend freigeben müssen. Was Rust von anderen modernen Sprachen unterscheidet, ist, dass es keinen Garbage Collector hat, der ungenutzte Objekte automatisch aus dem Speicher entfernt, sowie keine Laufzeitumgebung, die wie die Java Runtime Environment für Java benötigt wird. Stattdessen verfügt Rust über Konzepte von Besitz, Ausleihe, Referenzen und Lebensdauer. „In Rust gibt es ein Objektaufruf-Deklarationssystem, das es ermöglicht anzugeben, ob es sich um einen Besitz handelt oder ob es sich nur um eine Ausleihe handelt. Wenn Sie ein Objekt lediglich ausleihen, wird der Compiler dies überwachen und garantieren, dass das Original an seinem Platz bleibt, solange Sie darauf verweisen. Außerdem wird Rust dafür sorgen, dass das Objekt sofort nach Beendigung seiner Nutzung aus dem Speicher entfernt wird, indem es den entsprechenden Aufruf zur Kompilierzeit ohne zusätzliche Zeitkosten in den Code einfügt“, erklärt Triplett.
Das Fehlen einer eigenen Laufzeitumgebung kann ebenfalls als positiver Aspekt von Rust betrachtet werden. Triplett ist der Ansicht, dass Sprachen, die damit arbeiten, sich schwer als Werkzeuge für Systemprogrammierung nutzen lassen. Wie er erklärt: „Sie müssen diese Laufzeitumgebung initialisieren, bevor Sie irgendeinen Code aufrufen können, Sie müssen diese Laufzeitumgebung verwenden, um Funktionen aufzurufen, und die Laufzeitumgebung selbst kann im Hintergrund zusätzlichen Code zu unerwarteten Zeitpunkten ausführen.“
Rust strebt außerdem an, sicheres paralleles Programmieren zu gewährleisten. Die gleichen Funktionen, die es speichersicher machen, überwachen Dinge wie, welchem Thread welches Objekt gehört und welche Objekte zwischen Threads übertragen werden können und welche gesperrt werden müssen.
All diese Funktionen machen Rust zu einer überzeugenden Wahl für Entwickler, die es als neues Werkzeug für die Systemprogrammierung wählen möchten. Aus der Sicht paralleler Berechnungen hinkt Rust jedoch noch etwas hinter C hinterher.
Triplet plant eine spezielle Arbeitsgruppe zu gründen, die sich mit der Implementierung notwendiger Funktionen in Rust beschäftigen wird, damit es C im Bereich Systems Programmierung vollständig gleichziehen, übertreffen und ersetzen kann. In , das seiner Präsentation gewidmet ist, teilte er mit, dass die „FFI/C Parity-Gruppe im Prozess der Erstellung ist und noch nicht begonnen hat zu arbeiten“, während er bereit ist, alle Fragen zu beantworten, und in Zukunft auf jeden Fall die nächsten Pläne zur Weiterentwicklung von Rust im Rahmen seiner Initiative für alle Interessierten veröffentlichen wird.
Es kann angenommen werden, dass sich die FFI/C Parity-Gruppe zunächst der Verbesserung der Unterstützung für Mehrkernverarbeitung in Rust, der Implementierung von BFLOAT16, einem Format für die Darstellung von Gleitkommazahlen, das in neuen Intel Xeon Scalable-Prozessoren eingeführt wurde, sowie der Stabilisierung von Inline-Assembly-Code widmen wird.
Quelle: 3dnews.ru
