VISIONAIRY® Expert Talk with Sanket Shah, Spleenlab GmbH

In the VISIONAIRY® Expert Talk, our engineer Sanket Shah talk about how RUST can be used to significantly increase the safety of AI perception software in robotics compared to conventional methods.

1)  What is RUST? How is it different from the usual C++ and Python?

Rust is designed to help programmers avoid mistakes that could cause programs to crash or be unsafe. In contrast, C++ gives more control but also makes it easier to make dangerous mistakes. Python, on the other hand, is very easy to write but can be slower because it has a garbage collector that cleans up memory for you. Rust gives a balance: it’s fast like C++ but safer and more predictable, making it great for big, complex systems where both performance and reliability are important.

2) Explain what does RUST is safer mean using a simple example?

Imagine you’re building a large car factory. Using C++ is like giving workers complete freedom with powerful tools but no safety instructions—they can work fast but are more likely to make dangerous mistakes. Python, on the other hand, is like hiring workers with simple tools and clear instructions, making them less likely to mess up but slower to complete tasks, with a cleanup crew occasionally slowing things down. Rust is like designing the factory with tools that are both powerful and safe, allowing workers to be fast like in the C++ factory but with built-in checks that prevent accidents, making the process both efficient and reliable.

3) If you had to pick one feature of RUST that makes it safer than C++, and hence easy to certify, what would it be?

RUST has a lot of cool features, that makes it robust, but I had to pick just one, it would be “Memory Safety”. Memory safety refers to the ability of a program to safely manage and access memory without causing crashes, leaks, or unexpected behavior. Rust guarantees memory safety through its ownership system, which tracks how memory is used and prevents dangerous actions like accessing memory that has already been freed. Let’s understand it with an example. Consider a library that loans out books. In Rust, each book can only be checked out to one person at a time, ensuring it is returned before being loaned out again, preventing issues like a book being damaged or lost. In contrast, C++ allows multiple patrons to check out the same book simultaneously or
forget to return it, leading to potential chaos in the library. There might be a scenario, where a student is allowed to issue a book which is borrowed by someone else or is discarded by the library. This analogy relates to memory: Rust’s ownership rules act like a diligent librarian who keeps track of which books are available, ensuring safe and organized access to resources. Meanwhile, C++ offers more freedom but relies on developers to manage their own memory responsibly, which can lead to errors and unsafe conditions.

4) Safety-critical domains like autonomous drones, demand real-time performance and precision. In your view, what makes Rust an attractive language for building robotics applications, especially in comparison to C++?

Rust is an appealing choice for safety-critical domains applications because it offers a unique blend of speed, safety, and efficiency. While languages like Python prioritize ease of use at the expense of performance, leading to slower execution times, Rust provides the performance characteristics of C++ without sacrificing safety. Its ownership model ensures memory safety and prevents common errors like data races and memory leaks, allowing developers to build reliable systems for real-time applications. This means that robots programmed in Rust can operate quickly and efficiently, making split-second decisions while avoiding the pitfalls that often come with managing memory manually in C++. Overall, Rust strikes an excellent balance, making it a powerful option for robotics where both performance and reliability are critical.

5) How does RUST handle concurrency similar to how C++ has concurrency mechanisms provided by C++ multi threading. How is it more safer and is the speed up similar?

Rust handles concurrency through its ownership model and type system, which help prevent common pitfalls such as data races, ensuring that multiple threads can operate safely on shared data. Unlike C++, where developers need to manually manage mutexes or locks to protect shared data, Rust’s borrow checker enforces rules at compile time that prevent data from being accessed simultaneously in conflicting ways. This means that if one thread is using data, another cannot access it until it’s released, effectively eliminating data races. As a result, Rust’s approach to concurrency not only makes programs safer but also reduces the likelihood of bugs that can be difficult to track down in C++. In terms of speed, Rust’s concurrency model can achieve similar
performance to C++ because it allows fine-grained control over system resources, enabling efficient parallel execution of tasks without the overhead of runtime checks. Overall, Rust provides a robust and efficient framework for concurrent programming, making it a strong contender for performance-critical applications like robotics and real-time systems.

6) As AI continues to grow in complexity, how do you see Rust being adopted in the field of deep learning and machine learning development? Do you think it could eventually replace C++ in this domain?

