1 पॉइंट द्वारा GN⁺ 2026-01-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Clojure सिंटैक्स और LLVM-आधारित नेटिव परफॉर्मेंस को जोड़ने वाली प्रोग्रामिंग भाषा, जो C++ के साथ सहज interoperability प्रदान करती है
  • Clojure की functional और value-oriented विशेषताओं को बनाए रखते हुए, JVM की जगह LLVM को host environment के रूप में उपयोग करती है
  • सभी data structures immutable (persistent & immutable) हैं, और C++ standard library के साथ सीधे एकीकृत हो सकती हैं
  • फिलहाल Alpha चरण में है, और आधिकारिक दस्तावेज़ व उदाहरण jank book में उपलब्ध हैं
  • Clojure ecosystem और C++ native performance को जोड़ने की कोशिश के रूप में, यह functional language और system language के बीच की दूरी कम करने का महत्व रखती है

jank का परिचय

  • jank Clojure के सिंटैक्स और दर्शन पर आधारित एक LLVM-hosted language है
    • JVM की बजाय LLVM पर आधारित है, और C++ interoperability को सपोर्ट करती है
    • Clojure की functional, interactive, और value-centric विशेषताओं को बनाए रखती है
  • इसका लक्ष्य Clojure के साथ उच्च संगतता है; जिस तरह Clojure Java के साथ interoperate करता है, उसी तरह jank C++ के साथ एकीकृत होता है
  • वर्तमान में alpha version में विकसित किया जा रहा है, और विस्तृत जानकारी आधिकारिक दस्तावेज़ में देखी जा सकती है

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

  • सभी built-in data structures immutable (persistent & immutable) रूप में हैं
    • उदाहरण: (def george {:name "George Clooney"})
  • ज़रूरत पड़ने पर side effect को स्पष्ट रूप से किया जा सकता है
    • उदाहरण: (defn say-hi [who] (println (str "Hi " (:name who) "!")) (assoc who :greeted? true))
  • C++ standard library के साथ direct integration संभव है
    • उदाहरण: (cpp/std.this_thread.sleep_for (cpp/std.chrono.milliseconds ms))
  • functional data processing के लिए कई core functions उपलब्ध हैं
    • उदाहरण: (apply + (distinct [12 8 12 16 8 6])) ; => 42

विकास और दस्तावेज़

  • आधिकारिक दस्तावेज़: jank book
  • प्रोजेक्ट LLVM 22 आधारित है और नवीनतम C++ standard के साथ संगत है
  • AOT compilation, GC profiling, CMake build options आदि का समर्थन करता है
  • Nix environment और CI automated build कॉन्फ़िगरेशन भी शामिल है

समुदाय और समर्थन

  • प्रोजेक्ट को GitHub Sponsors के माध्यम से समर्थन दिया जा सकता है
  • सहयोगी कंपनियाँ और व्यक्ति: Clojure Together, nubank, multiply.co, modulr-software आदि
  • community channels: Slack (Clojurians), Twitter

संबंधित प्रस्तुतियाँ और परिचय

  • Clojure Conj 2023 प्रस्तुति वीडियो
  • The REPL Interview और Compiler Spotlight में भाषा का परिचय
  • YouTube: Language Introduction वीडियो उपलब्ध

सारांश:
jank एक ऐसी भाषा है जो Clojure के functional दर्शन को LLVM और C++ native environment में लाती है, और Clojure की productivity तथा C++ की performance को जोड़ने की कोशिश करती है। यह अभी alpha चरण में है, लेकिन Clojure डेवलपर्स और system programmers दोनों के लिए एक नए एकीकृत development experience का प्रस्ताव रखती है.

