7 पॉइंट द्वारा GN⁺ 2025-05-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Meta का Pyrefly Rust में विकसित एक ओपन सोर्स Python type checker और IDE extension है
  • यह बेहद तेज़ analysis performance और IDE integration को सपोर्ट करता है, और Pyre की सीमाओं को पार करने के लिए विकसित किया गया है
  • स्वचालित type inference, बड़े codebase का support, और open source philosophy इसके मूल सिद्धांत हैं
  • Python community के साथ सहयोग और योगदान के ज़रिये पूरे ecosystem के type system को बेहतर बनाने का लक्ष्य है
  • फिलहाल alpha version जारी किया गया है, और community feedback व contribution सक्रिय रूप से मांगे जा रहे हैं

परिचय

  • Pyrefly Meta द्वारा Rust में बनाया गया एक ओपन सोर्स Python static type checker और IDE extension project है
  • code चलाने से पहले type consistency की जांच करके यह error को पहले से पकड़ने में मदद करता है
  • IDE integration और CLI, दोनों का उपयोग संभव है, जिससे लचीला workflow मिलता है
  • open source community के सहयोग के माध्यम से Python type system और विभिन्न libraries के विकास में योगदान देना इसका लक्ष्य है

Pyrefly के विकास की पृष्ठभूमि

  • 2017 में Meta ने Instagram के बड़े Python codebase के लिए एक नया type checker विकसित किया, जो बाद में Pyre बना
  • Pyre ने Hack, Flow आदि की मज़बूत design से प्रेरणा ली, और performance के लिए इसे OCaml में विकसित किया गया
  • समय के साथ type system के विकास और IDE integration की ज़रूरत बढ़ने पर इसकी सीमाएँ सामने आईं
  • Pyright जैसे community tools भी उपयोग किए गए, लेकिन बड़े पैमाने पर code navigation और type export जैसी ज़रूरतें पूरी करने में सीमाएँ थीं, इसलिए Pyrefly विकसित करने की कोशिश की गई

Pyrefly के मुख्य सिद्धांत

  • 1. प्रदर्शन

    • developers को code लिखते ही हर keypress पर तेज़ type checking की ज़रूरत होती है
    • Pyrefly एक उच्च-प्रदर्शन Rust implementation पर आधारित है, जो बहुत बड़े codebase में भी प्रति सेकंड 18 लाख lines की जांच कर सकता है
  • 2. IDE-केंद्रित design

    • IDE और CLI एक जैसा view बनाए रखें, इसके लिए शुरुआत से ही abstraction design किया गया
    • Pyre में यह बाद में जोड़ा गया था, लेकिन Pyrefly में design stage से ही consistency पर ज़ोर दिया गया
  • 3. inference

    • बिना annotation वाले और जिनमें type स्पष्ट नहीं है ऐसे Python code के लिए भी स्वचालित type inference का समर्थन करता है
    • return value और local variables के types IDE में दिखाए जा सकते हैं, और बेहतर code लिखने के लिए double-click पर inferred type अपने-आप insert किया जा सकता है
  • 4. open source

    • Pyrefly MIT license के तहत GitHub पर उपलब्ध है, और community PRs व issue reports का स्वागत है
    • यह Python ecosystem और Meta की प्रमुख libraries (जैसे PyTorch) से जुड़ते हुए Discord channel के माध्यम से सक्रिय संवाद को बढ़ावा देता है

Pyrefly का भविष्य

  • community के साथ मिलकर Python language और developer experience को बेहतर बनाने पर काम किया जा रहा है
  • Pyre के शुरुआती विकास से ही code को open source करने और PEP में योगदान की परंपरा रही है, और Pyrefly में भी विभिन्न developers, libraries और beginners के लिए types के उपयोग के लाभ अधिकतम करने की योजना है
  • Meta, dynamic languages में typing के उपयोग से मिले अनुभव और परिणामों के आधार पर अपने अनुभव साझा करेगा और ecosystem की type quality बढ़ाने की दिशा में काम करेगा
  • अभी Pyrefly alpha version में है, लेकिन इस गर्मियों में आधिकारिक launch के लक्ष्य के साथ लगातार bug fixes और feature additions किए जा रहे हैं
  • community feedback बहुत महत्वपूर्ण है, और Pyrefly इस्तेमाल करने के बाद issue reports और improvement requests सक्रिय रूप से मांगे जा रहे हैं