As AI continues to grow in complexity, Rust is poised to be adopted in the field of deep learning and machine learning development, especially for applications requiring high performance and memory safety. However, C++ remains well established in this domain, with mature and optimized backends like ONNX Runtime and TensorRT that facilitate efficient model inference. Despite Rust’s advantages, there is currently no scalable and well-maintained solution for deploying AI models on edge devices using Rust. At Spleenlab GmbH, we are addressing this gap by developing our in-house Rust library for inference on edge devices, which leverages Rust’s fast inference capabilities and memory safety. While Rust may not completely replace C++, its role is likely to grow as
more developers recognize the benefits it offers for safety-critical applications in the evolving landscape of AI.


German Version:

VISIONAIRY® Expert Talk mit Sanket Shah, Spleenlab GmbH

Im VISIONAIRY® Expert Talk spricht unser Ingenieur Sanket Shah darüber, wie RUST eingesetzt werden kann, um die Sicherheit von KI-Wahrnehmungssoftware in der Robotik im Vergleich zu herkömmlichen Methoden deutlich zu erhöhen.:

1) Was ist RUST? Wie unterscheidet es sich von den üblichen C++ und Python?    

Rust soll Programmierern helfen, Fehler zu vermeiden, die zum Absturz von Programmen führen oder diese unsicher machen könnten. Im Gegensatz dazu bietet C++ mehr Kontrolle, macht es aber auch leichter, gefährliche Fehler zu machen. Python hingegen ist sehr einfach zu schreiben, kann aber langsamer sein, weil es einen Garbage Collector hat, der den Speicher für Sie aufräumt. Rust bietet ein Gleichgewicht: Es ist schnell wie C++, aber sicherer und vorhersehbarer, was es für große, komplexe Systeme, bei denen sowohl Leistung als auch Zuverlässigkeit wichtig sind, ideal macht.

2) Erläutern Sie anhand eines einfachen Beispiels, was RUST is safer bedeutet?

Stellen Sie sich vor, Sie bauen eine große Autofabrik. Die Verwendung von C++ ist so, als würde man den Arbeitern völlige Freiheit mit leistungsfähigen Werkzeugen, aber ohne Sicherheitsanweisungen geben – sie können zwar schnell arbeiten, machen aber mit größerer Wahrscheinlichkeit gefährliche Fehler. Python hingegen ist so, als würde man Arbeiter mit einfachen Werkzeugen und klaren Anweisungen einstellen, so dass die Wahrscheinlichkeit, dass sie Fehler machen, zwar geringer ist, die Aufgaben aber langsamer erledigt werden und gelegentlich ein Aufräumkommando die Arbeit verlangsamt. Rust ist wie die Entwicklung einer Fabrik mit Werkzeugen, die sowohl leistungsfähig als auch sicher sind, die es den Arbeitern erlauben, schnell zu sein wie in der C++-Fabrik, aber mit eingebauten Kontrollen, die Unfälle verhindern und den Prozess sowohl effizient als auch zuverlässig machen.

3) Wenn du ein Feature von Rust auswählen müsstest, das es sicherer als C++ macht und daher leichter zertifizierbar, welches wäre das?

Rust hat viele coole Features, die es robust machen, aber wenn ich nur eines auswählen müsste, wäre es „Memory Safety“. Memory Safety bezieht sich auf die Fähigkeit eines Programms, den Speicher sicher zu verwalten und darauf zuzugreifen, ohne Crashes, Leaks oder unerwartetes Verhalten zu verursachen. Rust garantiert Memory Safety durch sein Ownership-System, das verfolgt, wie der Speicher genutzt wird, und gefährliche Aktionen wie den Zugriff auf bereits freigegebenen Speicher verhindert. Lassen wir uns das anhand eines Beispiels verdeutlichen. Stell dir eine Bibliothek vor, die Bücher verleiht. In Rust kann jedes Buch nur von einer Person gleichzeitig ausgeliehen werden, wodurch sichergestellt wird, dass es zurückgegeben wird, bevor es erneut verliehen wird. Dies verhindert Probleme wie beschädigte oder verlorene Bücher. Im Gegensatz dazu erlaubt C++, dass mehrere Nutzer dasselbe Buch gleichzeitig ausleihen oder es vergessen, zurückzugeben, was zu potenziellem Chaos in der Bibliothek führen kann. Es könnte ein Szenario geben, in dem ein Student ein Buch ausleihen darf, das von jemand anderem ausgeliehen oder von der Bibliothek bereits entfernt wurde. Diese Analogie bezieht sich auf den Speicher: Rusts Ownership-Regeln agieren wie ein gewissenhafter Bibliothekar, der genau verfolgt, welche Bücher verfügbar sind, und so einen sicheren und organisierten Zugriff auf Ressourcen gewährleistet. C++ bietet dagegen mehr Freiheit, verlässt sich aber darauf, dass die Entwickler ihren Speicher eigenverantwortlich managen, was zu Fehlern und unsicheren Bedingungen führen kann.

4) Sicherheitskritische Bereiche wie autonome Drohnen erfordern Echtzeitleistung und Präzision. Was macht Rust Ihrer Meinung nach zu einer attraktiven Sprache für die Entwicklung von Robotik-Anwendungen, insbesondere im Vergleich zu C++?

Rust ist eine attraktive Wahl für sicherheitskritische Domänenanwendungen, da es eine einzigartige Mischung aus Geschwindigkeit, Sicherheit und Effizienz bietet. Während Sprachen wie Python die Benutzerfreundlichkeit auf Kosten der Leistung priorisieren, was zu langsameren Ausführungszeiten führt, bietet Rust die Leistungsmerkmale von C++, ohne die Sicherheit zu opfern. Sein Ownership-Modell gewährleistet Speichersicherheit und verhindert häufige Fehler wie Datenrennen und Speicherlecks, so dass Entwickler zuverlässige Systeme für Echtzeitanwendungen erstellen können. Das bedeutet, dass Roboter, die in Rust programmiert sind, schnell und effizient arbeiten können, indem sie in Sekundenbruchteilen Entscheidungen treffen und dabei die Fallstricke vermeiden, die oft mit der manuellen Speicherverwaltung in C++ einhergehen. Insgesamt bietet Rust ein hervorragendes Gleichgewicht, das es zu einer leistungsstarken Option für die Robotik macht, bei der sowohl Leistung als auch Zuverlässigkeit entscheidend sind.

5) Wie behandelt Rust Concurrency im Vergleich zu den Multithreading-Mechanismen von C++? Ist es sicherer und bietet es ähnliche Geschwindigkeitsvorteile?

Rust behandelt Concurrency durch sein Ownership-Modell und sein Typsystem, die helfen, häufige Fehlerquellen wie Data Races zu vermeiden und sicherzustellen, dass mehrere Threads sicher auf geteilte Daten zugreifen können. Anders als in C++, wo Entwickler manuell Mutexes oder Locks verwalten müssen, um geteilte Daten zu schützen, erzwingt Rusts Borrow Checker Regeln bereits zur Compile-Time, die verhindern, dass auf Daten gleichzeitig in widersprüchlicher Weise zugegriffen wird. Das bedeutet, dass wenn ein Thread Daten verwendet, ein anderer erst darauf zugreifen kann, wenn sie freigegeben wurden, was Data Races effektiv eliminiert. Dadurch macht Rusts Ansatz zur Concurrency Programme nicht nur sicherer, sondern verringert auch die Wahrscheinlichkeit von schwer auffindbaren Bugs, die in C++ auftreten können. In Bezug auf die Geschwindigkeit kann Rusts Concurrency-Modell eine ähnliche Performance wie C++ erreichen, da es eine feingranulare Kontrolle über Systemressourcen ermöglicht und eine effiziente parallele Ausführung von Tasks ohne den Overhead von Runtime-Checks gewährleistet. Insgesamt bietet Rust ein robustes und effizientes Framework für Concurrent Programming und ist daher eine starke Option für performancekritische Anwendungen wie Robotik und Echtzeitsysteme.

6) Da die KI immer komplexer wird, wie sehen Sie den Einsatz von Rust im Bereich Deep Learning und maschinellem Lernen in der Entwicklung? Glauben Sie, dass Rust irgendwann C++ in diesem Bereich ersetzen könnte?

Da KI zunehmend komplexer wird, ist Rust gut positioniert, um im Bereich der Deep Learning und Machine Learning Entwicklung eingesetzt zu werden, insbesondere bei Anwendungen, die hohe Performance und Memory Safety erfordern. Allerdings ist C++ in diesem Bereich fest etabliert, mit ausgereiften und optimierten Backends wie ONNX Runtime und TensorRT, die effiziente Modell-Inferenzen ermöglichen. Trotz der Vorteile von Rust gibt es derzeit keine skalierbare und gut gepflegte Lösung, um AI-Modelle auf Edge Devices mit Rust zu deployen. Bei der Spleenlab GmbH arbeiten wir daran, diese Lücke zu schließen, indem wir unsere eigene Rust Library für Inference auf Edge Devices entwickeln, die Rusts schnelle Inference-Fähigkeiten und Memory Safety nutzt. Obwohl Rust C++ möglicherweise nicht vollständig ersetzen wird, wird seine Rolle wahrscheinlich wachsen, da immer mehr Entwickler die Vorteile erkennen, die es für sicherheitskritische Anwendungen im sich wandelnden AI-Umfeld bietet.

written by