10 पॉइंट द्वारा GN⁺ 2024-02-04 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Pkl (जिसका उच्चारण Pickle है) configuration जनरेट करने के लिए एक programming language है, जिसे Apple ने आंतरिक रूप से इस्तेमाल किया था और अब open source बनाकर इसका पहला release घोषित किया है
    • "Configuration that is Programmable, Scalable, and Safe"

  • JSON, YAML, Property Lists जैसी static languages में complexity बढ़ने पर सीमाएँ होती हैं
  • Pkl का लक्ष्य static languages और general-purpose programming languages के बीच संतुलन बनाना है

Pkl क्विक टूर

  • डेवलपर्स के लिए परिचित syntax और आसान learning के लिए इसमें classes, functions, loops, type annotations जैसी सुविधाएँ शामिल हैं
  • Pkl files का उपयोग configuration schema परिभाषित करने और अन्य configuration data को define करने के लिए किया जाता है
  • Pkl programs को YAML, JSON, XML जैसे सामान्य formats में आसानी से render किया जा सकता है

बिल्ट-इन validation

  • डेटा का valid होना ज़रूरी है, और Pkl में type annotations का उपयोग करके validation हासिल किया जाता है
  • Type annotations constraints को define कर सकती हैं, और असफल constraints evaluation errors उत्पन्न करती हैं

पैकेज शेयरिंग

  • Pkl packages publish करने और projects में उन्हें dependency के रूप में import करने की सुविधा देता है
  • GitHub Releases के ज़रिए packages को आसानी से create और publish किया जा सकता है, और projects के माध्यम से dependencies manage की जा सकती हैं

language bindings

  • Pkl text output के रूप में configuration जनरेट कर सकता है और दूसरी languages में library के रूप में embed किया जा सकता है
  • Pkl schema को target language की classes/structs में generate किया जा सकता है, और यह Swift, Go, Java, Kotlin आदि को support करता है

editor support

  • लक्ष्य Pkl लिखने के अनुभव को बेहतरीन बनाना है
  • IntelliJ plugin सहित JetBrains editors के लिए समृद्ध support प्रदान किया जाता है
  • यह autocomplete, navigation, validation जैसी सुविधाएँ देता है, और Language Server Protocol को support करने की योजना है

अगले कदम

  • Pkl के लिए विस्तृत guide, language reference, और GitHub Discussions के माध्यम से communication की सिफारिश की गई है
  • Pkl उपयोग के उदाहरणों के लिए sample repository, CLI download, और editor plugin installation की अनुशंसा की गई है

GN⁺ की राय:

  • Pkl configuration management की complexity को हल करने के लिए बनाई गई नई programming language है, और यह डेवलपर्स के लिए उपयोगी लगती है
  • बिल्ट-इन validation और package sharing features code की reusability और maintainability को बेहतर बना सकती हैं
  • विभिन्न languages के लिए bindings और editor support, Pkl को अधिक development environments में अपनाने योग्य बनाते हैं, जिससे डेवलपर्स configuration management को और आसानी से कर सकेंगे

2 टिप्पणियां

 
secret3056 2024-02-05