Pyrefly alpha version उपयोग और community जानकारी

  • Pyrefly के विकास की प्रक्रिया और technical details Meta Tech Podcast और PyCon US presentations आदि में साझा किए गए हैं
  • Meta Open Source से जुड़े sites, YouTube, Facebook, Threads, X, LinkedIn आदि विभिन्न channels के माध्यम से अतिरिक्त जानकारी दी जा रही है

1 टिप्पणियां

 
GN⁺ 2025-05-18
Hacker News टिप्पणियाँ
  • Meta की "Python Language Tooling Team" की ओर से सोचें तो थोड़ा चिंताजनक लगता है; uv की लोकप्रियता इतनी ज़्यादा है कि अंदेशा है ty इस क्षेत्र में जीत सकता है। गलत दिशा में जाने पर Atom या Flow जैसी स्थिति बन सकती है, जहाँ बाहरी open source आंतरिक टीम को पीछे छोड़ दे और ऊपर से "क्या इस टीम की सच में ज़रूरत है? इसे open source से बदल दें" जैसी हवा बनने लगे। लगता है यह वह हिस्सा है जिस पर प्रबंधन (Aaron Pollack?) को ध्यान देना चाहिए
    • Kevin, नमस्ते। मैंने पहले Flow पर काम किया है और अब Pyrefly टीम में हूँ। इस बार हमने Flow से अलग तरीका चुना है और open source तथा community निर्माण को स्पष्ट रूप से प्राथमिकता दी है। हाल में कंपनियों के infra निवेश को लेकर काफ़ी उतार-चढ़ाव रहा है, लेकिन मुझे लगता है कि इस समय हम सही यात्रा की सही शुरुआत पर हैं। समर्थन के लिए धन्यवाद
    • एक राय यह भी है कि Meta खास तौर पर developer tools के open source projects पर नियंत्रण को बहुत महत्व देता है। पहले git maintainer ने monorepo उपयोग के लिए सुझाए गए सुधारों को upstream में लेने से इनकार कर दिया था, जिसके बाद mercurial की ओर बदलाव हुआ; mercurial पक्ष ने योगदान खुशी से स्वीकार किए। आंतरिक tools की बदलाव की गति बहुत तेज़ होने के कारण अपने project का स्वामित्व रखना तर्कसंगत माना जाता है
    • Facebook से निकली चीज़ों में JSX सबसे पसंद है (शायद वही एक चीज़ है जिसे ठीक-ठाक मानता हूँ)
  • परिचय कि मैं Meta की Pyrefly टीम में काम करता हूँ। FAQ में बहुत से सवाल शामिल हैं, इसलिए उसे देखने के लिए लिंक दिया गया है। अतिरिक्त सवालों के जवाब देने की भी बात कही गई है और रुचि के लिए धन्यवाद दिया गया है
  • यह देखा गया कि इन दिनों Rust में लिखे Python type checker तीन जगहों से आ चुके हैं (Microsoft, Facebook, Astral), जबकि पुराना mypy भी अभी मौजूद है
    • सुधार: Microsoft का type checker Pyright, Typescript आधारित है। फिर भी व्यक्तिगत अनुभव में यह mypy से तेज़ है
    • सवाल कि क्या ये सब static type checker हैं; जवाब कि runtime के लिए कोई नहीं है
  • यह आधिकारिक घोषणा है, लेकिन जानकारी दी गई कि Pyrefly पर कुछ हफ्ते पहले ही चर्चा हो चुकी थी। फिलहाल यह alpha चरण में जारी हो रहा है और टीम का आधिकारिक रुख यह है कि bug fixes और feature development पर ध्यान देकर गर्मियों तक alpha टैग हटाने का लक्ष्य है
  • यहाँ लिखा गया Rust code काफ़ी समझने में आसान है, लेकिन हाल में Python tools लगातार Rust में लिखे जाने को लेकर चिंता है, साथ ही एक और N-language problem पैदा होने की आशंका भी। उम्मीद है कि Mojo यहाँ कुछ योगदान दे सके
    • Python ecosystem में सामान्य प्रवाह यह है कि जहाँ Python काम संभाल सकता है वहाँ Python उपयोग हो, और जहाँ उच्च प्रदर्शन चाहिए वहाँ Rust या C जैसी भाषाएँ। अंततः N=3 (Python, Rust, C)। हालाँकि इच्छा है कि लंबे समय में application programming में C धीरे-धीरे समाप्त हो, लेकिन असलियत में इसमें बहुत समय लगेगा। बल्कि संभव है कि Python खुद legacy बन जाए
  • Vim/Neovim में integration के तरीके बताए जा रहे हैं, यह देखकर अच्छा लगा; संबंधित लिंक दिया गया है
  • यह क्यों बड़ी ख़ासियत की तरह बताया जाता है कि यह Rust में लिखा गया है, इस पर सवाल। ज़्यादातर लोग type checker को embedded systems या mission-critical services में नहीं चला रहे। यह कुछ-कुछ "Erlang में लिखा गया" कहने जैसा लगता है। जो code performance-critical नहीं है, उसे Python में लिखने से community participation और विस्तार की संभावनाएँ ज़्यादा होती हैं; फिर Rust पर इतना ज़ोर क्यों?
    • Rust इस्तेमाल का अनुभव साझा करते हुए कहा गया कि user के नज़रिए से speed और safety, और developer के नज़रिए से contribution की आसानी इसके फ़ायदे हैं। Astral का आकर्षण भी यही है कि वह Python में ऐसे Rust-आधारित tools ला रहा है। Python, Rust से बेहतर जानता हूँ, फिर भी Rust projects में योगदान देना ज़्यादा आसान लगता है। राय यह है कि Rust-quality tools को Python में लाना ही व्यापक लक्ष्य है
    • LSP (Language Server Protocol) को बहुत performance-critical code माना गया है, क्योंकि इसका सीधा असर IDE responsiveness पर पड़ता है। Rust CPU और memory दोनों के लिहाज़ से बहुत कुशल है। अगर यह OCaml, Reason, Haskell आदि में लिखा जाता, तो speed या efficiency तो पर्याप्त मिलती, लेकिन contributors का pool बहुत सीमित होता
    • "[tool description] rust" खोजने पर अच्छा performance वाला software आसानी से मिल जाता है, यह संतोषजनक लगता है। उपयोग किए जाने वाले tools में लगभग 95% Rust में लिखे हैं और अधिकांश से संतुष्टि है
    • Rust का इस्तेमाल कुछ वैसा हो गया है जैसे "स्पष्ट रूप से तेज़" के लिए कोई संक्षिप्त रूप हो। साथ ही open source Rust अब भी review किया जा सकता है
    • समझाया गया कि Python में लिखे type checker में performance की कमी होती है। उदाहरण के लिए Pylint जैसे Python-निर्मित linter हर code line पर एक check करता है और 30 सेकंड से अधिक ले सकता है; इसलिए यह वास्तव में performance-critical क्षेत्र है
  • Pyre से Pyrefly में बदलाव और Rust में पूर्ण rewrite को लेकर जिज्ञासा, यानी कम चर्चित भाषा से trendy Rust की ओर जाने के ठोस फ़ायदे या प्रेरणा क्या थी
    • बताया गया कि यह सवाल FAQ में शामिल है। और अनुभव बढ़ने पर इस पर एक लंबी blog post भी लिखने की इच्छा व्यक्त की गई है; लिंक दिया गया है
  • राय कि यह ऐसा project लगता है जो एक ही बार में बहुत ज़्यादा समस्याएँ हल करना चाहता है
  • VS Code देखकर रुचि ख़त्म हो गई, ऐसी राय। क्यों लोग VS Code को Python के लिए उपयुक्त IDE मानते हैं, यह समझ नहीं आता; जब PyCharm जैसा असली IDE मौजूद है तो VS Code इस्तेमाल करने की वजह नहीं दिखती
    • जवाब कि pyrefly केवल vscode तक सीमित नहीं है। अलग-अलग लोगों की अलग पसंद होती है, इस बात का थोड़ा अधिक सम्मान किया जाना चाहिए। pycharm भी पूरी तरह से बेहतर नहीं है। व्यक्तिगत रूप से vscode remote development सुविधाजनक लगता है, और pycharm पसंद नहीं है यह बात इंटरनेट पर लिखने की इच्छा नहीं होती