10 puan yazan GN⁺ 2025-11-27 | 1 yorum | WhatsApp'ta paylaş
  • Unison, kod tanımlarını isimle değil içerikle (hash) tanımlayan bir yapı üzerine kurulu, kod depolama, sürüm yönetimi ve dağıtımın tamamını yeniden kurgulayan bir fonksiyonel programlama dili
  • Tüm kod, metin dosyaları yerine bir codebase (DB) içinde saklanır; isimler yalnızca etiket olarak ele alınır ve bu sayede aynı isim/dosya çakışmaları ile refactoring çakışmaları yapısal olarak ortadan kalkar
  • UCM (Unison Codebase Manager) üzerinden tanım ekleme, silme, taşıma, yeniden adlandırma, test etme ve çalıştırma yapılır; LSP, UCM Desktop ve Unison Share ile bağlantılı bir iş birliği araçları ekosistemi sunulur
  • Abilities tabanlı etki sistemi, ertelenmiş hesaplama ve yapısal pattern matching gibi dil özelliklerinin yanı sıra, aynı program içinde uygulama mantığı ile bulut dağıtımını (Cloud/BYOC) birlikte tanımlayan birleşik bir modele genişler
  • Hash tabanlı yapı sayesinde yinelenen derlemelerin kaldırılması, sürüm çakışmalarının azaltılması ve statik referans keşfi temel özellikler haline gelir; Share, Cloud, Projects ve Branch sistemiyle tutarlı bir dağıtık geliştirme deneyimi sunar

Unison diline genel bakış

  • Tanımlar, içerik tabanlı kimliklendirme (content-addressable code) ile yönetilir; aynı isim kullanılsa bile içerik farklıysa tamamen ayrı tanımlar olarak kabul edilir
    • Yeniden derleme gerekmez, API evrimi sırasında çatışmalar en aza iner, referans kararlılığı tamdır
  • Codebase, SQLite tabanlı bir DB olarak tutulur; kod, isimler ve dokümantasyonun tamamı veri olarak saklanır
    • Yapı, ls, view gibi UCM komutlarıyla gezilebilir
  • Metin dosyaları yalnızca düzenleme arayüzüdür; gerçek kaynağın tek doğrusu DB'dir
    • İsim çakışmaları, dosya birleştirme çakışmaları ve repo yapısı yönetimi artık eski kavramlara indirgenir

Dil özellikleri

  • Abilities: IO, Exception gibi etkileri tür sistemiyle denetleyen özellik
  • Yapısal pattern matching: Türleri yapısal olarak ayrıştırarak kontrol akışını kurma
  • Ertelenmiş hesaplama (Delayed computations): strict olmayan değerlendirmeyi açıkça ifade etme
  • Güçlü statik tür sistemi + zengin tür çıkarımı + Kind-checking

Geliştirme ortamı ve araç zinciri

  • UCM (Unison Codebase Manager)
    • Tanım oluşturma, silme, yeniden adlandırma, test etme, çalıştırma
    • Proje, branch, clone, merge gibi Git benzeri sürüm yönetimini dilin içine yerleşik olarak sunar
  • UCM Desktop
    • Codebase yapısını gezme, tıklama tabanlı tanımlar arası geçiş, doküman render etme
  • LSP desteği
    • Çoğu popüler editörde IDE özellikleri kullanılabilir
  • Unison Share
    • Merkezi kod merkezi: proje barındırma, arama, review, katkı (=Pull Request), tür tabanlı arama
    • Tüm tanımlar hash tabanlı olduğu için referanslar her zaman bir hyperlink gibi izlenebilir

Dağıtım modeli: Unison Cloud & BYOC

  • Aynı dille uygulama mantığı + altyapı tanımı yazılır ve doğrudan dağıtılır
  • YAML, Helm veya karmaşık RPC sözleşmeleri olmadan yalnızca “kod” ile dağıtık sistem kurma
  • BYOC (Bring Your Own Cloud) ile kendi container altyapınız üzerinde de Cloud stack çalıştırılabilir
  • OrderedTable gibi tür güvenli depolama, Daemon desteği ve otomatik orkestrasyon içerir

Örnek: Guessing Game

  • Abilities (IO, Exception) kullanan basit bir CLI örneği
  • Random, console IO, pattern matching ve ertelenmiş hesaplama gibi dil öğeleri doğal biçimde birleşir

