unisonweb / unison
git clone https://github.com/unisonweb/unison.git
release/1.5.0 · 20d ago
🔥 on GitHub Trending today
Unison is a statically-typed functional programming language that identifies functions by content hash and stores code as ASTs in a database.
Why you might care
Suited to developers curious about content-addressed code: it offers near-instant incremental compilation, non-breaking renames, cached tests, and semantic version control that avoids formatting-related merge conflicts. It can also be used with Unison Cloud for distributed systems.
+2
stars, 24h · #13,215
+~7
stars, 7 days · #16,866
+~30
stars, 30 days · #20,525
6.8k
★ total · +0% this week
314
forks · 1.3k open issues
Star history (as recorded here)
LanguageHaskell
License—
Created2015-05-06 (11y ago)
Last pushtoday
Watchers100
OwnerOrganization
Seen on GitHub Trending
- 2026-10-23 — #9 daily in haskell · +2 ★
GitHub topics
Links
- GitHub: github.com/unisonweb/unison
- Homepage: https://unison-lang.org
- Releases · Issues · Hacker News mentions
README excerpt
The Unison language =================== * Overview * Building using Stack * Language Server Protocol (LSP) * Codebase Server * Configuration Overview -------- Unison is a statically-typed functional language with type inference, an effect system, and advanced tooling. It is based around a big idea of content-addressed code, in which function are identified by a hash of their implementation rather than by name, and code is stored as its AST in a database. This provides a number of benefits: * No builds. Unison has perfect incremental compilation, with a shared compilation cache that is part of the codebase format. Despite the strong static typing, you are almost never waiting for code to compile. * Instant, non-breaking renaming of definitions. * Perfect caching of tests, only rerunning determinstic tests if dependencies changed. * Semantically-aware version control, avoiding spurious merge conflicts from things like order of imports, whitespace or code formatting differences, and so on. Unison can be used like any other general-purpose language, or you can use it in conjunction with Unison Cloud for building distributed systems. Here is some sample code: [code] Functions arguments are separated by spaces instead of parens and commas. Loops are written using recursion (above the helper function `go` defines a loop). The language supports pattern matching via `match with `, which works for lists and also user-defined data types. Other resources: * Learn about the big idea behind Unison * Check out the project website * Say hello or lurk in the Discord chat * Explore the Unison ecosystem * Learn Unison Building using Stack -------------------- If these instructions don't work for you or are incomplete, please file an issue. The build uses Stack. If you don't already have it installed, follow the install instructions for your platform. (Hint: `brew update && brew install stack`) [code] To run the Unison Local UI while building from source, you can use the `/dev-ui-install.sh` script. It will download the latest release of unison-local-ui and put it in the expected location for the unison executable created by `stack build`. When you start unison, you'll see a url where Unison Local UI is running. See `development.md` for how to build, run, test and check the code. Language Server Protocol (LSP) ------------------------------ View Language Server setup instructions here. AI Agent Server (MCP) ---------------------- View AI Agent Server setup instructions here. Codebase Server --------------- When `ucm` starts it starts a Codebase web server that is used by the Unison Local UI. It selects a random port and a unique token that must be used when starting the UI to correctly connect to the server. The port, host and token can all be configured by providing environment variables when starting `ucm`: `UCM_PORT`, `UCM_HOST`, and `UCM_TOKEN`. Configuration ------------- See the documentation for configuration here
Blurb generated by claude-haiku-5-5 today. Star deltas marked ~ are extrapolated from partial history.