10 पॉइंट द्वारा GN⁺ 2025-11-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Unison एक functional programming language है, जो कोड की परिभाषाओं को नाम से नहीं बल्कि content (Hash) से पहचानने वाली संरचना पर आधारित है, और कोड स्टोरेज, version control तथा deployment के पूरे तरीके को नए सिरे से संगठित करती है
  • सारा कोड टेक्स्ट फ़ाइलों में नहीं बल्कि codebase (DB) में स्टोर होता है, और नामों को केवल लेबल की तरह माना जाता है, इसलिए एक ही नाम/फ़ाइल टकराव और refactoring conflict जैसी समस्याएँ संरचनात्मक रूप से समाप्त हो जाती हैं
  • UCM (Unison Codebase Manager) के माध्यम से definitions जोड़ना, हटाना, स्थानांतरित करना, rename करना, test करना और run करना किया जाता है, और LSP, UCM Desktop तथा Unison Share से जुड़ा collaboration tools ecosystem उपलब्ध कराया जाता है
  • Abilities आधारित effect system, delayed computations, structural pattern matching जैसी language features के साथ यह एक ऐसे integrated model तक विस्तृत होता है जिसमें एक ही प्रोग्राम के भीतर application logic और cloud deployment (Cloud/BYOC) दोनों को साथ परिभाषित किया जा सकता है
  • hash-आधारित संरचना की वजह से duplicate compilation का हटना, version conflict में कमी, static reference navigation जैसी चीज़ें इसकी मूल विशेषताएँ बन जाती हैं, और Share, Cloud, Projects तथा Branch system सहित एकसमान distributed development experience प्रदान किया जाता है

Unison भाषा का अवलोकन

  • content-addressable code संरचना के ज़रिए definitions को प्रबंधित किया जाता है, इसलिए एक ही नाम होने पर भी अगर content अलग है तो उसे पूरी तरह अलग definition माना जाता है
    • दोबारा compile करने की ज़रूरत नहीं, API evolution conflict न्यूनतम, और पूर्ण reference stability
  • codebase को SQLite-आधारित DB के रूप में रखा जाता है, और code, name तथा documentation सभी data के रूप में स्टोर होते हैं
    • ls, view जैसे UCM commands से संरचना को explore किया जा सकता है
  • टेक्स्ट फ़ाइलें केवल editing interface हैं; वास्तविक source of truth केवल DB है
    • name conflict, file merge conflict और repo structure management जैसी बातें पुरानी अवधारणाओं तक सीमित हो जाती हैं

भाषा की विशेषताएँ

  • Abilities: IO, Exception आदि effects को type system के माध्यम से नियंत्रित करने की क्षमता
  • structural pattern matching: types को संरचनात्मक रूप से तोड़कर control flow बनाना
  • delayed computations: non-strict evaluation को स्पष्ट रूप से व्यक्त करना
  • मजबूत static typing + समृद्ध type inference + kind-checking

डेवलपमेंट environment और toolchain

  • UCM (Unison Codebase Manager)
    • definitions बनाना, हटाना, rename करना, test करना और run करना
    • project, branch, clone, merge जैसी Git-जैसी version control सुविधाएँ भाषा में built-in
  • UCM Desktop
    • codebase संरचना को explore करना, click-आधारित definition navigation, documentation rendering
  • LSP support
    • ज़्यादातर लोकप्रिय editors में IDE features का उपयोग संभव
  • Unison Share
    • केंद्रीय code hub: project hosting, search, review, contribution (=Pull Request), type-आधारित search
    • क्योंकि सभी definitions hash-आधारित हैं, references हमेशा hyperlink की तरह navigate किए जा सकते हैं

Deployment model: Unison Cloud & BYOC

  • उसी भाषा में application logic + infrastructure definition तक लिखकर उसे सीधे deploy किया जा सकता है
  • YAML, Helm या जटिल RPC conventions के बिना केवल “code” से distributed systems बनाए जा सकते हैं
  • BYOC (Bring Your Own Cloud) के ज़रिए अपनी container infrastructure पर भी Cloud stack चलाया जा सकता है
  • OrderedTable जैसे type-safe storage, Daemon support और automatic orchestration शामिल हैं

उदाहरण: Guessing Game

  • Abilities (IO, Exception) का उपयोग करने वाला एक सरल CLI उदाहरण
  • Random, console IO, pattern matching, delayed computations जैसी language elements का स्वाभाविक संयोजन

Ecosystem और community

  • Share के माध्यम से contribution, review और organization accounts का support
  • type-आधारित पूरे ecosystem में search, और AI agents के लिए MCP server उपलब्ध
  • C FFI पर क्रमिक रूप से काम जारी
  • Git-style diff viewer, branch annotations जैसी collaboration productivity features का विस्तार