Ekosistem ve topluluk

  • Share üzerinden katkı, review ve organizasyon hesabı desteği
  • Tür tabanlı tüm ekosistemde arama, yapay zeka ajanları için MCP sunucusu
  • C FFI üzerinde aşamalı çalışma sürüyor
  • Git tarzı diff görüntüleyici, branch açıklamaları gibi iş birliği verimliliği özellikleri genişliyor

Başlıca tarihçe (özet)

  • 2018: Unison Computing kuruldu
  • 2019: İlk alfa sürümü
  • 2021: Codebase SQLite'a geçirildi (100x küçülme)
  • 2021: Unison Share yayınlandı
  • 2022~2024: LSP, Projects, Kind-checking, Pull Request, Cloud GA
  • 2025: Desktop App, büyük ölçekli runtime optimizasyonları, MCP sunucusu, BYOC desteği
  • 2025 Kasım: Unison 1.0 kararlı sürümü yayımlandı

SSS

  • Neden yeni bir dil?
    • Hash tabanlı kod modeli, mevcut dillere eklenti şeklinde taşınması neredeyse imkânsız bir yaklaşım
    • Kod depolama, sürüm yönetimi, dağıtım ve iş birliği biçimleri bu fikirden doğal olarak türediği için en baştan yeni bir dil olarak tasarlanması gerekti
  • Gerçek kullanım örnekleri?
    • Unison Cloud'un tamamı Unison'ın kendisiyle yazılmış durumda ve çalışıyor
    • Organizasyon ve ekip düzeyinde iş birliği ile dağıtık uygulama geliştirme için ticari düzeyde workflow sunuyor
  • Vendor lock-in endişesi: Açık kaynak bir dil; Docker vb. ile serbestçe dağıtılabilir ve BYOC desteklenir
  • İş birliği modeli: Organizasyon, ticket, code review, PR vb. desteklenir; yalnızca tanım düzeyinde çakışmalar oluşur
  • Sürüm yönetimi: Git olmadan kendi proje, branch, push, pull ve merge özelliklerini sunar
  • IDE kısıtı yok: LSP sunucusu sayesinde farklı editörler kullanılabilir
  • Diğer dillerle entegrasyon: C FFI geliştiriliyor
  • Dosyasız codebase erişimi: Yapı CLI (UCM) komutları veya Desktop uygulamasıyla gezilebilir

