Creating a Language: Elixir vs. Roc with José Valim and Richard Feldman (Elixir Wizards X Software Unscripted Podcast)

About this Episode

Published January 11, 2024 | Duration: 1:09:04 | RSS Feed | Direct download

For the final episode of Elixir Wizards’ Season 11 “Branching Out from Elixir,” we’re featuring a recent discussion from the Software Unscripted podcast. In this conversation, José Valim, creator of Elixir, interviews Richard Feldman, creator of Roc. They compare notes on the process and considerations for creating a language.

This episode covers the origins of creating a language, its influences, and how goals shape the tradeoffs in programming language design. José and Richard share anecdotes from their experiences guiding the evolution of Elixir and Roc. The discussion provides an insightful look at the experimentation and learning involved in crafting new languages.

Topics discussed in this episode

  • What inspires the creation of a new programming language
  • Goals and use cases for a programming language
  • Influences from Elm, Rust, Haskell, Go, OCaml, and more
  • Tradeoffs involved in expressiveness of type systems
  • Opportunistic mutation for performance gains in a functional language
  • Minimum version selection for dependency resolution
  • Build time considerations with type checking and monomorphization
  • Design experiments and rolling back features that don’t work out
  • History from the first simple interpreter to today's real programming language
  • Design considerations around package management and versioning
  • Participation in Advent of Code to gain new users and feedback
  • Providing performance optimization tools to users in the future
  • Tradeoffs involved in picking integer types and arithmetic
  • Comparing floats and equality checks on dictionaries
  • Using abilities to customize equality for custom types
  • Ensuring availability of multiple package versions for incremental upgrades
  • Treating major version bumps as separate artifacts
  • Roc's focus on single-threaded performance

Links mentioned in this episode

Software Unscripted Podcast
Roc Programming Language
Roc Lang on Github
Elm Programming Language
Elm in Action by Richard Feldman
Richard Feldman on Github
Lua Programming Language
Vimscript Guide
OCaml Programming Language
Advent of Code
Roc Language on Twitter
Richard Feldman on Twitter
Roc Zulip Chat
Clojure Programming Language
Talk: Persistent Data Structures and Managed References by Rich Hickey
Koka Programming Language
Flix Programming Language
Clojure Transients
Haskell Software Transactional Memory
Rust Traits
Cargo Package Management
Versioning in Golang

Special Guests: José Valim and Richard Feldman.