Stream: interviews

Topic: 645: The Roc programming language


view this post on Zulip Logbot (Jun 11 2025 at 16:30):

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

view this post on Zulip Dustin (Jun 12 2025 at 10:20):

The anonymous sum types is peak DevX

view this post on Zulip Ron Waldon-Howe (Jun 12 2025 at 22:30):

There's an RFC to get these into Rust: https://github.com/rust-lang/rfcs/issues/294
Take my money!

view this post on Zulip Tim Uckun (Jun 13 2025 at 04:06):

I am looking foward to listening to this.

view this post on Zulip Dustin (Jun 13 2025 at 10:54):

Untouched since August 2024 and originally opened in 2013 :sweat_smile:

view this post on Zulip Tim Uckun (Jun 17 2025 at 04:34):

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

view this post on Zulip Alex Barnes (Jun 17 2025 at 07:51):

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.

view this post on Zulip Tim Uckun (Jun 17 2025 at 21:19):

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