1
0
Fork 0
make_lunduke_angry/preso.md

14 KiB

title sub_title event authors date
Make Brian Lunduke Angry, Program in Rust An Overview of Rust for People Who Don't Suck Northern Virginia Linux Users Group (NoVaLUG)
Andy Newton
17 Jan 2026

What is a Lunduke?

urban dictionary (n): a journalist who pursues narratives instead of news -- a.k.a., an obvious propagandist. Originates from a YouTube "creator" well known for hating Rust for no reason.

Usage:

  • "That reporter is just a Lunduke."
  • "Only a Lunduke believes that."
  • "Licking electrical wires is a Lunduke move."
  • "Windows is awesome, said nobody... except Lunduke."
  • "Lundukes use NotePad because they don't know how to quit VI."

So why does his opinion matter?

It doesn't. This is just a stupid hook for this presentation:

An Overview of Rust for People Who Don't Suck

  • Why Rust? (aka The Hype)
  • The Counter-Hype (aka The Lundukisms)
  • Description of the Rust language.
  • Different types of Rust programming uses.
  • Rust Cons.
  • How to get started.
  • Cool Rust applications.

What This Presentation is Not

This is not a tutorial... but learning resources will be given.

Who I Am

Andy Newton: Principal Engineer for Internet Corporation for Assigned Names and Numbers (ICANN). I have about 4 years of experience with Rust. Started using Rust while at AWS on a project that needed to be fast and stable.

Programming skill:

  • mid
  • Torvalds Scale: "retarded monkey on crack"

I currently maintain a Rust-written, open-source project: ICANN-RDAP - client, server, and libraries for the Registration Data Access Protocol (RDAP).

  • Most advanced RDAP client available.
  • Incorporated into production code by service providers.
  • https://github.com/icann/icann-rdap
  • brew install icann-rdap
  • available in the AUR

Why Rust? (aka The Hype)

🦺 Memory Safety: safe and efficient use of memory without a garbage collector.

🧠 Fearless Concurrency: compile-time guards against shared mutations.

🚀 Speed of C.

💻 Binary executables with no need for a runtime.

Zero-cost Abstractions: clean code that is efficient.

🧰 Excellent tooling.

🥞 Applicable to all parts of the stack.

💪 Robust ecosystem.

The Counter-Hype (the Lundukisms)

Lundukism: Rust Created a CVE in the Linux Kernel

🎯 A CVE was found in the Rust code of the Linux Kernel in Nov. 2025.

🛡️ One CVE in 3 years is a good track record.

  • Occurred because of unsafe code block.
  • Issue was a doubly-linked list, which is also a hard concurrency problem in C.

Lundukism: Rust Replacement of Sudo Found to Have Exploits

💥 Some exploits were found in sudo-rs.

🧱 The C version of sudo has also had recent exploits.

  • Memory safety doesn't mean there will be no logic bugs.

Lundukism: Cloudflare's Rust Code Took Down the Internet

💥 Cloudflare's bot detection and mitigation code is written in Rust. It failed and took down the Internet.

🧱 Cloudflare had two versions of the bot detection code running, legacy C and new Rust. Both versions failed.

  • The fault in the Rust version was easy to find due to the fail-fast nature of Rust error handling.
  • Memory safety doesn't stop logic bugs, but fail-fast is better than lingering memory leaks and undefined behavior.

What is Rust

A Multi-paradigm, Systems Programming Language.

  • multi-paradigm: not a purist language, borrows concepts from OOP and functional.
  • systems: memory safe and performant
    • memory safe:
      • no garbage collector
      • 🚨 borrow checker enforces "ownership" of data for concurrency protection
    • compiles to machine code
  • strongly and statically typed
    • algebraic data types
      • composition of types through "and" and "or" of primitive types
      • 🚨 no "null"

Paradigms

OOPs-ish

  • No classes or inheritance.
  • Polymorphism using traits.
  • Traits can extend data types.
  • Encapsulation, but using modules.

Functional-ish

  • First class functions and closures.
  • Immutability by default but not as side effects.
  • Iterators in the standard library.
  • Algebraic Data Types.
  • No infinite tail call recursion (but coming soon).

