10 पॉइंट द्वारा xguru 2023-11-18 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • Concurrent सॉफ़्टवेयर को आसानी से बनाने में मदद करता है, और डेवलपर अप्रत्याशित performance, runtime errors, data races और type errors की चिंता किए बिना विकास कर सकते हैं
  • automatic memory management, move semantics, static typing, type-safe concurrency, और efficient error handling जैसी विशेषताएँ

निर्धारक automatic memory management

  • Inko garbage collection पर निर्भर नहीं करता, बल्कि single ownership और move semantics पर आधारित memory management का उपयोग करता है
  • owned values scope से बाहर होने पर delete हो जाते हैं, और उन्हें immutable या mutable रूप में borrow किया जा सकता है
  • single ownership के उपयोग से predictable behavior और performance मिलती है, और garbage collection settings पर समय बर्बाद नहीं होता

Inko सुरक्षित है

  • Inko का उपयोग करने पर NULL pointers, use-after-free errors, runtime errors, data races जैसी उन समस्याओं की चिंता नहीं रहती जो अन्य भाषाओं में आम हैं
  • optional data के लिए Option type प्रदान करता है, और immutable तथा mutable references को support करता है ताकि आवश्यकता अनुसार बदलाव सीमित किए जा सकें

concurrency को आसान बनाता है

  • Inko lightweight processes का उपयोग करके concurrency लागू करता है, और Erlang तथा Pony से प्रेरित concurrency model का उपयोग करता है
  • processes एक-दूसरे से isolated रहते हैं और messages के माध्यम से संचार करते हैं, तथा compiler type checking के जरिए correctness सुनिश्चित करता है
  • processes के बीच data transfer करते समय data की uniqueness सुनिश्चित की जाती है, जिससे data races असंभव हो जाते हैं

error handling को सही तरीके से करता है

  • Inko Joe Duffy के "The Error Model" लेख से प्रेरित error handling approach का उपयोग करता है
  • errors को "Result" नामक algebraic type के रूप में व्यक्त किया जाता है, और try तथा throw के माध्यम से syntactic simplification दी जाती है
  • जिन गंभीर errors को handle नहीं किया जा सकता या नहीं किया जाना चाहिए, उनके लिए program को रोक देने वाले "panics" का समर्थन है

कुशल है

  • Inko का उद्देश्य C या Rust जैसी low-level languages से प्रतिस्पर्धा करना नहीं, बल्कि Ruby, Erlang, Go जैसी भाषाओं का एक आकर्षक विकल्प बनना है
  • यह LLVM को backend के रूप में उपयोग करने वाले native code compiler का इस्तेमाल करता है, जो तेज compile time और अच्छे runtime performance के बीच संतुलन प्रदान करता है
  • native code, process scheduling, non-blocking IO आदि को संभालने वाली Rust में लिखी एक छोटी runtime library से statically linked होता है

pattern matching

  • Inko tuples और algebraic data types सहित विभिन्न types के लिए pattern matching को support करता है
  • pattern matching को decision tree में compile किया जाता है, और compiler संभव हो तो उसका आकार छोटा रखने की कोशिश करता है
  • compiler यह सुनिश्चित करता है कि सभी patterns cover हों

3 टिप्पणियां

 
ahwjdekf 2023-11-18

rust से rust जैसा कुछ बनाया गया ??

 
regentag 2023-11-18

पैकेज मैनेजमेंट का GitHub पर निर्भर होना थोड़ा खटकता है। उम्मीद है कि ऐसे environments का भी कुछ ध्यान रखा जाएगा जो इंटरनेट से कनेक्ट नहीं हो सकते…

 
xguru 2023-11-18
Hacker News राय
  • Inko का concurrency model Erlang और Pony से प्रेरित है, और यह lightweight processes का उपयोग करता है।

    • processes एक-दूसरे से अलग-थलग रहते हैं और messages के ज़रिए communicate करते हैं।
    • processes और messages को classes और methods के रूप में परिभाषित किया जाता है, और compiler type checking के ज़रिए correctness सुनिश्चित करता है।
    • data को processes के बीच uniquely transfer किया जाता है, इसलिए data race संभव नहीं है और deep copy की ज़रूरत खत्म हो जाती है।
    • यह multiple producer और multiple consumer channels को support करता है, जिससे processes के बीच explicit references के बिना communication संभव होता है।
  • Inko package जोड़ने के लिए GitHub repository बनानी पड़ती है।

    • Inko का package manager GitLab जैसे दूसरे Git repositories को भी support करता है, लेकिन listing GitHub repository का उपयोग करके बनाई जाती है।
    • community के Microsoft products और Git पर निर्भर होने की प्रवृत्ति को लेकर चिंता जताई गई।
  • Inko से संबंधित discussion links दिए गए हैं:

    • "Show HN: Inko 0.10.0 – build concurrent software with confidence" (सितंबर 2022, 3 comments)
    • "Inko 0.5.0 released, featuring the first steps towards a self-hosting compiler" (सितंबर 2019, 7 comments)
    • "Inko (a gradually-typed object-oriented programming language) 0.4.0 released" (मई 2019, 1 comment)
    • "Show HN: Inko – A safe and concurrent object-oriented programming language" (अगस्त 2018, 45 comments)
  • Rust से समानता को लेकर सवाल उठाया गया:

    • यह पूछा गया कि क्या Inko Rust से इतना मिलता-जुलता है कि Rust के बजाय Inko चुनने का कोई कारण हो।
    • ऐसे examples की ज़रूरत बताई गई जो Rust में कठिन या झंझट वाले हों लेकिन Inko में आसानी से लिखे जा सकें।
  • Inko में रुचि और इसके Golang बनने की इच्छा व्यक्त की गई:

    • कहा गया कि Inko शायद GitLab से शुरू हुआ, और यह भी इच्छा जताई गई कि यह Golang जैसा बने, साथ ही GC की ज़रूरत का ज़िक्र किया गया।
    • Gleam से इसके फर्क को लेकर सवाल किया गया और JVM ecosystem का लाभ उठाने के तरीकों में रुचि दिखाई गई।
  • यह दिलचस्प तथ्य साझा किया गया कि Inko नाम का तेलुगु में अर्थ "एक और" होता है।

  • Rust के साथ syntax differences पर चर्चा हुई:

    • Rust और Inko के syntax differences की विस्तार से तुलना की गई।
    • function declaration, generics expression जैसे छोटे-छोटे differences का ज़िक्र किया गया।
  • Inko के design decisions की सकारात्मक सराहना की गई:

    • C/Java family languages जैसी syntax होने से यह कई लोगों को परिचित महसूस होती है।
    • error handling section की naming decision पर सवाल उठाया गया।
  • pre-built binaries की ज़रूरत का ज़िक्र किया गया:

    • LLVM issues की वजह से compilation कठिन होने और इसके कारण Inko में कम रुचि होने की बात कही गई।
  • संबंधित discussion links अतिरिक्त रूप से साझा किए गए।