iX 11/2022
S. 130
Praxis
Softwareentwicklung

Python-Module mit Rust erstellen

Python fehlt es bei rechenintensiven Aufgaben an Performance. Rust hingegen liefert schnellen, kompilierten und sicheren Code. Die besten Eigenschaften aus beiden Welten zu kombinieren, ist jedoch eine Herausforderung.

Von Gerhard Völkl

Wer in Python aufwendige Berechnungen durchführt, für die es keine fertigen Module gibt, kann den betroffenen Algorithmus in ein mit C++ oder C geschriebenes Modul auslagern und kompilieren. Rechenmodule wie NumPy gehen diesen Weg. Man muss sich dabei jedoch um vieles selbst kümmern, was sonst Python erledigt, beispielsweise Referenzzähler und Speicherbelegung. Eine Alternative ist die Rust-Bibliothek PyO3. Sie erstellt eine komfortable Verbindung zu Rust, der speichersicheren Systemsprache, die mittlerweile in einigen Projekten C und C++ ablöst. Der Artikel gibt Python-Entwicklerinnen und -Entwicklern ohne Rust-Vorkenntnisse die Möglichkeit, die Kombination aus Python, Rust und PyO3 kennenzulernen.

Speicher automatisch verwalten ohne Garbage Collection

Rust ist eine systemnahe Programmiersprache, die von C++, Erlang, Haskell und anderen beeinflusst ist. An den vielen geschweiften Klammern ist die Abstammung von C++ und die Verwandtschaft zu Java und C# erkennbar. Rust verwendet eine eigenständige, nahezu automatische Speicherverwaltung ohne Garbage Collection. Es gibt feste Regeln, wer was im Speicher besitzt. Ist ein Speicher ohne Besitzer, gibt Rust den Speicher frei. Dadurch ist ein sicherer Speicherzugriff garantiert.

Kommentieren