Jerod chats with Richard Feldman about Roc – his fast, friendly, functional language inspired by Richard's love of Elm. Roc takes many of Elm's ideas beyond the frontend and introduces some great ideas of its own. Get ready to learn about static dispatch, platforms vs applications, opportunistic mutation, purity inference, and a whole lot more. :link: https://changelog.fm/645
Ch | Start | Title | Runs |
---|---|---|---|
01 | 00:00 | This week on The Changelog | 01:12 |
02 | 01:12 | Sponsor: Retool | 01:59 |
03 | 03:11 | Start the show! | 04:37 |
04 | 07:48 | Elm | 05:37 |
05 | 13:25 | Evolution | 03:57 |
06 | 17:22 | Static dispatch | 07:28 |
07 | 24:50 | Not self-hosted | 03:58 |
08 | 28:48 | General purpose | 02:15 |
09 | 31:03 | Platforms and apps | 04:17 |
10 | 35:20 | Implementing platforms | 02:56 |
11 | 38:16 | Sponsor: Fly.io | 02:45 |
12 | 41:01 | Roc vs Go speed | 03:49 |
13 | 44:50 | Oportunistic mutation | 03:08 |
14 | 47:58 | ARC PTSD | 03:43 |
15 | 51:42 | Maybe no, Result yes | 08:53 |
16 | 1:00:34 | Purity inference | 04:15 |
17 | 1:04:49 | Purity overload | 03:42 |
18 | 1:08:30 | Distribution | 01:32 |
19 | 1:10:02 | Downsides | 06:00 |
20 | 1:16:02 | Sharing code | 03:10 |
21 | 1:19:12 | Versioning | 03:06 |
22 | 1:22:18 | Roc and LLMs | 02:16 |
23 | 1:24:33 | New lang optimism | 04:40 |
24 | 1:29:14 | Best Roc experience | 01:25 |
25 | 1:30:39 | Community | 00:40 |
26 | 1:31:19 | Now or later | 01:19 |
27 | 1:32:38 | Connecting | 00:22 |
28 | 1:33:00 | Strange Loop! | 00:44 |
29 | 1:33:44 | C'est la vie | 00:25 |
30 | 1:34:10 | Closing thoughts | 01:45 |
The anonymous sum types is peak DevX
There's an RFC to get these into Rust: https://github.com/rust-lang/rfcs/issues/294
Take my money!
I am looking foward to listening to this.
Untouched since August 2024 and originally opened in 2013 :sweat_smile:
I just got done listening to this episode and wow what a great set of ideas for a programming language. This is very close to what I would design if I designed a programming language. I wish him the best of luck and I hope he gets some help so we could have a numbered version ASAP.
A couple of notes.
Some of this works a lot like PL/PGSQL. You can override operators and functions in the same way in postgres. Postgres also has colored functions, lots of colors too! https://www.postgresql.org/docs/current/sql-createfunction.html. I always thought postgres was an interesting programming platform but that's another topic for another day.
I liked his idea of just being able to ship a file which lists URLs for deps and have the compiler fetch them for you but I don't think hashes in the URL are the way to go. Nobody will read the hashes correctly to make sure they have the right package and I could create a similar sounding domain with the same path and some random hash fool many people. A better way would be to use an immutable file system like IPFS.
I like the idea of being able to run downloaded scripts safely but that shouldn't require that I modify the file. I think by default it shouldn't be able to touch the filesystem or the network and I should be able to give it permission using env vars or a dotfile or CLI params for example
roc --allow-net=http --allow-path=/etc:rw some_script.roc
I was under the impression that it was the compiler that would check the hashes not the individual? A bit like go with go.sum but embeded in the code file instead.
The way I heard it the compiler does check the hash but you have to put it at the end of the url.
Last updated: Jun 28 2025 at 12:32 UTC