1 yorum

 
GN⁺ 2025-11-27
Hacker News görüşleri
  • Unison’ı çok uzun zamandır takip ediyorum. Paul’ün kişisel blog günlerinden beri; yani 10 yılı geçti bile. Bu 1.0 sürümü gerçekten büyük bir dönüm noktası, ama dürüst olmak gerekirse biraz hayal kırıklığı da yaratıyor
    Programlama dillerini gerçekten seviyorum; Rust, Go, Zig gibi dillerin büyümesini de izledim, ama Unison’ın bu olgunluk seviyesine rağmen ekosistem yayılımı zayıf gibi geliyor
    Bence bunun nedeni, özelliklerin çoğunun buluta bağımlı tasarlanmış bir iş modeline dayanması. BYOC seçeneği var ama yeterli değil. Genel hava biraz uyumsuz geliyor

    • Zig, Rust, Go ile karşılaştırılmasına katılmıyorum. Unison, Abilities ya da veritabanı tabanlı kod yapısı gibi “yeni ve tuhaf” fikirleri çok erken harcıyor
      Share projesi açık kaynak ve GitHub’ın da fiili bağımlılıkları var ama hâlâ popüler.
      Bunu inkâr etmeye çalışmıyorum; sadece insanların bunu bizzat deneyip başka dil tasarımlarına da katkı sağlayabilecek yanlarını görmesini isterim
    • Bence Unison’ın sorunu FFI eksikliği. Hatta iş tarafına odaklanmak iyi bir strateji. Para kazanmak, kullanıcılar için önemli özelliklere odaklanmayı sağlar ve insanı önemsiz tartışmalara saplanmaktan korur
    • Ben de katılıyorum. İnternet kesilse bile yerel işbirliği yapılabilen bir sistem kurmak istiyorum ve hash tabanlı fonksiyon yapısı buna tam uyuyor.
      Ama öğrenme materyallerinin çoğu bulut altyapısı kullanımını varsayıyor, bu yüzden çevrimdışı ortamda ilerlemek zorlaşıyor.
      Belki Unison usulü bir yaklaşım vardır ama pazarlama katmanı o yolu gölgeliyor
    • Ticari bir yönünün olması bana aksine sevindirici geliyor. Doğru yapılırsa daha fazla zaman ayrılıp sürdürülebilir gelişim sağlanabilir.
      Ücretli kullanıcılar olduğunda, teknolojinin gerçekçi ve pratik kalması için bir motivasyon oluşur.
      Ticari unsur olmasaydı, bana sadece bir başka esolang gibi gelirdi. Artık bunu yan projelerimden birinde denemeyi düşünüyorum
    • Temel fikirler harika, ama kod dağıtımı ya da içe aktarma sadece bulut platformu üzerinden mümkünse muhtemelen kullanmam.
      Belgelerde Unison Share’den söz ediliyor ve bu da unison-lang.org üzerinde barındırılıyor.
      BYOC seçeneği var ama yine de unison.cloud hesabı ve abonelik gerekiyor. Keşke pazarlama ve dokümantasyonda bunlar daha açık belirtilse
  • Merhaba, ben Unison dilinin ortak yaratıcılarından biriyim. Aklınıza takılan ne varsa sorabilirsiniz

    • Unison’ı uzun zamandır takip ediyorum, sürüm için tebrikler!
      Unison, algebraic effects (Abilities) özelliğini ana özelliklerinden biri olarak öne çıkaran ilk dillerden biriydi.
      Başta bunun ne kadar iyi karşılanacağından emin olmadığınızı hatırlıyorum; şimdi bundan memnun musunuz merak ediyorum.
      Etki sisteminin dilin diğer kısımlarıyla iyi bütünleşip bütünleşmediğini, sözdizimini sevip sevmediğinizi ve iç uygulamaya dair ilginç hikâyeleri de duymak isterim
      İlgili doküman: Unison Abilities
    • Test çalıştırma sonuçlarını önbelleğe alırken pratikte tam olarak hangi verileri sakladığınızı merak ediyorum.
      Sadece ifadenin hash’i ve “passed” değeri mi saklanıyor, yoksa tüm değerlerin hash’ini hesaplamak da mümkün mü?
      Eğer ikincisiyse, Nix ya da Trustix benzeri yeniden üretilebilir derlemeler daha da genişletilebilir gibi görünüyor.
      Muhtemelen mevcut önbellekleme yalnızca bağlanmış ifadeleri kapsıyordur, ama çalışma zamanında dış dünyaya açılan bir köprü işlevi de görebilir gibi duruyor
    • Sürüm için tebrikler! Unison’ın hash tabanlı tanımlar kavramı gerçekten yenilikçi.
      Ama şu an biraz probleme çözüm arayan bir çözüm gibi hissettiriyor.
      Bu dil kime hitap ediyor ve Unison Cloud dışında bunu gerçekten prodüksiyonda kullanan yerler var mı, merak ediyorum
    • Gerçekten harika bir proje. Ama content-addressed language kavramını hâlâ tam olarak kavrayabilmiş değilim.
      İlk bakışta BEAM tabanlı bir dil sanmıştım ama kendi VM’i üzerinde çalışıyor.
      BEAM dilleriyle karşılaştırıldığında fault tolerance açısından farkı nedir ve Unison hangi kullanım senaryolarına daha uygun olur, merak ediyorum
    • OrderedTable, Table gibi kalıcılık primitiflerinin içeride nasıl uygulandığını merak ediyorum.
      Dış bir veritabanını mı çağırıyorlar, yoksa tamamen Unison içinde mi uygulanmışlar, bilmek isterim.
      Database soyutlamasıyla birlikte düşününce çok ilginç bir birleşim ama kavramı tamamen anlamak kolay değil
  • Bana göre Unison, en ilginç dillerden biri.
    algebraic effects’in yeni neslin temel kavramlarından biri olacağına inanıyorum.
    Unison’ın bunun dışında da pek çok harika fikri var.
    Kişisel olarak oyun mod geliştirme için de uygun olabileceğini düşünüyorum.
    İstemci tarafında güvenilmeyen kod çalıştırmanız gerektiğinde, Unison’ın ability sistemi sayesinde kolayca sandbox ortamı kurulabilir gibi görünüyor.
    Ayrıca ECS(Entity Component System) uygulamaları için de yararlı olabilir.
    Eğer bir fonksiyonun hangi yeteneklere ihtiyaç duyduğu çıkarımlanabiliyorsa, paralel çalıştırma güvenliği otomatik olarak sağlanabilir

    • Unison Cloud’da gerçekten bu tür sandbox doğrulaması yapılıyor.
      Cloud’da IO ability doğrudan kullanılamıyor; onun yerine güvenli biçimde denetlenen Http ability gibi şeylere izin veriliyor.
      Böylece kullanıcılar dosya sistemine erişemiyor.
      Ben de bu özelliği oyun geliştirmede kullanmayı düşünüyorum.
      Başka kullanıcılar da native service olarak ability uygulayıp oyuna katkı sunabilir.
      İlgili bağlantılar: Unison Cloud, validateSandboxed kodu, ECS örneği
  • Bu projeyi ilk gördüğümde “5 yıl sonra acaba ne olacak” diye düşünmüştüm ve gerçekten o kadar zaman geçti.
    Şimdi 1.0 sürümünü görmek beni gerçekten mutlu ediyor

  • Böyle radikal bir dili gerçek endüstri ortamlarında da kullanılabilir hâle getirmek büyük bir başarı. Tebrikler

  • Ben Unison gibi sistemlerin bilişimin geleceği olduğunu düşünüyorum.
    Ama bu geleceğin ne zaman geleceğini bilmiyorum.
    Böyle sistemlerin güzelliği; altyapı, veri ve servis katmanlarını tek ve birleşik bir sistem içinde toplaması.
    Belki de AI kodlama ajanları için daha iyi bir temel olabilir.
    Yine de bunun VC modelinden ziyade sürdürülebilir bağımsız geliştirme yaklaşımına daha uygun olduğunu düşünüyorum.
    Bu kadar uzun vadeli bir projeyi sürdürmeye devam eden ekip gerçekten etkileyici

  • Rúnar’ın Unison’a başlayacağını söylediği günü hatırlıyorum.
    Bunun bambaşka bir paradigmanın kapısını açan bir proje olduğunu düşünmüştüm; şimdi 1.0 sürümünü görünce gerçekten gurur duyuyorum.
    Umarım bir gün Unison benim ana dilim olur

  • Unison web sitesinde benchmark olmasını isterdim.
    Performans karakteristiklerini bilmek, ne tür işler için uygun olduğunu anlamaya yardımcı olur.
    Django, Express.js, ASP.NET ile istek işleme hızı karşılaştırmaları gibi basit sayılar bile faydalı olurdu.
    Fikirler ilginç ama web dışı çalışma zamanı hedeflerinin de gelmesini isterim.
    Kişisel olarak yeni bir dili büyük web projelerinden çok CLI araçları gibi alanlarda denemek daha kolay geliyor

  • 2023’te yayımlanan Unison inceleme yazısına baktım; epey yardımcı oldu

  • Fikirler ilginç ama Unison, dil + kaynak yönetimi + barındırma bileşenlerini aynı anda benimsemeyi gerektiren hepsi bir arada bir yapı sunuyor.
    Yığının tek bir parçası bile hoşunuza gitmezse tümünü kullanmak zorlaşıyor.
    Bu yüzden bu fikirlerin doğrudan yaygınlaşması zor olabilir gibi geliyor

    • Unison kademeli olarak benimsenebilir.
      Dilin kendi araç kalitesi çok yüksek ve mevcut sistemlerle entegrasyon da mümkün.
      Örneğin Unison Cloud’un çoğu Unison ile yazılmış olsa da bazı kısımlarında Haskell kullanılıyor.
      İlgili tartışmalar: HN başlığı 1, HN başlığı 2
      Birden fazla teknolojiyi organik biçimde tasarlayıp birlikte iyi çalışır hâle getirmekte büyük değer olduğunu düşünüyorum
    • Ticari olarak başarıya ulaşıp ulaşmamasından çok, bu projenin ortaya koyduğu bilgisayar bilimi araştırma değerinin başlı başına daha ilginç bir ölçüt olduğunu düşünüyorum