प्रमुख इतिहास (संक्षेप)

  • 2018: Unison Computing की स्थापना
  • 2019: पहला alpha release
  • 2021: codebase को SQLite में बदला गया (100x reduction)
  • 2021: Unison Share सार्वजनिक किया गया
  • 2022~2024: LSP, Projects, Kind-checking, Pull Request, Cloud GA
  • 2025: Desktop App, बड़े पैमाने पर runtime optimization, MCP server, BYOC support
  • 2025 Nov: Unison 1.0 आधिकारिक रिलीज़

FAQ

  • नई भाषा की ज़रूरत क्यों है?
    • hash-आधारित code model को मौजूदा भाषाओं में add-on के रूप में लाना लगभग असंभव है
    • क्योंकि code storage, version control, deployment और collaboration के तरीके सभी इसी विचार से स्वाभाविक रूप से निकलते हैं, इसलिए इसे शुरुआत से एक नई भाषा के रूप में डिज़ाइन करना ज़रूरी था
  • वास्तविक उपयोग के उदाहरण?
    • पूरा Unison Cloud स्वयं Unison में लिखा गया है और संचालन में है
    • organizations और teams के स्तर पर collaboration तथा distributed application development के लिए commercial-grade workflow बनाया गया है
  • vendor lock-in की चिंता: यह एक open source भाषा है, Docker आदि के साथ स्वतंत्र रूप से deploy की जा सकती है और BYOC support करती है
  • collaboration model: organization, ticket, code review, PR आदि का support, और conflict केवल definition unit पर होता है
  • version control: Git के बिना अपने project, branch, push, pull और merge features उपलब्ध
  • IDE पर कोई बाध्यता नहीं: LSP server उपलब्ध होने से कई editors का उपयोग किया जा सकता है
  • अन्य भाषाओं के साथ integration: C FFI विकासाधीन
  • फ़ाइल-रहित codebase access: CLI (UCM) commands या Desktop app से संरचना को explore किया जा सकता है