मुझे भी ऐसा ही लगा था, लेकिन इसमें Go binding है। लगता है Apple भी Go को काफी इस्तेमाल करता है.
apple/pkl-go: Pkl bindings for the Go programming language

 
GN⁺ 2024-02-04
Hacker News राय
  • Hacker News टिप्पणियों का सारांश:
    • 25 साल पहले ज़्यादातर प्रोग्राम GUI के ज़रिए configuration और help उपलब्ध कराते थे। configuration को ini files या Windows registry में स्टोर किया जाता था, और उसे मैन्युअली भी एडिट किया जा सकता था। अब configuration files जनरेट करने के लिए 87MB आकार की binary form वाली एक programming language इस्तेमाल करनी पड़ती है, और इस language को चलाने के लिए भी configuration file मैन्युअली बनानी पड़ती है। इस तरह की स्थिति में लगता है कि आगे चलकर 500GB framework भी चाहिए होगा, और वह भी configuration files जनरेट करने वाली programming language के लिए। ऐसा लगता है जैसे आधुनिक developers समस्याएँ बनाने के काम में लगे हुए हैं.
    • Pkl Apple के भीतर आंतरिक रूप से इस्तेमाल होने वाले बेहतरीन tools में से एक था, और अब इसके open source होने से खुशी है। एक टीम ने k8s configuration के कई kloc को सफलतापूर्वक pkl में migrate किया, और pkl का इस्तेमाल करके दो monitoring tools के लिए configuration, एक static documentation site, और इन सबको जोड़ने वाली alert definitions बनाई। इस tool की सिफारिश की जा सकती है, और इसे फिर से इस्तेमाल कर पाने को लेकर उत्साह है.
    • Pkl को GraalVM Truffle framework का उपयोग करके बनाया गया है, और यह Futamura projections का उपयोग करने वाले runtime compilation को support करता है। Apple के साथ यह काम लंबे समय से किया जा रहा था, और अब आखिरकार source code देख पाने की बात से बहुत खुशी है। (GraalVM developer की टिप्पणी)
    • HTTP resources को fetch करना, file system से files पढ़ना, और Turing completeness जैसी क्षमताएँ configuration language में अपेक्षित नहीं लगतीं। यह जटिलता वाजिब है या नहीं, इस पर सवाल है.
    • दस्तावेज़ थोड़ा पढ़ने के बाद लगा कि schema definitions और minimum-value carrier के रूप में language बनाने के विचार पर कुछ ज़्यादा ही ज़ोर दिया गया है। overuse से पैदा होने वाले अप्रत्याशित failure modes को लेकर चिंता है। लेकिन शायद यही इसका core feature भी हो सकता है: जो भी pkl को software में जोड़ता है, वह अंततः बनने वाले configuration monster में हिस्सा लेता है। यह इस मान्यता पर आधारित है कि बिना संरचना वाली अव्यवस्था की तुलना में एकीकृत system कम बुरा होगा.
    • यह IntelliJ, Visual Studio Code और Neovim के लिए plugins और extensions देता है, और जल्द ही Language Server Protocol support भी जोड़ा जाएगा। समझ नहीं आता कि LSP को पहले, या सिर्फ़ उसी को, क्यों implement नहीं किया गया। सभी editors में LSP का built-in support होता है, इसलिए अलग implementations की ज़रूरत नहीं पड़ती.
    • configuration languages पर लंबे समय तक सोचने और schema के साथ love/hate relationship से गुज़रने के बाद यह निष्कर्ष निकला कि configuration में rich types नहीं चाहिए। static typed programming language का उपयोग करते हुए, configuration language में सिर्फ़ strings, arrays और hash maps को types के रूप में रखना है, और सारी type validation को parsing stage तक धकेल देना है.
    • यह Cue जैसा है, लेकिन उससे अधिक primitive, कम principled, और Java में लिखा गया है.
    • यह समझने में कठिनाई हो रही है कि Pkl आखिर किस समस्या को हल करना चाहता है। शीर्षक पढ़ने के बाद लगा कि Pkl, TOML जैसी कोई नई और बेहतर configuration language है, लेकिन लेख पढ़ने के बाद ऐसा लगा कि Pkl configuration को generate करने की language है। Pkl खुद configuration file नहीं, बल्कि configuration को अधिक standardized तरीके से बनाने और reuse करने में मदद करने वाला एक abstracted tool लगता है। उदाहरण के लिए, अगर कई projects में साझा या दोहराई जाने वाली Terraform या Cloudformation configuration हो, तो सबसे आसान तरीका उसे दूसरे project से copy-paste करके कुछ पंक्तियाँ बदलना होता है ताकि वह project के मुताबिक ढल जाए। सवाल यह है कि क्या Pkl इसी समस्या को हल करने में मदद करता है, या फिर कहीं कुछ और छूट रहा है.