Meta-programming

  • Declarative macros
  • Procedural macros

Ecosystem

Code and Packages

  • Small standard library.
  • Packages are called "crates".
  • Public repository of crates at crates.io.

Build System

  • First-class build system is cargo.
    • Best-in-class.
    • Makes all others look bad.

Tool Chain Management

  • First-class tool chain management via rustup.

Architectures

Rust has over 240 target architectures classified into Tier 1 (guaranteed to work), Tier 2 (guaranteed to build) and Tier 3 (no guarantees):

  • x86
  • ARM
  • RISC-V
  • PowerPC
  • SPARC
  • MIPS
  • s390x
  • WASM
  • ... more

Executables are statically compiled binaries (only dynamically link to stdlib).

FFI

Foreign Function Interface (FFI) works with any language that supports the C ABI.

Where is Rust Used?

Linux Kernel

  • Began as an experiment in 2022.
  • Rust become a permeant language of the Linux kernel in 2025, second language of the Linux kernel.

Windows Is Being Rewritten in Rust

  • NO! That is a Lunduke.
  • But Microsoft is pushing heavily in to Rust.

Embedded Systems (i.e., bare metal, no OS)

  • Tier 1 & 2 for 32 and 64 bit
  • 16-bit Tier 3 architectures
  • community maintained "rust-mos" project to target 6502 cpus
  • community maintained "mrustc" transpiler to C enables targetting of older, esoteric architectures.

Cross Compilation

  • Can cross-compile from Tier 1 host architectures to other architectures.
  • Biggest hurdle will be non-Rust dependencies.
  • The "Cross" project aims to make this simpler.
  • It is very common to support the major architectures using GitHub Actions.

Command-line Interfaces (CLIs)

  • clap - command line argument parsing
  • directories - platform abstraction for directories (XDG...)
  • colored - ANSI-color output
  • termimad - ANSI rendered Markdown
  • reqwest - HTTP client library ...

Terminal User Interfaces (TUIs)

  • The "ratatui" crate makes curses-style apps easy.

Desktop Apps

  • tauri - electron-like but lighter weight
  • iced - widget library (used by Cosmic)
  • egui - widget library
  • dioxus - web and desktop

Web Servers

  • Axum
  • Rocket
  • Actix

Back-end Coding

  • serde - data modeling for JSON, YAML, TOML, XML...
  • reqwest - async HTTP client
  • sqlx - async database drivers
  • diesel - ORM

Web Front-end

  • dioxus
  • yew
  • leptos
  • various HTMX intefaces for WASM

Networking

  • hickory DNS
  • pkts - packet parsing
  • rtnetlink - Linux network interface manipulation
  • nativetls - OS-native TLS integration
  • quiche - Quic
  • rustbgp - highly parallel BGP processing

Scripting

  • rust-script - Rust project in one file
  • many embeddable LUA engines
# //!/usr/bin/env rust-script
# //! ```cargo
# //! [dependencies]
# //! serde_json = "1.0"
# //! ```
fn main() {
    let data = serde_json::json!({
        "msg": "Hello World!",
        "✅": ["rust", "efficient", "fast"]
    });
    println!("{}", serde_json::to_string_pretty(&data).unwrap());
}

Rust Cons

  1. Compiler is slow.
  2. Steep learning curve.
  3. Cannot write a linked list.
  4. It is not OOP.
  1. It is not Functional.
  2. No specification.
  3. No batteries included.
  4. No developers.

Some People are just Unreasonable

People hate change.

But that is not true. The truth is...

People hate change they do not control.

The Compiler is Slow

Rust's borrow checker occurs at compile-time. Therefore, the compiler must do a lot of analysis of code to verify the ownership of data. This is time intensive.

True in comparison to the Go compiler or starting a Ruby or Python interpreter.

Not true in comparison to Java (IMHO).

Steep Learning Curve

True. The borrow checker is not a feature found in other programming languages, therefore most developers must learn how to use it.

🤔 Forcing a developer to think about shared mutability and memory management makes them a better software engineer.

You Cannot Write a Linked List in Rust

"You cannot write linked lists in Rust therefore it is impossible for Rust to be used to write an OS" -- some moron

Except Rust has been in the Linux kernel for 3 years.

Also, there is a linked list in the Linux Rust kernel library.

The truth is that the easiest way to write a linked list is to use shared mutability. And shared mutability is difficult in Rust cuz the borrow checker. But it is very possible.

Online book called Learning Rust With Entirely Too Many Linked Lists:

Linked lists are as niche and vague of a data structure as a trie. Few would balk at me claiming a trie is a niche structure that your average programmer could happily never learn in an entire productive career -- and yet linked lists have some bizarre celebrity status.

It is not OOP.

Who f'ing cares!?

And if you do, watch this and then you won't f'ing care either: https://youtu.be/QM1iUe6IofM?si=DGZkxGmb6SMRTBc2

It is not Functional.

True, but pure Functional languages have not caught on in the mainstream.

Plus, Rust continues to add functional language features like tail call optimization.

And Rust is functional enough.

There is no Rust Specification

Criticism

There is no formal specification for the Rust language.

Why Does this matter?

Historically, languages like C, C++, Java, etc... have had formal specifications... but no open source implementations. That is, initial implementations of all those languages originally had no open source implementations (even if they do today).

Rust was born in the Open Source world. So a formal specification was not as important as running code.

Rust RFC 3355

https://github.com/rust-lang/rfcs/pull/3355

Formal approval to start working on a formal Rust specification in June 2023. Work in-progress.

This will be beneficial to alternate compilers such as mrustc.

No Batteries Included

Criticism

The Rust standard library is not as comprehensive as the standard libraries that come with a lot of other languages.

True. But unlike those other languages, Rust has had cargo and the crates ecosystem since 1.0. Therefore, it has not needed a broad, all-encompassing standard library.

🤔 Plus, a small standard library is easier to port to new architectures and requires less maintenance by the Rust language maintainers.

No Rust Developers

Criticism

If we use Rust, we will not be able to find Rust developers when it comes time to fix bugs and add features.

It is true that there are fewer Rust developers compared to Python or Java.

🤔 But those are much, much older languages, and Rust's popularity is growing very fast.

  • Estimated 2.27 million developers worldwide.
  • "Most loved" and "Most Admired" for 9 years according to Stack Overflow.
  • TIOBE 2025 index: from 17th place to 13th place.
  • Rust community grew by 33% in 2025 according to SlashData survey.

In my own experience, you can train up competent software developers in about two months.

Unfortunately, it has also been my experience that businesses want disruptive technologies, but they don't want to pay for them.

How To Get Started

  1. Get familiar with The Rust Programming Language.
  1. Get your feet wet with The Rust Playground
  1. Install Rust: https://rust-lang.org/tools/install/
  1. Do the Rustlings exercises: https://rustlings.rust-lang.org/

Other Useful Tips

  1. The compiler gives very helpful hints. Read them.
  1. Try the Brown University version of Rust book: https://rust-book.cs.brown.edu/
  1. Use a code editor or IDE with a Rust LSP, preferably rust-analyzer.
  1. Rust by example with code editor: https://github.com/rust-lang/rust-by-example

Someone Is Wrong on the Internet

https://programming-language-benchmarks.vercel.app/

Cool Software Written in Rust

  • This presentation software: presenterm.
  • Zellij - terminal multiplexer.
  • Helix - batteries included editor.
  • Zed - Vim-first VSCode replacement.
  • Fresh - CUA-first Nano replacement.
  • Ripgrep - Smart and fast grep.
  • Bat - Improved cat.
  • just - command recipe runner.
  • Eza - ll on steroids.
  • fd - A better find.
  • atuin - TUI shell history.
  • fish - a modern shell for the 90's.
  • nushell - data processing shell.
  • yazi - file manager.
  • zola - static site generator.
  • typst - latex but for markdown.
  • wirefish - packet sniffer.
  • zoxide - a smarter cd command.

Fini

This Preso

https://codeberg.org/rcode3/make_lunduke_angry

Lunduke

His name is spelled "Bryan". I know that. He is not the only one who can intentionally misstate information.

Q&A