Rust-Entwickler bei Google sind doppelt so produktiv wie C++-Teams

Der Code macht in der Produktion eine gute Figur, sagt Bergstrom von Chocolate Factory

In Anlehnung an die Rust-Evangelisation der letzten zwei Jahre und die C/C++-Langeweile berichtet Google, dass Rust in der Produktion so glänzt, dass seine Entwickler mit der Sprache doppelt so produktiv sind wie mit C++.

Lars Bergstrom, Director of Engineering bei Google, der an Android Platform Tools & Libraries arbeitet, sprach diese Woche auf der Rust Nation UK-Konferenz in London und beschrieb die Erfahrungen des Web-Titanen bei der Migration von in Go oder C++ geschriebenen Projekten in die Programmiersprache Rust.

Bergstrom sagte, dass Dropbox im Jahr 2016 und Figma im Jahr 2018 zwar erste Berichte über das Umschreiben von Code im speichersicheren Rust lieferten – und die Zweifel an der Produktivität und der Sprache nachgelassen haben –, dass jedoch weiterhin Bedenken hinsichtlich ihrer Zuverlässigkeit und Sicherheit bestehen.

„Noch vor sechs Monaten war das ein wirklich schwieriges Gespräch“, sagte er. „Ich würde hingehen und mit Leuten reden und sie würden sagen: ‚Warte, warte, du hast ein ‚unsicheres‘ Schlüsselwort. Das bedeutet, dass wir alle C++ schreiben sollten, bis das Universum durch Hitze stirbt.“

Bergstrom argumentierte jedoch, dass es im gesamten Ökosystem der Softwareentwicklung einen Bewusstseinswandel hinsichtlich der Herausforderungen bei der Verwendung nicht speichersicherer Sprachen gegeben habe. Solche Botschaften kommen jetzt von Regierungsbehörden in den USA und anderen Ländern, die verstehen, welche Rolle Software in kritischen Infrastrukturen spielt.

Der Grund dafür ist, dass die meisten Sicherheitslücken in großen Codebasen auf Sicherheitslücken im Speicher zurückzuführen sind. Und da Rust-Code solche Probleme bei richtiger Implementierung weitgehend, wenn nicht sogar vollständig vermeiden kann, ähnelt die Speichersicherheit mittlerweile eher einem nationalen Sicherheitsproblem.

Bereits im September 2022 argumentierte Mark Russinovich, CTO von Microsoft Azure, dass Softwareprojekte, die möglicherweise in C/C++ gestartet wurden, stattdessen Rust verwenden sollten . Diese Empfehlung geht nun über Greenfield-Projekte hinaus und fordert die Überarbeitung von altem Code, der in nicht speichersicheren Sprachen geschrieben ist.

Anfang des Jahres rief Microsoft Entwickler dazu auf, bei der Portierung seines eigenen C#-Codes nach Rust zu helfen. Und das Prossimo-Projekt der Internet Security Research Group (ISRG) hat aus Gründen der Speichersicherheit zentrale Open-Source-Elemente kritischer Bibliotheken (z. B. NTP, DNS, TLS) in Rust neu geschrieben .

Es gab Widerstand vom C++-Entwickler Bjarne Stroustrup und anderen. Als Reaktion auf ein NSA- Memo vom November 2022 [PDF], in dem die Speichersicherheit gefordert wird, argumentierte Stroustrup [PDF], dass C++ mit geeigneten Werkzeugen die Speichersicherheitsgarantien von Rust „zu einem Bruchteil der Kosten eines Wechsels zu einer Vielzahl neuartiger Sicherheitsfunktionen“ erreichen kann ‘ Sprachen.”

Und als das US-Büro des National Cyber ​​Director im Februar einen Bericht [PDF] über Sicherheitssoftware veröffentlichte, stellten einige derjenigen, die öffentliche Kommentare hinterließen , fest, dass Speichersicherheit eine Teilmenge umfassenderer Softwaresicherheitsherausforderungen sei und nicht als Antwort betrachtet werden dürfe zu allem.

Das Software Engineering Institute der Carnegie Mellon betonte beispielsweise, dass alle Programmiersprachen Kompromisse haben und die Wahl der Programmiersprache davon abhängen sollte, ob sie für den Zweck geeignet ist.

