- Unison은 코드 정의를 이름이 아니라 내용(Hash) 으로 식별하는 구조를 기반으로, 코드 저장·버전 관리·배포 방식 전체를 새롭게 구성한 함수형 프로그래밍 언어
- 모든 코드는 텍스트 파일이 아닌 코드베이스(DB) 에 저장되며, 이름은 단순한 라벨로 취급되어 동일 이름/파일 충돌·리팩터링 충돌 같은 문제가 구조적으로 사라지는 형태
- UCM(Unison Codebase Manager)을 통해 정의 추가·삭제·이동·이름 변경·테스트·실행이 이뤄지며, LSP·UCM Desktop·Unison Share와 연결된 협업 도구 생태계가 제공됨
- Abilities 기반의 효과 시스템, 지연 계산, 구조적 패턴 매칭 등 언어 기능과 더불어, 동일 프로그램 안에서 애플리케이션 로직과 클라우드 배포(Cloud/BYOC) 를 함께 정의하는 통합 모델로 확장됨
- 해시 기반 구조 덕분에 중복 컴파일 제거·버전 충돌 감소·정적 참조 탐색 등이 기본 특성이 되며, Share·Cloud·Projects·Branch 시스템을 포함한 일관된 분산 개발 경험을 제공함
Unison 언어 개요
-
내용 기반 식별(content-addressable code) 구조로 정의를 관리해, 동일한 이름이라도 내용이 다르면 완전히 별개의 정의로 취급됨
- 재컴파일 불필요, API 진화 충돌 최소화, 완전한 참조 안정성
- 코드베이스는 SQLite 기반 DB 로 유지되며 코드·이름·문서가 모두 데이터로 저장됨
-
ls,view같은 UCM 명령으로 구조 탐색
-
- 텍스트 파일은 편집을 위한 인터페이스일 뿐, 실제 소스의 단일 진실은 DB
- 이름 충돌·파일 병합 충돌·리포 구조 관리는 전부 구식 개념으로 축소됨
언어 기능
- Abilities: IO, Exception 등의 효과를 타입 시스템으로 제어하는 기능
- 구조적 패턴 매칭: 타입을 구조적으로 분해해 제어 흐름 구성
- 지연 계산(Delayed computations): 비엄격 평가를 명시적으로 표현
- 강한 정적 타입 + 풍부한 타입 유추 + Kind-checking 제공
개발 환경 및 툴체인
-
UCM (Unison Codebase Manager)
- 정의 생성·삭제·이름 변경·테스트·실행
- 프로젝트·브랜치·클론·머지 등 Git 유사 버전 관리를 언어에 내장
-
UCM Desktop
- 코드베이스 구조 탐색, 클릭 기반 정의 이동, 문서 렌더링
-
LSP 지원
- 인기 있는 에디터 대부분에서 IDE 기능 사용 가능
-
Unison Share
- 중앙 코드 허브: 프로젝트 호스팅, 검색, 리뷰, 기여(=Pull Request), 타입 기반 검색
- 모든 정의가 hash 기반이기 때문에 참조는 항상 하이퍼링크처럼 이동 가능
배포 모델: Unison Cloud & BYOC
- 같은 언어로 애플리케이션 로직 + 인프라 정의까지 작성하고, 이를 곧바로 배포
- YAML, Helm, 복잡한 RPC 규약 없이 “코드”만으로 분산 시스템 구성
- BYOC(Bring Your Own Cloud)로 자체 컨테이너 인프라 위에서도 Cloud 스택 실행 가능
- OrderedTable 등 타입 안전 저장소, Daemon 지원, 자동 오케스트레이션 포함
예시: Guessing Game
- Abilities(IO, Exception)를 활용한 단순한 CLI 예제
- Random, console IO, 패턴 매칭, 지연 계산 등 언어 요소가 자연스럽게 결합된 형태
생태계 및 커뮤니티
- Share를 통한 기여·리뷰·조직 계정 지원
- 타입 기반 전체 에코시스템 검색, AI 에이전트를 위한 MCP 서버 제공
- 점진적으로 C FFI 작업 진행 중
- Git-style diff 뷰어, 브랜치 주석 등 협업 생산성 기능 확장
주요 역사(요약)
- 2018: Unison Computing 설립
- 2019: 첫 알파 릴리즈
- 2021: 코드베이스를 SQLite로 전환 (100x 축소)
- 2021: Unison Share 공개
- 2022~2024: LSP, Projects, Kind-checking, Pull Request, Cloud GA
- 2025: Desktop App, 대규모 런타임 최적화, MCP 서버, BYOC 지원
- 2025 Nov: Unison 1.0 정식 릴리즈
FAQ
- 왜 새로운 언어인가?
- 해시 기반 코드 모델은 기존 언어에 애드온 형태로 이식하기 불가능에 가까움
- 코드 저장·버전 관리·배포·협업 방식이 모두 이 아이디어에서 자연스럽게 파생되기 때문에, 처음부터 새 언어로 설계할 필요가 있었음
- 실제 사용 사례?
- Unison Cloud 전체가 Unison 자체로 작성되어 운영 중
- 조직·팀 단위 협업과 분산 애플리케이션 개발을 위한 상용 수준 워크플로 구성
- 벤더 종속성 우려: 오픈소스 언어로, Docker 등으로 자유롭게 배포 가능하며 BYOC 지원
- 협업 방식: 조직, 티켓, 코드 리뷰, PR 등 지원하며, 정의 단위 충돌만 발생
- 버전 관리: Git 없이 자체 프로젝트·브랜치·푸시·풀·머지 기능 제공
- IDE 제약 없음: LSP 서버 제공으로 다양한 에디터 사용 가능
- 타 언어 연동: C FFI 개발 중
- 파일 없는 코드베이스 접근: CLI(UCM) 명령 또는 Desktop 앱으로 구조 탐색 가능