Episode Details
Back to EpisodesRoc with Richard Feldman
Episode 36
Published 6 months, 3 weeks ago
Description
Building a new programming language from scratch is a monumental undertaking. In this episode, we talk to Richard Feldman, creator of the Roc programming language, about building a functional language that is fast, friendly, and functional. We discuss why the Roc team moved away from using Rust as a host language and instead is in the process of migrating to Zig. What was the decision-making process like? What can Rust learn this decision? And how does Zig compare to Rust for this kind of systems programming work?
About Roc
Roc is a fast, friendly, functional programming language currently in alpha development. It's a single-paradigm functional language with 100% type inference that compiles to machine code or WebAssembly. Roc takes inspiration from Elm but extends those ideas beyond the frontend, introducing innovations like platforms vs applications, opportunistic mutation, and purity inference. The language features static dispatch, a small set of simple primitives that work well together, and excellent compiler error messages. Roc is already being used in production by companies like Vendr, and is supported by a nonprofit foundation with corporate and individual sponsors.
About Richard Feldman
Richard Feldman is the creator of the Roc programming language and author of "Elm in Action." He works at Zed Industries and has extensive experience with functional programming, particularly Elm. Richard is also the host of Software Unscripted, a weekly podcast featuring casual conversations about code with programming language creators and industry experts. He's a frequent conference speaker and teacher, with courses available on Frontend Masters. Richard has been a longtime contributor to the functional programming community and previously worked at NoRedInk building large-scale Elm applications.
Links From The Episode
- Zig - Better than Rust?
- Rust in Production: Zed - Our interview with Richard's colleague with more details about Zed
- Richards blogpost about migrating from Rust to Zig - Sent in by many listeners
- Elm - Initial inspiration for Roc
- NoRedInk - Richard's first experience with Elm
- Haskell - A workable Elm on the backend substitute
- OCaml - Functional language, but pure functions only encouraged
- F# - Similar shortcomings as OCaml
- Evan Czaplicki - Creator of Elm
- Ghostty - Terminal emulator from Mitchel Hashimoto with lots of code contributions in Zig
- bumpref - A tiny Rust crate that came out of this discussion, providing Arc::bump(), which is an alias for clone().
- RAII - Resource acquisition is initialization, developed for C++, now a core part of Rust
- Frontend Masters: The Rust Programming Language - Richard's course teaching Rust
- Rust by Example: From and Into - Traits for ergonomic initialising of objects in Rust
- The Rust Programming Language: Lifetime Annotations on Struct Definitions - Learn from Roc: try to avoid havin