Tiefergehende Informationen zu Rust finden sich hier.
Rust ist eine Programmiersprache, deren Entwicklung 2006 von Graydon Hoare begonnen und zwischen 2009 und 2020 durch seinen damaligen Arbeitgeber Mozilla Corporation maßgeblich gefördert und bestimmt wurde. Nachdem 2 Ansätze in C++ gescheitert waren, erhoffte sich Mozilla, mit Rust erstmals eine sichere und parallelisierte Webbrowser-Engine entwickeln zu können.
Mittlerweile sind mehrere Firefox-Komponenten durch Rust-Code ersetzt worden. Viele andere Unternehmen (siehe unten), sowie Entwickler von Projekten wie
haben Software teilweise oder vollständig mit Rust-Code ersetzt bzw. entwickeln neuen Code in Rust.
Seit 2021 wird Rust durch die Rust Foundation gefördert, welcher u.a. AWS, Google, Huawei, Meta, Microsoft, Mozilla und OpenAI angehören. Einige Rust- und Tokio-Entwickler sind inzwischen Angestellte dieser Firmen.
Bereits in der ersten Präsentation zu Rust im Jahr 2010 wurde die Absicht vorgestellt, ausschließlich auf Erkenntnisse und Erfahrungen anderer Programmiersprachen zurückzugreifen. Auch heute ist wohl nur das Zusammentreffen bestimmter Aspekte an Rust besonders.
Rust wurde gleichzeitig mit Servo entwickelt. Servo war, bis zu der firmenweiten Reorganisation im August 2020, das in Rust geschriebene Mozilla-Forschungsprojekt einer parallelisierten Webbrowser-Engine. Komponenten, die sich in Servo bewährt hatten, wurden in Firefox integriert. Erfahrungen aus der Programmierung von Servo beeinflussten wiederum das Design von Rust. So unterscheidet sich das Rust aus 2010 deutlich von Rust 1.0 aus 2015. Das frühe Rust hatte neben deutlichen syntaktischen Unterschieden auch Green Threads und einen Garbage Collector. Letzterer wurde durch das Ownership-Modell und den Borrow Checker hinfällig, als man erkannte, dass sowohl Thread- als auch Speichersicherheit mit den gleichen Mechanismen erreicht werden können.
Rust ist nicht trivial zu erlernen und zu benutzen. Das liegt vor allem an den Randbedingungen, die sich Rust verpflichtet hat, zu erfüllen. Diese führten z.B. auch dazu, dass die Entscheidungsfindung zum await-Syntax schwieriger war, als bei anderen Sprachen.
Rust wichtigstes Angebot ist die Verhinderung ganzer Klassen von Laufzeitfehlern bereits zur Kompilierzeit. Speicher- und Thread-Sicherheit ohne Garbage Collection sind dabei nur ein Aspekt. Dass Sprache und Ökosystem insgesamt eine hohe langfristige Produktivität ermöglichen können, wird oft übersehen. Aber: nicht nur das Erlernen von Rust ist einmalig eine Investition, sondern auch jedes mal, neuen oder veränderten Code kompilierbar zu machen. Ob diese Investition profitabel ist, lässt sich nur im Einzelfall entscheiden.
Im Folgenden eine Aufstellung von Rusts Chancen und Risiken. Da in Rust die Erfahrungen anderer Programmiersprachen eingeflossen sind, gibt es mit diesen unvermeidlich Ähnlichkeiten – besonders mit funktionalen Sprachen wie ML oder Haskell.
Ganze Klassen von Fehlern werden bereits zur Kompilierzeit verhindert:
Freiheit von Exceptions zur Laufzeit, solange Pfade zu panic!() vermieden werden:
Result, die Aufgrund von #[must_use] nicht vergessen werden kann.Freiheit von Null-Pointer-Dereferenzierung durch Verwendung von Option anstatt Nullable Types.
Annehmlichkeiten:
Reduzierung der Notwendigkeit von Boilerplate Code durch:
#[derive]todo!() zum polymorphen Prototypisieren.Integrierbarkeit: Rust-Code lässt sich über C-APIs mit Code, der in anderen Sprachen geschrieben ist, verbinden.
Die bewusst minimale Standardbibliothek fördert unabhängige Libraries, die sich über Cargo leicht nutzen lassen und dabei:
Portabilität:
Rust-Code ist grundsätzlich portabel. Ausnahmen:
Eine Runtime-Umgebung wird nicht benötigt. Dies macht es auch praktikabel, Kommandozeilen-Tools wie ripgrep zu verbreiten und zu nutzen:
Die frei verfügbare Dokumentation ist teilweise exzellent:
Die Community ist bemüht, hilfsbereit und konstruktiv zu sein. Einige Anlaufstellen für Supportanfragen:
Die minimale Standardbibliothek hat zur Folge:
rustc ist nur so portable wie LLVM. Siehe aber auch mrustc, rustc_codegen_clr und das GCC Front-End für Rust.3DSignals, Ahrefs, Airtable, Aleph Alpha, Alibaba Group, Anduril Industries, Apple Inc., Asquera, Astropad Company, Avast, AWS, Barco, bearer, Bolt Labs, Brave Software Inc., Bundesdruckerei GmbH, Buoyant, Calendly, Canonical, Centogene, ChartMogul, Chef Software, Inc., citybldr, Cloudflare, Commure, Cosmian, Coursera, CrowdStrike, Crown Software GmbH, CSIS, Cultivate, Cyberus Technology, Datalust, deepc, Deepgram, Deliveroo, DEMV Systems, Discord Inc., Ditto, Dropbox Inc., Einride, Elektron.se, ELOKON, EnBW Energie Baden-Württemberg, Enhance, ESR Labs, Etsy Inc., Everlane, Faraday.ai, Fastly, Figma, Inc., ForAllSecure, FullStory, GitHub Inc., Google Inc., Huawei, Hugging Face, Inc., IBM, ifm software gmbh, Impero, Imperva, Indeed, InfluxData, inscripta, Intel, JetBrains, JoS QUANTUM, Joyent, jusst technologies, KENBUN IT AG, KISIO Digital, Komodo Platform, launchbadge, LINE Plus Corporation, LogDNA, Lumeo, Materialize, Inc., Meta, Microsoft, MindBuffer, Moogsoft Inc., move innovation, Mozilla, Narrative, Nationwide Building Society, Nike, Noibu, Nymi, NZXT, Ockam, OneSignal, OpenAI, Oxide Computer, Paessler AG, Paige, PingCAP, Postmates, PQShield Ltd., Proton AG, Qovery, Random Studio, Red Canary, Inc., Red Hat, Reddit, Redjack, Rhebo GmbH, SAP, Screenleap, Senacor, Sentry, Shopify, ShowSeeker, Signal Foundation, sisu, Slight, Slowtec, Snapview, Snips, Sonos, Swift Navigation, System76, Tag1 Consulting, Temporal, Tempus Ex, The Techno Creatives, The Walt Disney Company, Threema GmbH, Ticketmaster, Tilde Inc., Tobii AB, tonari, Toyota, TrueLayer, Tweede golf, Twitter Inc., ubix GmbH, Valve, Viasat, Vinted, VMRay, VMware, Volvo Car Corporation, Wallaroo, wearTell, xAI, XAIN, Y.at, YesLogic, Zenly, Zimpler