Cette page est affichée en anglais. Une traduction française est en cours.
ConfigsMay 19, 2026·3 min de lecture

Unison — A Content-Addressed Programming Language

Unison is a statically typed functional programming language where code is stored as a content-addressed hash tree, eliminating dependency conflicts, enabling seamless distributed computing, and making refactoring trivial.

Prêt pour agents

Cet actif peut être lu et installé directement par les agents

TokRepo expose une commande CLI universelle, un contrat d'installation, le metadata JSON, un plan selon l'adaptateur et le contenu raw pour aider les agents à juger l'adaptation, le risque et les prochaines actions.

Needs Confirmation · 64/100Policy : confirmer
Surface agent
Tout agent MCP/CLI
Type
Skill
Installation
Single
Confiance
Confiance : Established
Point d'entrée
Unison Language
Commande CLI universelle
npx tokrepo install f24282ac-5339-11f1-9bc6-00163e2b0d79

Introduction

Unison is a functional programming language that takes a fundamentally different approach to code management. Instead of storing code as text files, Unison identifies every definition by the hash of its syntax tree. This means renaming a function does not break dependents, dependency conflicts cannot exist, and code can be trivially shared or executed across distributed nodes.

What Unison Does

  • Stores code in a content-addressed codebase where definitions are identified by hash, not name
  • Eliminates dependency hell because two versions of the same library can coexist without conflict
  • Provides built-in support for distributed computing via its Abilities system (algebraic effects)
  • Includes the Unison Codebase Manager (UCM) for browsing, editing, and sharing code
  • Supports structural typing and pattern matching with a Haskell-inspired syntax

Architecture Overview

The Unison Codebase Manager (UCM) is the central development tool. When you write Unison code in a scratch file, UCM watches for changes, typechecks the definitions, and stores them in a local SQLite-backed codebase keyed by content hash. Names are metadata attached to hashes, not identifiers. The runtime compiles Unison to an intermediate representation that runs on a custom virtual machine. The Abilities system (similar to algebraic effects) allows pure expression of side effects that can be interpreted differently in tests vs. production.

Self-Hosting & Configuration

  • Download the UCM binary from the official releases for Linux, macOS, or Windows
  • The codebase is stored locally in ~/.unison by default
  • Pull libraries from Unison Share (share.unison-lang.org), the community package hub
  • Use ucm commands to create namespaces, push/pull code, and run tests
  • Scratch files (.u extension) are watched by UCM and typechecked on save

Key Features

  • Content-addressed storage makes all refactors (renames, moves) perfectly safe
  • Abilities system provides typed, composable effect handling without monads
  • Built-in test framework with test> watch expressions that run on save
  • Distributed computing primitives let you describe computations that span multiple nodes
  • Unison Share enables publishing and discovering libraries with no version conflicts

Comparison with Similar Tools

  • Haskell — similar syntax and type system, but Haskell uses traditional file-based modules; Unison's hash-based storage eliminates breakage from renames
  • Erlang/Elixir — strong in distribution; Unison adds content-addressing and a typed effect system
  • Scala — JVM functional language; Unison has a lighter runtime and novel codebase model
  • Darcs — a VCS with patch theory; Unison applies similar ideas at the code-definition level rather than file level

FAQ

Q: Where is the source code stored if not in files? A: Definitions live in a content-addressed SQLite codebase. You write in scratch .u files, but UCM parses them and stores the hashed AST. Names are just metadata pointers to hashes.

Q: Can I use Unison for production applications? A: Unison is maturing but still evolving. It is best suited for exploratory projects, distributed computing experiments, and developers interested in next-generation language design.

Q: How do I share Unison code with others? A: Push your namespace to Unison Share with push in UCM. Others pull it into their codebase. Since code is content-addressed, there are no version conflicts.

Q: Does Unison have an IDE? A: UCM is the primary interface. Editor plugins for VS Code provide syntax highlighting. The language server protocol (LSP) support is in development.

Sources

Fil de discussion

Connectez-vous pour rejoindre la discussion.
Aucun commentaire pour l'instant. Soyez le premier à partager votre avis.

Actifs similaires