Jank Lang का अल्फा वर्ज़न जारी
(github.com/jank-lang)- 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 टिप्पणियां
Hacker News की राय
jank alpha के बारे में जानकारी के लिए official book site देखना अच्छा रहेगा
अभी इसे पूरी तरह घोषित करने की तैयारी नहीं हुई है, लेकिन लोगों का दिलचस्पी दिखाना खुशी की बात है
बस compiler की कुछ और features merge हो जाएँ, तो book के साथ चलते हुए jank को खुद इस्तेमाल करके देखने लायक तैयारी हो जाएगी
कुछ grammar mistakes दिख रही हैं, तो सोच रहा हूँ कि
booksection में 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 देखें
Clojure पसंद है, लेकिन इसका native target होना आकर्षक लग रहा है
jank में compile/recompile speed कितनी है, यह जानने की उत्सुकता है
जानना चाहता हूँ कि jank का development, Clojure को कितना करीब से follow करेगा
क्या cljs की तरह इसे जितना संभव हो उतना समान रखा जाएगा, या आगे चलकर कभी अलग भी हो सकता है
मैंने पहले लगभग 90% Clojure जैसी एक language बनाई थी, लेकिन पूरी compatibility की गारंटी देना कठिन था, इसलिए उसे वह नाम नहीं दिया
jank तो drop-in replacement जैसा दिखता है, जो शानदार है
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” होना चाहिए
इसे try-jank में देखा जा सकता है
Clang bug की वजह से प्रगति धीमी है, लेकिन यह high-priority task है
link typo पहले ही ठीक कर दी गई है
जानना चाहता हूँ कि क्या jank Rust codebase के साथ integrate कर सकता है
C ABI या C++/Rust interoperability mechanisms के माध्यम से जोड़ा जा सकता है
क्या इसमें static type system शामिल है
लेकिन developer ने future में gradual type system¹ जोड़ने की योजना का ज़िक्र किया है
विज़न यह है कि कुछ हिस्से पूरी तरह dynamic और GC-based रहें, जबकि कुछ हिस्से अधिक नियंत्रित और optimized रूप में काम कर सकें
¹ संबंधित blog post
C++ के साथ interop statically typed है, लेकिन Clojure वाले हिस्से में लौटते ही सब कुछ पूरी तरह dynamic और polymorphic हो जाता है
Carp जैसी optional static typing mode की खोज की जाएगी, लेकिन इस साल नहीं
शुरुआत में मुझे लगा “Jank Lang” नाम का कोई व्यक्ति investment alpha ढूँढ़ रहा था