1 टिप्पणियां

 
GN⁺ 2026-01-04
Hacker News की राय
  • jank alpha के बारे में जानकारी के लिए official book site देखना अच्छा रहेगा
    अभी इसे पूरी तरह घोषित करने की तैयारी नहीं हुई है, लेकिन लोगों का दिलचस्पी दिखाना खुशी की बात है
    बस compiler की कुछ और features merge हो जाएँ, तो book के साथ चलते हुए jank को खुद इस्तेमाल करके देखने लायक तैयारी हो जाएगी

    • jank में काफी दिलचस्पी है, इसलिए अभी-अभी लिंक की गई यह book पढ़ रहा हूँ
      कुछ grammar mistakes दिख रही हैं, तो सोच रहा हूँ कि book section में PR भेजना ठीक रहेगा, या लेखक की writing style बनाए रखने के लिए feedback किसी और तरह देना बेहतर होगा
    • इसमें शामिल सभी लोगों को धन्यवाद और बधाई
  • jank, Clojure की एक dialect है, और Clojure खुद भी Lisp की एक dialect है
    यह functional केंद्रित है, लेकिन mutable state और side effects भी support करती है
    सभी data structures default रूप से immutable हैं, और Clojure की तरह safe mutation mechanisms देती है, जिससे concurrency को संभालना आसान हो जाता है
    साथ ही C++ के साथ गहरा integration संभव है, इसलिए runtime पर नए C++ types, functions, और templates define किए जा सकते हैं
    Clang और LLVM का उपयोग करने वाली JIT compilation की मदद से C/C++ libraries तक आसानी से पहुँचा जा सकता है
    अधिक जानकारी के लिए official book देखें

    • पहले जब C++ इस्तेमाल करता था, तब compilation process बहुत तकलीफ़देह था
      Clojure पसंद है, लेकिन इसका native target होना आकर्षक लग रहा है
      jank में compile/recompile speed कितनी है, यह जानने की उत्सुकता है
  • जानना चाहता हूँ कि jank का development, Clojure को कितना करीब से follow करेगा
    क्या cljs की तरह इसे जितना संभव हो उतना समान रखा जाएगा, या आगे चलकर कभी अलग भी हो सकता है
    मैंने पहले लगभग 90% Clojure जैसी एक language बनाई थी, लेकिन पूरी compatibility की गारंटी देना कठिन था, इसलिए उसे वह नाम नहीं दिया
    jank तो drop-in replacement जैसा दिखता है, जो शानदार है

    • jank, Clojure ही है, और इसका इरादा upstream Clojure development को follow करने का है
      Clojure team और दूसरी dialects के developers के साथ सहयोग चल रहा है, और इसी लिए cross-dialect clojure-test-suite को आगे बढ़ाया जा रहा है
      यह Clojure JVM, ClojureScript, Clojure CLR, babashka, Basilisp, और jank—सभी को support करता है या उन पर काम चल रहा है
      हालांकि Carp से प्रेरित एक optional mode भी जोड़ा जाएगा, लेकिन default compatibility बनी रहेगी
  • एक पल के लिए लगा कि jank नहीं, बल्कि Jack Lang (फ़्रांसीसी राजनेता) की बात हो रही है

    • मुझे भी बिल्कुल यही लगा
  • साथ में देखने लायक book: https://book.jank-lang.org/

  • मैं एक साल से jank blog follow कर रहा हूँ, alpha release की बधाई
    Emacs user होने के नाते, CIDER जैसे development tool support की स्थिति जानना चाहता हूँ
    और Welcome section में link की typo भी दिखी — “foreward” नहीं, “foreword” होना चाहिए

    • nREPL server काम कर रहा है, लेकिन अभी jank repository में merge नहीं हुआ है
      इसे try-jank में देखा जा सकता है
      Clang bug की वजह से प्रगति धीमी है, लेकिन यह high-priority task है
      link typo पहले ही ठीक कर दी गई है
  • जानना चाहता हूँ कि क्या jank Rust codebase के साथ integrate कर सकता है

    • एक सामान्य C++ project की तरह यह संभव है
      C ABI या C++/Rust interoperability mechanisms के माध्यम से जोड़ा जा सकता है
    • हाँ, बिल्कुल कर सकता है
  • क्या इसमें static type system शामिल है

    • क्योंकि यह Clojure की dialect है, इसलिए मूल रूप से यह dynamic type language है
      लेकिन developer ने future में gradual type system¹ जोड़ने की योजना का ज़िक्र किया है
      विज़न यह है कि कुछ हिस्से पूरी तरह dynamic और GC-based रहें, जबकि कुछ हिस्से अधिक नियंत्रित और optimized रूप में काम कर सकें
      ¹ संबंधित blog post
    • पूरे language level पर static typing नहीं है
      C++ के साथ interop statically typed है, लेकिन Clojure वाले हिस्से में लौटते ही सब कुछ पूरी तरह dynamic और polymorphic हो जाता है
      Carp जैसी optional static typing mode की खोज की जाएगी, लेकिन इस साल नहीं
    • क्योंकि यह Clojure को implement कर रहा है, इसलिए मुझे पूरा यक़ीन है कि इसमें static types नहीं होंगे
  • शुरुआत में मुझे लगा “Jank Lang” नाम का कोई व्यक्ति investment alpha ढूँढ़ रहा था