Benutzer-Werkzeuge

Webseiten-Werkzeuge


rust

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
rust [2021-04-23 23:42:11] – [FreeBSD] manfredrust [2022-07-13 15:49:53] (aktuell) manfred
Zeile 1: Zeile 1:
 +====== Rust ======
 +
 +Eine erste stabile Version von Compiler und Standardbibliothek, Rust 1.0, wurde am __15. Mai 2015__ veröffentlicht.\\
 +//[[https://www.insightsforprofessionals.com/blog/welche-programmiersprachen-sollten-sie-entwickeln|Die Entwicklerumfrage von StackOverflow 2017 fand heraus, dass Rust das zweite Jahr in Folge die beliebteste Programmiersprache ist, was ausgesprochen beeindruckend ist.]]//
 +
 +  * **[[https://youtu.be/br3GIIQeefY|Rust for the impatient (in 10 Minuten Rust lernen)]] => [[https://fasterthanli.me/articles/a-half-hour-to-learn-rust|Rust in einer halben Stunde lernen]]**
 +  * [[https://crates.io/]]
 +  * **[[https://prev.rust-lang.org/de-DE/faq.html|Häufig gestellte Fragen zu Rust]]**
 +  * [[https://doc.rust-lang.org/book/|The Rust Programming Language]] - originale Rust-Doku
 +  * **//[[https://github.com/rust-lang/rust.vim|Rust-Plugin für vim]]//**
 +  * [[http://de.wikipedia.org/wiki/Rust_%28Programmiersprache%29]]
 +  * [[https://youtu.be/MddGbXgIt2E|Build A Rust Frontend (Really FAST Web Apps with Yew)]]
 +  * [[https://rust-lang-de.github.io/rustbook-de/ch00-00-introduction.html|Die Programmiersprache Rust]]
 +    * **[[http://www.rust-lang.org/|Rust]]** - Rust is a systems programming language that runs blazingly fast, prevents almost all crashes*, and eliminates data races.
 +      * __**[[https://www.rust-lang.org/community]]**__
 +        * **[[https://users.rust-lang.org/]]** - **//User-Forum (englisch)//**
 +      * __**[[https://prev.rust-lang.org/de-DE/community.html|Die Rust-Community]]**__
 +        * [[https://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-de]] - **//Deutscher Chat-Kanal//**
 +    * **__Module und Bibliotheken__**
 +      * [[https://doc.rust-lang.org/std/index.html]]
 +      * [[https://doc.redox-os.org/]]
 +      * [[https://crates.io/]]
 +    * [[https://forum.golem.de/kommentare/software-entwicklung/programmiersprache-rust-erreicht-hunderte-millionen-endnutzer/109346,list.html|Programmiersprache: Rust erreicht "Hunderte Millionen" Endnutzer]] - //Nur rund zwei Jahre nach der ersten stabilen Version erreicht die Sprache Rust dank Dropbox, Mozilla und Gnome bereits "Hunderte Millionen" Endnutzer. Trotz dieser überzeugenden Zahlen soll die Sprache leichter genutzt werden können.//
 +  * __[[https://www.golem.de/news/programmiersprachen-weniger-frust-mit-rust-2102-154243.html|Weniger Frust mit Rust]]__ - 25. Februar 2021, 7:00 Uhr - Die Programmiersprache Rust macht nicht nur weniger Fehler, sie findet sie auch früher.
 +  * [[https://github.com/rust-lang/rust]]
 +    * [[http://blog.rust-lang.org/2015/05/15/Rust-1.0.html|Announcing Rust 1.0]]
 +      * [[http://www.golem.de/news/programmiersprache-rust-entwickler-veroeffentlichen-version-1-0-1505-114088.html|Rust-Entwickler veröffentlichen Version 1.0]]
 +      * [[http://heise.de/-2649509|Rust ist eine noch junge systemnahe Programmiersprache, entwickelt und finanziert von Mozilla. Nach etwas mehr als fünf Jahren Entwicklung erscheint das Geisteskind von Graydon Hoare endlich in Version 1.0.0.]]
 +        * Seit der initialen Schöpfung hat das Projekt mehrfach das Team und die Ausrichtung gewechselt, aber inzwischen seine Nische gefunden. War die Sprache zuerst zur verteilten Programmierung gedacht, hat sie sich inzwischen weit davon entfernt und tritt eher als moderner C/C++-Ersatz an. Der Fokus auf parallele Programmierung und einem dazu geeigneten, auf "unique pointers" basierenden Typsystem ist jedoch geblieben. Die Sprache versucht den Spagat zwischen maschinennaher Programmierung und leistungsfähigen Abstraktionen. Der Name Rust stammt interessanterweise nicht etwa von Rost, sondern von einer besonderen [[http://en.wikipedia.org/wiki/Rust_%28fungus%29|Pilzsorte]].
 +  * __Warum eine MIT-ASL2 Doppellizenz?__
 +    * Die Apache-Lizenz enthält wichtigen Schutz gegen Patentaggressoren, aber ist mit der GPLv2 inkompatibel. Um Probleme bei der Verwendung von Rust mit der GPLv2-Lizenz zu vermeiden, ist es alternativ MIT-lizenziert.
 +  * **Einführung**
 +    * [[https://www.youtube.com/watch?v=wIEbL2O2ZoQ|50-Minuten-Video: Rust - sicher und performant]]
 +    * [[http://www.rust-lang.org/install.html|Rust-Lang installieren]]
 +      * [[https://doc.rust-lang.org/stable/|Dokumentation]]
 +
 +Rust nutzt als Backend das LLVM-Compilerframework. Damit läuft Rust-Code bereits jetzt auf vielen Architekturen. Der Rust-Code ist freie Software und steht unter einer Dual-Lizenz: Er kann entweder nach den Bedingungen der **MIT-** oder der **Apache-Lizenz** genutzt werden.
 +
 +
 +===== Kompromiss zwischen High- und Lowlevel-Programmierung =====
 +
 +Bisher hatte es einerseits Highlevel-Programmiersprachen gegeben, in denen sich die Entwickler nicht um die Speicherverwaltung kümmern müssen, die aber in Sachen Performance nicht an C-/C++-Code heranreichen. Auf der anderen Seite gab es Lowlevel-Sprachen, deren Entwickler mit den bekannten Problemen der Speicherverwaltung kämpfen. "Rust ist eine Lowlevel-Programmiersprache, die sich oft wie eine Highlevel-Programmiersprache anfühlt", fasste Rust-Entwickler Steve Klabnik im vergangenen Jahr auf der All-Things-Open-Konferenz die Besonderheit von Rust zusammen.
 +
 +Rusts Ansatz ist dabei, möglichst viele Fehler bereits bei der Kompilierung zu entdecken. Die Sprache ist so designt, dass fehlerhafter und unsicherer Code in vielen Fällen überhaupt nicht kompilierbar ist und dem Programmierer eine Fehlermeldung liefert. Rust solle somit, so Klabnik, die Lowlevel-Programmierung für Anfänger zugänglicher und für bereits erfahrene Lowlevel-Programmierer sicherer machen.
 +
 +
 +===== Wie fange ich an? =====
 +
 +
 +==== FreeBSD ====
 +
 +Der Standard-Weg geht nicht:
 +  [fritz@freebsd ~]$ wget -O - https://sh.rustup.rs | sh
 +  info: downloading component 'rustfmt'
 +  info: installing component 'cargo'
 +  error: error: 'sysinfo not supported on this platform'
 +  info: using up to 500.0 MiB of RAM to unpack components
 +  info: installing component 'clippy'
 +  error: error: 'sysinfo not supported on this platform'
 +  info: installing component 'rust-std'
 +  error: error: 'sysinfo not supported on this platform'
 +  ...
 +  info: installing component 'rustc'
 +  error: error: 'sysinfo not supported on this platform'
 +  ...
 +  info: installing component 'rustfmt'
 +  error: error: 'sysinfo not supported on this platform'
 +  info: default toolchain set to 'stable-x86_64-unknown-freebsd'
 +  
 +    stable-x86_64-unknown-freebsd installed - rustc 1.51.0 (2fd73fabe 2021-03-23)
 +
 +also machen wir es zu Fuß:
 +  [root@freebsd ~]# cd /usr/ports/lang/rust && make clean && make && make install ; make clean
 +  
 +  [fritz@freebsd ~]$ cargo install cargo-edit
 +  [fritz@freebsd ~]$ cargo new projekt01
 +
 +jetzt können wir auch Module hinzufügen:
 +  [fritz@freebsd ~/projekt01]$ cargo add ffprobe
 +    Updating 'https://github.com/rust-lang/crates.io-index' index
 +      Adding ffprobe v0.1.0 to dependencies
 +
 +  [fritz@freebsd ~/projekt01]$ vi hallo_welt.rs
 +  [fritz@freebsd ~/projekt01]$ cargo build
 +
 +  [fritz@freebsd ~/projekt01]$ vi src/main.rs
 +  [fritz@freebsd ~/projekt01]$ cargo run
 +
 +
 +==== Linux ====
 +
 +[[https://www.rust-lang.org/learn/get-started]]
 +
 +  > apt install cinnamon-desktop-environment xterm mc vim screen autofs pluma curl libssl-dev
 +  > snap install code --classic
 +  > curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
 +  > rustup component add rust-src
 +  
 +  > code
 +    => ''German Language Pack for Visual Studio Code'' installieren
 +    => ''rust-analyzer'' installieren
 +    => ''CodeLLDB'' installieren
 +  
 +  > cargo install cargo-edit
 +
 +jetzt können wir auch Module hinzufügen:
 +  > cargo add ffprobe
 +
 +
 +===== Einführung in Rust =====
 +
 +  * [[::Einführung in Rust]]
 +
 +
 +===== praktische Rust crates (Module) =====
 +
 +[[https://crates.io/|Crates suchen]]
 +
 +  * [[https://crates.io/crates/cargo-edit]]
 +  * [[https://crates.io/crates/urlencode]]
 +
 +
 +===== Beispiel-Programme in Rust =====
 +
 +  * [[::Beispiel-Programme in Rust]]
 +