© Liashko/Shutterstock.com
Entwickler Magazin
Wie Rust durch Eliminierung kritischer Funktionen Sicherheit schafft

Rostiges C

Yoda postulierte vor vielen Jahren, dass große Macht mit großer Verantwortung einhergeht. Im Fall der Programmiersprachenfamilie C und C++ ist dies eindeutig der Fall: Es gibt kaum eine andere Sprachgruppe, in der man sich so einfach eine Kartusche in den Fuß jagen kann. Die von Mozilla entwickelte Sprache Rust - der Name bedeutet auf Englisch soviel wie Rost - möchte Entwicklern eine von kritischen Teilen befreite Alternative zu C anbieten. Dieser Artikel stellt Ihnen besonders interessante Aspekte von Rust in Kurzform vor.

Tam Hanna


Quellcode zum Download

Aus Sicht der Sprachdesigner ist das ersonnene Konzept einfach: Wenn man kritische Funktionen schlichtweg deaktiviert, so kann der Entwickler diese nicht zur Erstellung von unsicherem Code benutzen. C ist unter anderem deshalb so populär, weil es eine direkte Beziehung zwischen geschriebenem Code und resultierendem Maschinenverhalten gibt. Die Einführung von Garbage Collectors und anderen Niedlichkeiten würde an dieser Stelle für Unruhe sorgen – Rust verzichtet auf diese nicht unbedingt nützlichen Errungenschaften der Compilerforschung. Die Unterstellung von Luddismus ist – trotz dieses konservativen Vorgehens – unfair. Rust mag auf den ersten Blick wie C aussehen, ist aber an entscheidenden Stellen trotz allem anders. Neben diversen Kniffen zur Verkürzung des Codes bietet Rust zudem einige Änderungen, die man als Entwickler nicht unbedingt erwartet.

Erste Schritte

Wie in den vorangegangenen Ausgaben der Sprachen­enzyklopädie, wollen wir uns auch diesmal mit einer vergleichsweise einfachen Einrichtung des Entwicklungssystems befassen. Laden Sie das für Ihr Betriebssystem geeignete Archiv unter [1] herunter und entpacken Sie es an einem für Sie angenehmen Ort.

In den folgenden Schritten wird mit Ubuntu 13.04 gearbeitet; das Betriebssystem liegt aus historischen Gründen in der 32-Bit-Variante vor. Da Rust auf einer Gruppe verschiedener Bibliotheken basiert, ist vor dem Einsatz eine Installation per Shellskript notwendig:

tamhan@ubuntu:~/Arbeitsfläche/rust-nightly-i686-unknown-linux-gnu$ sudo ./install.sh [sudo] password for tamhan: install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh . . .Rust is ready to roll.

Install.sh baut den 600 MB großen Interpreter tief in das Hostbetriebssystem ein. Wenn Sie Ihre Experimente mit der Sprache beenden möchten, sollten Sie den ausgegebenen Pfad zum Deinstallationswerkzeug notieren. Die Ausführung eines Beispielprogramms erfolgt dann gemäß dem von gcc, g++ und Co bekannten Schema:

tamhan@ubuntu:~/Arbeitsfläche/Rust$ rustc hello.rs tamhan@ubuntu:~/Arbeitsfläche/Rust$ ./hello hello?

Von rustc erstellte Binärdateien haben normalerweise den Namen der Quelldatei, die die Main-Methode enthält. Achten Sie zudem darauf, dass das Rust-Team seinen Interpreter normalerweise in Form von als Daily bezeichneten und tagesaktuell erstellten Kompilaten ausliefert. In diesem Artikel kam folgende Version zum Einsatz:

tamhan@ubuntu:~/$ rustc -V rustc 1.0.0-nightly (890293655 2015-02-2...

Entwickler Magazin
Wie Rust durch Eliminierung kritischer Funktionen Sicherheit schafft

Rostiges C

Yoda postulierte vor vielen Jahren, dass große Macht mit großer Verantwortung einhergeht. Im Fall der Programmiersprachenfamilie C und C++ ist dies eindeutig der Fall: Es gibt kaum eine andere Sprachgruppe, in der man sich so einfach eine Kartusche in den Fuß jagen kann. Die von Mozilla entwickelte Sprache Rust - der Name bedeutet auf Englisch soviel wie Rost - möchte Entwicklern eine von kritischen Teilen befreite Alternative zu C anbieten. Dieser Artikel stellt Ihnen besonders interessante Aspekte von Rust in Kurzform vor.

Tam Hanna


Quellcode zum Download

Aus Sicht der Sprachdesigner ist das ersonnene Konzept einfach: Wenn man kritische Funktionen schlichtweg deaktiviert, so kann der Entwickler diese nicht zur Erstellung von unsicherem Code benutzen. C ist unter anderem deshalb so populär, weil es eine direkte Beziehung zwischen geschriebenem Code und resultierendem Maschinenverhalten gibt. Die Einführung von Garbage Collectors und anderen Niedlichkeiten würde an dieser Stelle für Unruhe sorgen – Rust verzichtet auf diese nicht unbedingt nützlichen Errungenschaften der Compilerforschung. Die Unterstellung von Luddismus ist – trotz dieses konservativen Vorgehens – unfair. Rust mag auf den ersten Blick wie C aussehen, ist aber an entscheidenden Stellen trotz allem anders. Neben diversen Kniffen zur Verkürzung des Codes bietet Rust zudem einige Änderungen, die man als Entwickler nicht unbedingt erwartet.

Erste Schritte

Wie in den vorangegangenen Ausgaben der Sprachen­enzyklopädie, wollen wir uns auch diesmal mit einer vergleichsweise einfachen Einrichtung des Entwicklungssystems befassen. Laden Sie das für Ihr Betriebssystem geeignete Archiv unter [1] herunter und entpacken Sie es an einem für Sie angenehmen Ort.

In den folgenden Schritten wird mit Ubuntu 13.04 gearbeitet; das Betriebssystem liegt aus historischen Gründen in der 32-Bit-Variante vor. Da Rust auf einer Gruppe verschiedener Bibliotheken basiert, ist vor dem Einsatz eine Installation per Shellskript notwendig:

tamhan@ubuntu:~/Arbeitsfläche/rust-nightly-i686-unknown-linux-gnu$ sudo ./install.sh [sudo] password for tamhan: install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh . . .Rust is ready to roll.

Install.sh baut den 600 MB großen Interpreter tief in das Hostbetriebssystem ein. Wenn Sie Ihre Experimente mit der Sprache beenden möchten, sollten Sie den ausgegebenen Pfad zum Deinstallationswerkzeug notieren. Die Ausführung eines Beispielprogramms erfolgt dann gemäß dem von gcc, g++ und Co bekannten Schema:

tamhan@ubuntu:~/Arbeitsfläche/Rust$ rustc hello.rs tamhan@ubuntu:~/Arbeitsfläche/Rust$ ./hello hello?

Von rustc erstellte Binärdateien haben normalerweise den Namen der Quelldatei, die die Main-Methode enthält. Achten Sie zudem darauf, dass das Rust-Team seinen Interpreter normalerweise in Form von als Daily bezeichneten und tagesaktuell erstellten Kompilaten ausliefert. In diesem Artikel kam folgende Version zum Einsatz:

tamhan@ubuntu:~/$ rustc -V rustc 1.0.0-nightly (890293655 2015-02-2...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang