Rust Programming Langauge

A modern alternative to C and C++ for system programming.

Created: by Pradeep Gowda Updated: May 06, 2024 Tagged: programming-language · rust

A modern alternative to C and C++ for system programming.

Why?

Articles / Talks

Books

The Little Book of Rust Books

Online books

Tutorials

Experience reports

Papers / reports

Videos / Talks

Blogs

Learning Resources

Tutorials

Courseware

Source code to study

Libraries and tools

WASM

  • Seed – A Rust framework for creating web apps

Applications

To study code, library usage etc.,

  • mcux/kylyp: A new Forum. The project uses rust, rocket, diesel, postgresql, and responsive design to build a new Forum.

Command Line Tools in Rust: See also: Common *nix commands written in Rust – gcollazo

Editor setup

Performance

Memory Management

Safety-critical programming

What is Ferrocene? > Ferrocene is the main Rust compiler - rustc - but quality managed and qualified for use in automotive and industrial environments (currently by ISO 26262 and IEC 61508) by Ferrous Systems. It operates as a downstream to the Rust project, further increasing its testing and quality on specific platforms.

References and borrowing

Lifetimes

Async / Await

Web

Embedded

This book is an “introductory course” on microcontroller-based “embedded systems” that uses Rust as the teaching language rather than the usual C/C++.

Comparisons (Rust vs X)

FFI

// rustimport:pyo3
use pyo3::prelude::*;

#[pyfunction]  // ← expose the function to Python
fn fibonacci(number: u64) -> u64 {
...
import rustimport.import_hook
from rustfib import fibonacci

Discussions

Cargo

Installing a package that is not on crates.io: cargo install -f --git https://github.com/cjbassi/ytop ytop

Best Practices / Tips

Hardware / bare metal

Rust vs Python

Rust vs Java for rest services

via reddit

I gave a talk (video) today about “Rust for Java programmers” at my local java users group. Part of the talk was comparing the implementation of a minimal rest service in a container for the following 4 approaches:

  1. Payara-micro (JEE/JAXRS)
  2. Wildfly-swarm (another JEE/JAXRS micro deploy)
  3. Javaspark (non JEE “lightweight” framework)
  4. Rust-rocket

The comparisons are striking, viewed in the same 1/2/3/4 sequence above:

  • Container Image Size: 173MB / 151MB / 104MB / 2MB

  • Container Startup Time: 22.2s / 17.6s / 1.6s / 0.6s

  • Memory Usage at Startup: 630MB / 401MB / 34MB / 1.6MB

  • Memory Usage under Stress: 647MB / 522MB / 74MB / 1.7MB

  • CPU usage and throughput show a similar progression as above.

Nice job, Rocket! (results are unscientific. fight me) – Source code

Success Stories

We had a similar challenge supporting sending this many notifications at OneSignal, which we solved using Rust. We recently hit a peak of 850 Million notifications per second, and 5 billion notifications per day. Here’s a blog post on how we do it. Written back when we were at “only” 2 billion notifications per week: https://onesignal.com/blog/rust-at-onesignal/


Rolling log of things

2017-09-08:

There is a new book – Programming Rust by Jim Blandy, and Jason Orendorff. Jim Blandy has also written a concise short book Why Rust [PDF]

Rust is currently unable to call directly into a C++ library; so that way Rust is probably behind D.

Rust, by design, makes certain programming patterns more painful than others. This is a GOOD thing! It turns out that, for game development, the patterns that end up being the easiest to deal with in Rust closely mirror the patterns that are easiest for game development in any language. Rust highly rewards data-oriented design with simple, understandable ownership semantics, and this is great news because this is a really good fit for game development.


See also: Rust 2018, Rustbelt Rust 2017

References