<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr" -->

---
title: A Preview of Roc 0.1.0 by Richard Feldman | daily.dev
description: Richard Feldman presents a preview of the Roc programming language ahead of its first numbered release, 0.1.0, at a Funkogram Sweden meetup. He demos a GUI...
canonical: https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: A Preview of Roc 0.1.0 by Richard Feldman | daily.dev
og:description: Richard Feldman presents a preview of the Roc programming language ahead of its first numbered release, 0.1.0, at a Funkogram Sweden meetup. He demos a GUI...
og:url: https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr
og:image: https://api.daily.dev/og/posts/8IiXBQNgR.png
og:image:alt: A Preview of Roc 0.1.0 by Richard Feldman
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# A Preview of Roc 0.1.0 by Richard Feldman

**[Lobsters](https://daily.dev/sources/lobsters)** · 63 min read · 1 upvotes · 0 comments

## Summary

Richard Feldman presents a preview of the Roc programming language ahead of its first numbered release, 0.1.0, at a Funkogram Sweden meetup. He demos a GUI robot-arm app with hot code loading, then walks through Roc's syntax: effectful vs pure functions marked by exclamation points and thick/thin arrows, the `?` operator for error propagation borrowed from Rust, anonymous structural tag unions for accumulating error types without upfront definitions, compile-time-verified JSON parsing via type inference, opportunistic mutation for performance while staying semantically immutable, and a sound type system. He compares Roc's approach to error handling and IO against Haskell, Go, and Rust, and outlines Roc's ambitions to compete with Go and Rust for servers, Swift/Kotlin/TypeScript for GUIs, and Python/Lua/Deno for scripting, while explicitly ruling out competing with systems languages on raw speed or with Python in data science.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://youtu.be/a7qEOtkkDb8>

## Questions this post answers

### What is the Roc programming language and what makes it different from other functional languages?

Roc is a functional programming language with the tagline fast, friendly, functional, aiming for fast compile and runtime speeds plus friendly tooling and error messages. It uses a thick arrow to mark effectful functions and thin arrow for pure ones, has a sound type system, anonymous structural tag unions for error types, and a Rust-style question mark operator for propagating errors without exceptions or null.

_Developers evaluating new functional languages can follow Roc's progress and design tradeoffs on daily.dev._

### How does Roc handle JSON parsing without runtime type errors like TypeScript does?

Roc's compiler performs type inference at compile time on how a parsed JSON value is used in the program, then generates a JSON.parse implementation based on that inferred shape. If the JSON's actual structure at runtime doesn't match what the program expects, it produces a structural parse error rather than an unsound silent type mismatch, unlike TypeScript which does not validate JSON.parse results against declared types.

_Anyone comparing JSON handling safety across languages can track approaches like this via daily.dev._

### When is Roc's first numbered 0.1.0 release expected and what is still missing before it ships?

Roc's first compiler commit dates back to January 2019, and the team is targeting the 0.1.0 numbered release before the end of 2026. Remaining work includes bug fixes, performance improvements for pathological compiler caching cases, and more documentation. Concurrency primitives, first-class effects testing, and an online playground are explicitly out of scope for 0.1.0.

_Developers tracking new language releases can follow Roc's 0.1.0 timeline and scope on daily.dev._

## Similar posts on daily.dev

- [One year of Roto, the compiled scripting language for Rust](https://daily.dev/posts/one-year-of-roto-the-compiled-scripting-language-for-rust-6ebjpupk9) · Lobsters · 3 upvotes · 0 comments
- [Why Rocq is better than Lean for program verification](https://daily.dev/posts/why-rocq-is-better-than-lean-for-program-verification-unloqbios) · Lobsters · 0 upvotes · 0 comments
- [Creator of OCaml: Functional Programming, Formal Verification, Programming Languages](https://daily.dev/posts/creator-of-ocaml-functional-programming-formal-verification-programming-languages-xiut59vvr) · The Developing Dev · 1 upvotes · 0 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#machine-learning](https://daily.dev/tags/machine-learning), [#rust](https://daily.dev/tags/rust), [#functional-programming](https://daily.dev/tags/functional-programming)

[View this post on daily.dev](https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"A Preview of Roc 0.1.0 by Richard Feldman","url":"https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr"},"datePublished":"2026-08-14T10:34:44.174Z","dateModified":"2026-09-13T18:31:40.420Z","description":"Richard Feldman presents a preview of the Roc programming language ahead of its first numbered release, 0.1.0, at a Funkogram Sweden meetup. He demos a GUI...","image":"https://i.ytimg.com/vi/a7qEOtkkDb8/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/a7qEOtkkDb8/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,machine-learning,rust,functional-programming","timeRequired":"PT63M","video":{"@type":"VideoObject","name":"A Preview of Roc 0.1.0 by Richard Feldman","description":"Richard Feldman presents a preview of the Roc programming language ahead of its first numbered release, 0.1.0, at a Funkogram Sweden meetup. He demos a GUI...","thumbnailUrl":"https://i.ytimg.com/vi/a7qEOtkkDb8/sddefault.jpg","uploadDate":"2026-08-14T10:34:44.174Z","duration":"PT63M","url":"https://api.daily.dev/r/8IiXBQNgR","embedUrl":"https://www.youtube.com/embed/a7qEOtkkDb8"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"A Preview of Roc 0.1.0 by Richard Feldman"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/a-preview-of-roc-0-1-0-by-richard-feldman-8iixbqngr#faq","mainEntity":[{"@type":"Question","name":"What is the Roc programming language and what makes it different from other functional languages?","acceptedAnswer":{"@type":"Answer","text":"Roc is a functional programming language with the tagline fast, friendly, functional, aiming for fast compile and runtime speeds plus friendly tooling and error messages. It uses a thick arrow to mark effectful functions and thin arrow for pure ones, has a sound type system, anonymous structural tag unions for error types, and a Rust-style question mark operator for propagating errors without exceptions or null. Developers evaluating new functional languages can follow Roc's progress and design tradeoffs on daily.dev."}},{"@type":"Question","name":"How does Roc handle JSON parsing without runtime type errors like TypeScript does?","acceptedAnswer":{"@type":"Answer","text":"Roc's compiler performs type inference at compile time on how a parsed JSON value is used in the program, then generates a JSON.parse implementation based on that inferred shape. If the JSON's actual structure at runtime doesn't match what the program expects, it produces a structural parse error rather than an unsound silent type mismatch, unlike TypeScript which does not validate JSON.parse results against declared types. Anyone comparing JSON handling safety across languages can track approaches like this via daily.dev."}},{"@type":"Question","name":"When is Roc's first numbered 0.1.0 release expected and what is still missing before it ships?","acceptedAnswer":{"@type":"Answer","text":"Roc's first compiler commit dates back to January 2019, and the team is targeting the 0.1.0 numbered release before the end of 2026. Remaining work includes bug fixes, performance improvements for pathological compiler caching cases, and more documentation. Concurrency primitives, first-class effects testing, and an online playground are explicitly out of scope for 0.1.0. Developers tracking new language releases can follow Roc's 0.1.0 timeline and scope on daily.dev."}}]}
```

