
Förderjahr 2023 / Projekt Call #18 / ProjektID: 6890 / Projekt: Math2Model
Die Rust-Programmiersprache bringt man wohl nicht in erster Linie mit Webentwicklung in Verbindung - dennoch haben wir vor einiger Zeit die technologische Basis unseres Webprojekts Math2Model um diese Programmiersprache erweitert. Einige Teile laufen weiterhin auf TypeScript-Basis, doch große Teile basieren nun auf Rust. Browser können zwar Rust nicht nativ ausführen, doch WebAssembly ermöglicht dies und Rust kann in WebAssembly kompiliert werden.
Große Vorteile der Verwendung von Rust sind:
- Es ist eine stark typisierte Programmiersprache, die so konstruiert ist, dass einige Programmierfehler bereits per Design verhindert werden (durch Features wie den Borrow-Checker).
- Ein Rust-Programm kann - bei entsprechender Konfiguration - sowohl als Desktopapplikation als auch als WebAssembly gebaut werden. Ein so gebautes Desktopprogramm kann mit Debuggern analysiert werden, wie z.B. RenderDoc, das insbesondere das Graphik-Debugging ermöglicht, was im Browser so in dieser Form nicht möglich ist.
- Es gibt eine Vielzahl an mächtigen, professionellen Libraries, die die Entwicklung weiter erleichtern. So verwenden wir beispielsweise die Library glam für lineare Algebra.
- Fehler bei der Datenübertragung zu Shaderprogrammen werden vermieden, da statische Typen CPU-seitig für alle Typen in Shaderprogrammen generiert werden können. Diese Bindings können mit einer Library generiert werden.
Für andere Teile unseres Tools verwenden wir weiterhin TypeScript. Das User Interface verwendet beispielsweise diverse TypeScript-Libraries. Um zwischen Rust und TypeScript zu kommunizieren, haben wir eine Rust<->TypeScript Bridge implementiert. Dadurch können wir die besten Features aus beiden Welten nutzen.