Skip to content
0:00 / 0:00

#unison#content-addressedcode#algebraiceffects

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference

88K subscribers • 106 videos on Hallway • Conference channel

YouTube
  • Recommended by 9 people: 7 on Hacker News, 1 on Lobsters and 1 in engineering communities.
  • A classic. People kept recommending it from 2020 to 2026.
  • Presented by Paul Chiusano

Intermediate. Assumes working knowledge.

44K views7 years ago9 recommendations

Programming languagesDistributed systemsLanguage design and type systemsConcurrency and parallelism

Paul Chiusano introduces Unison, a functional programming language featuring content-addressed code and built-in support for distributed systems.

Unison is an open source functional programming language with special support for building distributed, elastic systems. It began as an experiment: rethink all aspects of the programming experience, including the core language, runtime, tooling, as well as code versioning and publishing, and then do whatever is necessary to eliminate needless complexity and make building software once again delightful, or at the very least, reasonable. We're used to thinking of a program as a thing that describes what a single OS process will do, and then using a separate layer of technologies outside of our programming languages to "configure" many separate programs into a single distributed, elastic "system". This gets complicated. The core language of Unison starts with the premise that no matter how many nodes a computation occupies, it should be expressible via a single program, not many separate programs. Unison programs can describe their own deployment, elastically scale and orchestrate themselves, and deploy themselves in parallel onto any number of nodes for execution. This talk introduces the Unison language and its tooling and shows what it can be like to program systems of any size with this model of computing. Paul Chiusano Unison Computing @pchiusano Paul Chiusano started the research that led to the Unison language and is a cofounder of Unison Computing, a public benefit corp. He has over a decade of experience with purely functional programming in Haskell and Scala and coauthored the book Functional Programming in Scala. He lives and works in Somerville, MA.

Why it's here

9 people recommend this

What people say. Recommended as the clearest introduction to Unison, explaining how content-addressed code simplifies distributed systems and codebase management.

Moments people linked to

u/vnjxkin r/ProgrammingLanguages • Recommends

Using hashes to store similar functions and how to do it? Hello First of what I'm going to talk about is inspired by this: [video It's a pretty long (but interesting!) video but the summery is that they used hashing to save procedures directly into the AST, instead of their names. (and it had all sorts of benefits) now this idea gave me an inspiration to create a language that expands on this, one that would know to search similar code and suggest libraries, that will hook stackoverflow questions to in their abstract form and allow to you to implement suggested solutions with a click, and other way over my head features. Now to do this I ran some conceptual comparisons and hit a roadb…

reggiebandon Hacker News • Recommends

On “The Unison language”

…tine like call and that entire process just happens in the background either on a separate thread or even scheduled to an entirely different machine in a cluster. You could then memoize that process such that the result of running repo-hash-url against data-hash-url is cached. e.g. I have link run against link and store the result at link 1. link to this video…

umvion Hacker News • Recommends

On “Unison Programming Language”

I had a really hard time wrapping my mind around this just reading the website alone. If you are in the same boat, watch the first 10 minutes of this video at 1.5x speed: link to this video and it will make so, so much more sense. ...and if you are like me you'll probably need to read this twitter thread to get the answer to your #1 question: link Basically the core idea (or one of the core ideas) is instead of a function (like fib(n) which returns nth Fibonacci number) being identified by its name (fib) as is the case with most traditional languages, it's instead identified by a hash of its implementation.

dietr1chon Hacker News • Recommends

On “A look at Unison: a revolutionary programming language”

Looking at the comments it seems that this talk might be a better introduction than just skimming at the landing page. link to this video I watched that in 2020 or so and got amazed at how much a seemingly simple idea could work it's way into the core of a language. What I recall is this, The main new idea is turning codebases into a content-addressed store, this needs some new tooling, but makes a couple of interesting things possible, * Having different versions of the "same" function. They are actually different functions anyway, so you can do things like partial library upgrades when there's breaking changes. Large migrations like python 2 to 3 wouldn't take O(10yr). * Formatting is not a thing any…

dunyakirkalion Lobsters • Recommends

Unison: a new distributed programming language

j1mr10rd4non Hacker News • Recommends

On “Deno Is a Browser for Code”

I was just racking my memory and searching through my library of interesting links to find exactly this! Paul Chiusano gave a nice introductory talk at strangeloop last year: link to this video

nerdponxon Hacker News • Recommends

On “Semantic Versioning Will Not Save You”

Not necessarily the same thing, but have you looked into the Unison project at all? Unison is an open source functional programming language based on a simple idea with big implications: code is content-addressed and immutable. Homepage: link Strange Loop talk: link to this video

sullyj3on Hacker News • Recommends

On “Defunctionalization: Everybody does it, nobody talks about it (2019)”

…g those functions, which is not easy to do safely or efficiently. This is exactly what Unison is designed to do. Code is not stored as text, but is stored in a serialized AST form and identified by hash. Therefore, transmission between nodes is trivial. The language is still a work in progress, but it's making rapid strides. Here's an explanation: link to this video The part relevant to distributed computation is at 30:08, but the earlier parts go through the basics of how code is stored, and why this design choice was made, which might help with understanding what's going on.…

nimoson Hacker News • Recommends

On “Unison Language and Platform Roadmap”

link to this video This video is a little old but I remember finding it really interesting and I think dives into it a bit.

u/vplattin r/ProgrammingLanguages • Mentions

On “Unison: A Friendly Programming Language from the Future • Runar Bjarnason”

This talk is a bit older, but goes over the benefits pretty well: link to this video This is really some next level stuff. It really does feel futuristic. I'm left with some questions of course, but I'm really curious how or even if they support FFI. Like, how would I integrate to SDL to write a game? Or how would we use it with an existing Postgresql or Oracle database; or even sqllite? Or to gecode to write CP solvers? Etc.

u/Silly-Freakin r/ProgrammingLanguages • Mentions

On “Should entities (types; functions; variables) in a package be versioned independently from each other? Is it feasible to do it? How else can we handle partial changes in modules that don't affect the entities we use?”

Unison could interest you. Its definitions are content addressed, which means that if you change some code, the hash by which it is identified and by which it must be referenced changes; if the code stays the same, the hash stays the same. This is transitive, so the hash of consumer code changes automatically when it references a new version of some dependency. It seems like this approach would require rather deep integration into the language's foundation, but it's definitely a source for inspiration for the problem you're describing.

u/GoldtoothFourin r/ProgrammingLanguages • Mentions

On “Giving Unison a go: is this the programming language of the future?”

That's answered in this StrangeLoop talk.
6View on Reddit

tracnaron Hacker News • Mentions

On “The Unison language”

There's an example in this talk: link to this video Basically you can quote code (like in Lisp) and pass it to an executor (thread, remote server, ...). The main difference is that thanks to the immutability, you can also have a protocol which shares efficiently all the dependencies required to execute the code (like a git pull). It also uses an effect system, so the implementation does not need to decide which executor to use, it only uses an interface called an "ability", and the caller can choose the implementation.

sullyj3on Hacker News • Mentions

On “Maybe visual programming is the answer, maybe not”

> Why can't methods (for instance) get displayed as convenient, without worrying about where they are in the file? This is something unison is playing with with their codebase manager. link to this video

infogulchon Hacker News • Mentions

On “Effective Concurrency with Algebraic Effects in Multicore OCaml”

…ng that all our problems are solved and the programming world will now be rainbows and butterflies, I'm just saying that this feature is the correct framing and abstraction for issues we've run into many times in the past, and it has the potential to greatly simplify and unify the hacky, bespoke, situational solutions we've found. 0: link 1: link to this video…