„Die meisten speichersicheren Sprachen priorisieren die Timing-Leistung nicht und sind daher nicht für Anwendungsfälle geeignet, die strenge Leistungs- und Timing-Anforderungen haben“, behauptete die Softwaregruppe .

„Außerdem müssen Entwickler, wie bei jeder Programmiersprache, die korrekten Mechanismen der Sprache erlernen, etwa Syntax, Semantik, Konstrukte, Redewendungen und Werkzeuge. Andernfalls könnte das Ergebnis ein unbeabsichtigter Kompromiss zwischen weniger speicherbezogenen Schwachstellen und mehr Schwachstellen sein.“ oder Mängel anderer Art.“

Zwar geht es bei Softwaresicherheit um mehr als nur um Speichersicherheit, doch der Kostenvorteil, den Stroustrup durch die Beibehaltung der bestehenden C++-Infrastruktur erzielen kann, stößt nun auf Gegenbeispiele von Rust-Anwendern wie Google.

Kein Produktivitätsverlust – ganz im Gegenteil

Bei der Chocolate Factory hat die Umwandlung von Go-Code, der als speichersicher , aber nicht so leistungsfähig gilt, in Rust bemerkenswerte Vorteile gezeigt.

„Als wir Systeme von Go in Rust umgeschrieben haben, haben wir festgestellt, dass für den Aufbau etwa ein Team gleicher Größe und etwa die gleiche Zeit benötigt wird“, sagte Bergstrom. „Das heißt, es gibt keinen Produktivitätsverlust beim Wechsel von Go zu Rust. Und das Interessante ist, dass wir einige Vorteile daraus sehen.“

„Wir sehen also eine verringerte Speichernutzung in den Diensten, die wir von Go verschoben haben … und wir sehen im Laufe der Zeit eine geringere Fehlerrate bei den Diensten, die in Rust neu geschrieben wurden – was die Korrektheit erhöht.“

Bedeutsamer sei laut Bergstrom der Vergleich der Umschreibungen von C++-Code in Rust.

„In jedem Fall haben wir einen Rückgang des Aufwands um mehr als das Doppelte festgestellt, der erforderlich ist, um sowohl die Dienste in Rust zu erstellen als auch die in Rust geschriebenen Dienste zu warten und zu aktualisieren“, sagte er .

„Und das ist eine wirklich große Sache für uns, weil C++-Code sehr teuer ist. Das sind große Teams. Das ist eine Menge Arbeit. Es besteht ein großes Risiko.“

Bergstrom sagte, dass bei Google eine ähnliche Migration im Gange sei, bei der Entwickler von Java auf Kotlin umgestellt würden, und dass die Zeit, die für die Umschulung von Entwicklern in beiden Fällen – Java auf Kotlin und C++ auf Rust – benötigt werde, ähnlich sei. Das heißt, dass etwa ein Drittel der Entwickler nach zwei Monaten das Gefühl haben, in ihrer neuen Sprache genauso produktiv zu sein wie in ihrer alten. Und in etwa vier Monaten sagen dies laut anonymen internen Umfragen die Hälfte der Entwickler.

Laut Bergstrom sagen etwas mehr als die Hälfte seiner Entwickler, dass Rust einfacher zu überprüfen sei.

„Wenn wir untersuchen, warum das so ist“, sagte er, „kommen wir zu der unglaublichsten Frage der Umfrage, die uns alle umgehauen hat, nämlich dem Vertrauen, das die Leute in die Richtigkeit haben.“ des Rust-Codes, den sie betrachten – wie sicher sind Sie also im Vergleich zu Code in anderen Sprachen, dass der Rust-Code Ihres Teams korrekt ist?“

Die Antwort, sagte Bergstrom, war 85 Prozent.

„Das ist eine gewaltige Zahl“, sagte er. „Ich konnte nicht 85 Prozent dieses Raums dazu bringen, zuzustimmen, dass wir M&Ms mögen. 85 Prozent der Leute glauben, dass ihr Rust-Code mit größerer Wahrscheinlichkeit korrekt ist als der andere Code in ihrem System. … Ich habe mehr als durchgemacht.“ Ich habe in meinem Leben nur eine Sprachumfrage durchgeführt und solche Zahlen habe ich noch nie zuvor gesehen.“

Share This Story, Choose Your Platform!

About the author : noclone.de Development

Programmierung seit fast 40 Jahren.

Leave A Comment