1 पॉइंट द्वारा GN⁺ 2024-06-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Elixir v1.17 रिलीज़: सेट-थ्योरी आधारित टाइप्स, कैलेंडर Duration, Erlang/OTP 27 सपोर्ट

क्रमिक सेट-थ्योरी आधारित टाइप चेतावनियाँ

  • Elixir v1.17 पैटर्न से टाइप infer करता है और उनका उपयोग करके प्रोग्राम को type check करने वाले सेट-थ्योरी आधारित टाइप्स पेश करता है.
  • यह टाइप सिस्टम मौजूदा software में बदलाव किए बिना codebase में errors और bugs ढूंढने में मदद करता है.
  • फिलहाल developers इस टाइप सिस्टम के साथ केवल warnings के जरिए interact कर सकते हैं.
  • मुख्य warnings:
    • मौजूद न होने वाली key पर pattern matching
    • मौजूद न होने वाली key पर access
    • module न होने वाली किसी चीज़ पर function call
    • anonymous function call के समय function न होने वाली चीज़ को call करना
    • structs के बीच comparison
    • एक-दूसरे से न मिलने वाले types के बीच comparison
    • गलत binary pattern matching
    • undefined exception struct को rescue करने की कोशिश
    • rescue की गई exception में undefined field access

Erlang/OTP सपोर्ट

  • Elixir v1.17 Erlang/OTP 27 को सपोर्ट करता है और Erlang/OTP 24 के लिए सपोर्ट बंद करता है.
  • Elixir developers को Erlang/OTP 26 या उससे ऊपर migrate करने की सलाह दी जाती है.
  • Erlang/OTP 27 की मुख्य विशेषताएँ:
    • json module जोड़ा गया
    • process labels (proc_lib:set_label/1) जोड़े गए

नया Duration data type और date shifting functions

  • Elixir v1.17 Duration data type और date, time, तथा datetime को दिए गए duration के अनुसार shift करने वाला API पेश करता है.
  • उदाहरण:
    iex> Date.shift(~D[2016-01-31], month: 2)
    ~D[2016-03-31]
    
  • Duration interval, recurring events, और scheduling modeling के लिए ज़रूरी है.
  • DateTime के मामले में Elixir time zone changes को सही तरीके से handle करता है.

अन्य प्रमुख बदलाव

  • नया Keyword.intersect/2,3 function जोड़ा गया.
  • नया Mix profiler mix profile.tprof जोड़ा गया.
  • Kernel.is_non_struct_map/1 guard जोड़ा गया.
  • Elixir का Logger gen_statem reports को format करता है और Erlang/OTP 27 process labels शामिल करता है.

GN⁺ की राय

  • सेट-थ्योरी आधारित टाइप्स: यह टाइप सिस्टम code की stability और reliability बढ़ाने में बहुत मददगार हो सकता है. खासकर बड़े projects में यह उपयोगी है.
  • Erlang/OTP 27 सपोर्ट: Erlang/OTP के नवीनतम version को support करने से performance और features दोनों में कई फायदे मिलते हैं.
  • Duration data type: time zones और calendar को ध्यान में रखकर date shifting की क्षमता scheduling management जैसे applications में बहुत उपयोगी है.
  • टाइप सिस्टम की सीमाएँ: फिलहाल function boundaries के पार type analysis संभव नहीं है, इसलिए इस हिस्से में आगे के updates में सुधार की ज़रूरत है.
  • प्रतिस्पर्धी उत्पाद: TypeScript जैसी static type systems देने वाली दूसरी भाषाओं की तुलना में, Elixir का approach dynamic language की flexibility बनाए रखते हुए type safety देता है.

1 टिप्पणियां

 
GN⁺ 2024-06-13
Hacker News राय
  • Elixir और Erlang टीम ने पिछले कुछ वर्षों में शानदार काम किया है। लाइब्रेरी और किताबों के लेखकों का योगदान भी बहुत बड़ा है। Elixir और OTP के commits को देखते हुए काफी दिलचस्पी महसूस होती है। इसमें जुड़े सभी लोगों को धन्यवाद।

  • Elixir को backend के रूप में इस्तेमाल करने वाले एक side project में बहुत productive और आनंददायक अनुभव रहा। LiveView की productivity की बहुत सराहना करता हूँ, लेकिन जहाँ network connection अस्थिर हो वहाँ यह उपयुक्त नहीं है। LiveView से अलग भी Elixir अपने आप में काफी मज़ेदार है।

  • एक startup को Elixir में full-stack रूप से बना रहा हूँ, और अब तक इस्तेमाल की गई technologies में यह सबसे बेहतरीन है। दोस्तों को Elixir के फ़ायदे बता रहा हूँ। अच्छा होगा अगर RabbitMQ और client OTP 27 में काम करें।

  • Elixir और Erlang डेवलपर्स के शानदार काम के लिए धन्यवाद। उम्मीद है कि Elixir के बड़े पैमाने पर अपनाए जाने में "types नहीं हैं" वाला बहाना अब खत्म होगा। आगे भी ऐसा ही अच्छा काम जारी रहे।

  • 10 साल से Elixir के बारे में पढ़ता आया हूँ और इस language को पसंद करता हूँ। लेकिन mainstream languages की तुलना में कम salary के कारण Elixir से जुड़ी नौकरी छोड़ दी। tech stack से ज़्यादा salary और शानदार product मायने रखते हैं। फिर भी दूर से Elixir को देखते रहना मज़ेदार है।

  • इस release की शानदार feature get_in/1 का जोड़ा जाना है। उदाहरण के लिए, get_in(struct.foo.bar) में अगर foo nil लौटाता है, तो bar को access करने पर error नहीं होगा।

  • यह release वही आख़िरी हिस्सा था जिसकी मुझे तलाश थी। आगे क्या आता है, इसे लेकर उत्साहित हूँ। मुझे लगता है कि अब language 100% feature-complete हो गई है।

  • type system को लेकर बहुत उत्साह है। याद है José ने इसे "gradual type system" कहा था। यह चरणबद्ध तरीके से जोड़ा जाएगा। सोच रहा हूँ कि अगले चरण में नए type system से जुड़े features आएँगे या नहीं। खासकर नए compiler optimizations का इंतज़ार है।

  • इस release को लेकर बहुत उत्साहित हूँ। उम्मीद है कि Elixir IntelliJ plugin में resources लगाए जाएँगे। VSCode इस्तेमाल करना आनंददायक नहीं लगता।

  • क्या किसी को पता है कि "set-theoretic types" का मतलब क्या है? programming languages में मेरी काफी रुचि है, लेकिन यह शब्द पहली बार सुन रहा हूँ।