1 टिप्पणियां

 
GN⁺ 2025-11-27
Hacker News की राय
  • मैं Unison को बहुत लंबे समय से देख रहा हूँ। Paul के पर्सनल ब्लॉग के दिनों से, यानी अब 10 साल से भी ज़्यादा हो गए हैं। यह 1.0 रिलीज़ सच में एक बड़ा माइलस्टोन है, लेकिन ईमानदारी से कहूँ तो थोड़ी निराशा भी है
    मुझे प्रोग्रामिंग भाषाएँ बहुत पसंद हैं, इसलिए मैंने Rust, Go, Zig जैसी भाषाओं की ग्रोथ भी देखी है, लेकिन Unison में इस स्तर की परिपक्वता होने के बावजूद ecosystem adoption कम लगती है
    मुझे लगता है इसका कारण वह बिज़नेस मॉडल है जिसमें ज़्यादातर फीचर्स cloud-dependent तरीके से डिज़ाइन किए गए हैं। BYOC option है, लेकिन वह पर्याप्त नहीं है। माहौल थोड़ा अटपटा लगता है

    • Zig, Rust, Go से तुलना करने की बात से मैं सहमत नहीं हूँ। Unison ने Abilities या database-based code structure जैसे “नए और अजीब” कॉन्सेप्ट बहुत जल्दी इस्तेमाल कर लिए
      Share प्रोजेक्ट open source है, और GitHub में भी व्यावहारिक निर्भरता है, फिर भी वह लोकप्रिय है।
      मैं इन बातों को नकारने की कोशिश नहीं कर रहा, बस चाहता हूँ कि लोग इसे खुद आज़माएँ और महसूस करें कि दूसरी भाषा डिज़ाइन में भी इससे क्या सीखा जा सकता है
    • मुझे लगता है Unison की समस्या FFI की कमी है। बल्कि बिज़नेस पर फोकस करना अच्छी रणनीति है। पैसे कमाने होंगे ताकि यूज़र्स के लिए महत्वपूर्ण फीचर्स पर ध्यान दिया जा सके और छोटी-मोटी बहसों में न फँसा जाए
    • मैं भी सहमत हूँ। मैं ऐसा सिस्टम बनाना चाहता हूँ जहाँ इंटरनेट कट जाने पर भी local collaboration संभव हो, और hash-based function structure उसके लिए बिल्कुल फिट बैठती है।
      लेकिन ज़्यादातर learning material cloud infrastructure के इस्तेमाल को मानकर चलती है, इसलिए offline environment में रास्ता रुक जाता है।
      शायद Unison-स्टाइल का कोई तरीका हो, लेकिन marketing layer उस रास्ते को छिपा रही है
    • मुझे इसका commercial direction होना अच्छा लग रहा है। अगर सही चला तो इसमें ज़्यादा समय लगाकर sustainable development संभव होगा।
      paid users आने पर टेक्नोलॉजी को यथार्थवादी और practical बनाए रखने की प्रेरणा मिलती है।
      अगर इसमें commercial element न होता तो यह बस एक और esolang जैसा लगता। अब मैं इसे किसी side project में आज़माने की सोच रहा हूँ
    • कोर आइडिया शानदार हैं, लेकिन अगर code deploy या import करना सिर्फ cloud platform के ज़रिए ही संभव है, तो शायद मैं इसका इस्तेमाल न करूँ।
      docs में Unison Share का ज़िक्र है, और वह भी unison-lang.org पर host किया गया है।
      BYOC option है, लेकिन फिर भी unison.cloud account और subscription चाहिए। ऐसी बातें marketing और docs में साफ़-साफ़ बताई जानी चाहिए
  • नमस्ते, मैं Unison भाषा के co-creators में से एक हूँ। अगर कोई सवाल हो तो कुछ भी पूछ सकते हैं

    • मैं लंबे समय से Unison को देख रहा हूँ, रिलीज़ की बधाई!
      Unison उन शुरुआती भाषाओं में से एक है जिसने algebraic effects (Abilities) को मुख्य फीचर के रूप में सामने रखा।
      मुझे याद है कि शुरुआत में यह भरोसा नहीं था कि इस फीचर को अच्छी प्रतिक्रिया मिलेगी या नहीं; अब जानना चाहता हूँ कि क्या आप इससे संतुष्ट हैं।
      effect system भाषा के बाकी हिस्सों के साथ कितना अच्छी तरह मेल खाता है, syntax कैसा लगता है, और implementation के अंदर की कोई दिलचस्प कहानी भी सुनना चाहूँगा
      संबंधित docs: Unison Abilities
    • test execution results को cache करते समय वास्तव में कौन-सा डेटा स्टोर किया जाता है, यह जानना चाहता हूँ।
      क्या सिर्फ expression का hash और “passed” value स्टोर होती है, या सभी values के hash भी निकाले जा सकते हैं?
      अगर दूसरा सही है, तो शायद Nix या Trustix की तरह reproducible builds को आगे बढ़ाया जा सकता है।
      शायद अभी की caching सिर्फ bound expressions को संभालती हो, लेकिन ऐसा लगता है कि यह runtime में बाहरी दुनिया से जुड़ने वाले पुल की भूमिका भी निभा सकती है
    • रिलीज़ की बधाई! Unison का hash-based definitions कॉन्सेप्ट सच में बहुत इनोवेटिव है।
      लेकिन फिलहाल यह ऐसा समाधान लगता है जो पहले समस्या खोज रहा हो।
      यह भाषा किसके लिए है, और Unison Cloud के अलावा क्या कोई इसे असली production में इस्तेमाल भी कर रहा है?
    • यह सच में शानदार प्रोजेक्ट है। लेकिन content-addressed language का कॉन्सेप्ट अभी भी मुझे पूरी तरह समझ नहीं आया।
      पहले मुझे लगा यह BEAM-आधारित भाषा होगी, लेकिन यह अपने VM पर चलती है।
      BEAM भाषाओं की तुलना में fault tolerance के लिहाज़ से क्या अंतर है, और कौन-से use cases हैं जहाँ Unison बेहतर फिट बैठती है?
    • मैं जानना चाहता हूँ कि OrderedTable, Table जैसे persistence primitives अंदरूनी तौर पर कैसे implement किए गए हैं।
      क्या ये external database को कॉल करते हैं, या Unison के भीतर ही implement हैं?
      Database abstraction के साथ मिलाकर यह बहुत दिलचस्प कॉम्बिनेशन लगता है, लेकिन कॉन्सेप्ट को पूरी तरह समझना आसान नहीं है
  • मैं Unison को सबसे दिलचस्प भाषाओं में से एक मानता हूँ।
    मुझे विश्वास है कि algebraic effects अगली पीढ़ी का एक अहम कॉन्सेप्ट बनेंगे।
    Unison में इसके अलावा भी कई शानदार आइडिया हैं।
    निजी तौर पर, मुझे लगता है कि यह game mod development के लिए भी उपयुक्त हो सकती है।
    क्लाइंट पर untrusted code चलाना पड़ता है, और Unison के ability system की वजह से sandbox environment आसानी से बनाया जा सकता है।
    साथ ही यह ECS(Entity Component System) implementation के लिए भी उपयोगी हो सकती है।
    अगर functions को जिन abilities की ज़रूरत है उनका inference हो सके, तो parallel execution safety अपने-आप सुनिश्चित की जा सकती है

    • वास्तव में Unison Cloud में इसी तरह का sandbox validation किया जाता है।
      Cloud में IO ability सीधे इस्तेमाल नहीं की जा सकती; उसकी जगह सिर्फ सुरक्षित रूप से नियंत्रित Http ability जैसी चीज़ें ही अनुमति होती हैं।
      इससे यूज़र file system तक पहुँच नहीं बना पाते।
      मैं भी इस फीचर को game development में इस्तेमाल करने के बारे में सोच रहा हूँ।
      दूसरे यूज़र native service के रूप में ability implement करके गेम में योगदान भी दे सकते हैं।
      संदर्भ लिंक: Unison Cloud, validateSandboxed कोड, ECS उदाहरण
  • जब मैंने इस प्रोजेक्ट को पहली बार देखा था, तब सोचा था, “5 साल बाद यह कैसा होगा?” और सच में उतना समय बीत गया।
    अब 1.0 रिलीज़ देखना बहुत खुशी की बात है

  • ऐसे radical language को वास्तविक इंडस्ट्री माहौल में इस्तेमाल करने लायक बनाना बड़ी उपलब्धि है। बधाई

  • मुझे लगता है Unison जैसे सिस्टम computing का भविष्य हैं।
    लेकिन वह भविष्य कब आएगा, यह नहीं पता।
    ऐसे सिस्टम की खूबसूरती यह है कि infrastructure, data, और service layers एक ही integrated system के अंदर होते हैं।
    शायद यह AI coding agents के लिए भी बेहतर आधार बन सकता है।
    लेकिन मुझे लगता है कि VC model की बजाय sustainable independent development इसके लिए ज़्यादा उपयुक्त है।
    इतनी लंबी अवधि के प्रोजेक्ट को आगे बढ़ाते रहने वाली टीम सच में कमाल की है

  • मुझे वह दिन याद है जब Rúnar ने कहा था कि वह Unison शुरू करने वाले हैं।
    मुझे लगा था यह ऐसा प्रोजेक्ट है जो पूरी तरह नया paradigm खोलेगा, और अब 1.0 रिलीज़ देखकर सच में गर्व महसूस हो रहा है।
    उम्मीद है कि किसी दिन Unison मेरी मुख्य भाषा बन जाएगी

  • अच्छा होता अगर Unison वेबसाइट पर benchmarks होते।
    performance characteristics पता हों तो समझ आता है कि यह किन कामों के लिए सही है।
    Django, Express.js, ASP.NET के साथ request handling speed comparison जैसे कुछ साधारण आँकड़े भी उपयोगी होते।
    आइडिया दिलचस्प हैं, लेकिन उम्मीद है कि वेब के अलावा दूसरे runtime targets भी आएँ।
    निजी तौर पर, बड़े वेब प्रोजेक्ट्स की तुलना में CLI tools जैसी जगहों पर नई भाषा आज़माना आसान लगता है

  • मैंने 2023 में लिखी गई Unison review post देखी, वह काफ़ी मददगार रही

  • आइडिया दिलचस्प हैं, लेकिन Unison एक all-in-one structure है जहाँ language + source management + hosting सब एक साथ अपनाने पड़ते हैं।
    अगर stack का एक हिस्सा भी पसंद न आए, तो पूरी चीज़ इस्तेमाल करना मुश्किल हो जाता है।
    इसलिए लगता है कि ये आइडिया सीधे तौर पर व्यापक रूप से फैलना कठिन होगा

    • Unison को धीरे-धीरे अपनाया जा सकता है।
      भाषा की अपनी tooling quality बहुत ऊँची है, और मौजूदा systems के साथ integration भी संभव है।
      उदाहरण के लिए, Unison Cloud ज़्यादातर Unison में लिखा गया है, लेकिन कुछ हिस्सों में Haskell का इस्तेमाल होता है।
      संबंधित चर्चा: HN thread1, HN thread2
      मुझे लगता है कि कई टेक्नोलॉजीज़ को जैविक रूप से डिज़ाइन करके उन्हें साथ में अच्छी तरह काम करने लायक बनाना अपने आप में बहुत मूल्यवान है
    • commercial success हो या न हो, उससे ज़्यादा दिलचस्प बात यह है कि यह प्रोजेक्ट computer science research value के लिहाज़ से क्या दिखाता है