10 पॉइंट द्वारा xguru 2024-07-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Mako एक Rust-आधारित "बहुत तेज़" और "production-grade" फ्रंटएंड बिल्ड टूल है
  • इसे 2023.3 में जारी किया गया था, और 1 साल बाद ओपन सोर्स किया गया
  • प्रोजेक्ट की शुरुआत इसलिए की गई क्योंकि "बहुत तेज़" बिल्ड स्पीड की ज़रूरत थी
  • "production-grade" शब्द का इस्तेमाल इसलिए किया गया है क्योंकि 2023.11.24 से Mako को Ant Group (पहले Alipay) के भीतर आधिकारिक रूप से जारी किया गया
    • इसे हज़ारों प्रोजेक्ट्स और उनमें इस्तेमाल हुए विभिन्न npm पैकेजों और वर्ज़न के साथ सत्यापित किया गया है

Mako के विकास का कारण

  • पिछले साल (2023.3) टीम ने Rust, SSR, AIG—इन 3 प्रोजेक्ट्स की शुरुआत की, और बिल्ड परफ़ॉर्मेंस की समस्या हल करने के लिए Rust चुना
  • मौजूदा Rust टूल्स का उपयोग न करके इसे खुद बनाने का कारण जटिलता थी
    1. कम्युनिटी लाइब्रेरी की परिपक्वता और Ant की आवश्यकताओं के साथ उनकी संगतता
    2. नियंत्रण अपने हाथ में रखने की ज़रूरत (बिज़नेस कारणों से बहुत अधिक customization अनिवार्य था)
    3. आधुनिक meta framework को बिल्ड के अलावा compile-time framework की भी ज़रूरत होती है। खासकर SSR और RSC scenarios में बहुत अधिक compilation की आवश्यकता होती है
    4. Rust सीखने और टीम के बढ़ने की आवश्यकता
  • Mako की टाइमलाइन: 2023.3 में kickoff, 2023.7 में पहला उपयोग योग्य वर्ज़न, 2023.11 में Ant के भीतर आंतरिक रिलीज़, 2024.6 में ओपन सोर्स

गति

  • Mako ने गति पर बहुत काम किया है। बेंचमार्क डेटा इस प्रकार है
    • Mac Book Pro M2 Max पर उस प्रोजेक्ट के साथ बेंचमार्क चलाया गया जिसमें Turbopack का भी परीक्षण किया जाता है
    • इसमें dev cold start समय, root node और leaf node HMR समय, production build समय, JS bundle आकार जैसी कई dimensions शामिल हैं
  • पिछले वर्ज़न की तुलना में परिणाम इस प्रकार हैं
    • Ant Design Pro के पूरे प्रोजेक्ट को बिल्ड करते समय Webpack को 16 सेकंड और Mako को 3.9 सेकंड लगे, यानी 4 गुना तेज़ी
    • Ant Design Pro के पूरे प्रोजेक्ट को बिल्ड करते समय Mako लगभग real-time hot update देता है
    • RSC-आधारित इंट्रानेट Hybrid framework Smallfish प्रोजेक्ट को बिल्ड करते समय scaffold प्रोजेक्ट का बिल्ड समय 36.7 सेकंड से घटकर 1.2 सेकंड हो गया
  • इसके अलावा Mako में एक experimental SSU फीचर भी है, जो पिछले MFSU implementation की तरह dependency packaging और caching करता है
    • source code की तुलना में dependency ratio के आधार पर dev hot start-up में 10~50 गुना तक तेज़ी संभव है

1 टिप्पणियां

 
xguru 2024-07-04
Hacker News की राय
  • esbuild या swc की तुलना में performance कम हो सकती है

    • JavaScript ecosystem में कई tools धीमे हैं और उनमें bugs ज़्यादा हैं, इसलिए alternatives की ज़रूरत है
    • native tools की तुलना में लाभ धीरे-धीरे कम हो जाता है
  • यह tool non-standard features को support करता है, इसलिए किसी खास bundler पर निर्भरता बन सकती है

    • ऐसे projects बेहतर हैं जो bundler के बिना भी काम करते हों
    • bundler को optimization चरण के रूप में इस्तेमाल करना बेहतर है
  • Vite की मुख्य ताकत rollup के मौजूदा plugin system का उपयोग करना है

    • यह जानने की जिज्ञासा है कि क्या मौजूदा ecosystem के लिए compatibility layer बनाने की योजना है
    • दूसरे build tools भी यह कर रहे हैं (उदाहरण: rspack webpack plugins का उपयोग करता है, farm vite plugins का उपयोग करता है)
  • शीर्षक में "Rust" देखकर लगा कि यह web के लिए Rust compiler होगा

    • यह JavaScript के लिए एक और bundler है
    • Rust में बनाया गया है
  • मैं web developer नहीं हूँ, इसलिए bundler वास्तव में क्या करता है इसे लेकर उलझन है

    • bundler ठीक-ठीक क्या करता है, इस पर जानकारी चाहिए
    • यह भी जिज्ञासा है कि speed पर इतना ज़ोर क्यों है (जैसे package version resolution?)
  • मैं web developer नहीं हूँ, लेकिन नियमित रूप से web apps बनाता हूँ

    • तेज development cycle में bundler का उद्देश्य क्या है, यह जानना चाहता हूँ
    • web app को जल्दी load कराने के लिए केवल बदले हुए हिस्से को दोबारा download करना बेहतर है
    • bundling न करना ज़्यादा बेहतर हो सकता है
  • Rspack (ByteDance) ने 1.0 version जारी किया है

    • Farm भी है
    • यह Ant Group द्वारा बनाया गया है
    • Rust में बने कई build tools मौजूद हैं
    • Turbopack bundling को पूरी तरह से फिर से बनाने का लक्ष्य रखता है
    • Rolldown, roll-up का Rust-आधारित पुनर्निर्माण लगता है
  • एक और दिलचस्प Rust-आधारित JavaScript bundler है Oxid / OXC

  • यह जिज्ञासा है कि bundling की सीमा पर पहुँचने के बाद क्या होगा

    • अगर esbuild की तरह ms-स्तर की performance मिल जाए, तो रचनात्मक काम किए जा सकते हैं
    • अगर हर browser में छोटा WASM mako या bundler हो, तो यह काफ़ी दिलचस्प होगा
    • लगता है इसमें काफ़ी मेहनत लगी है
  • यह जिज्ञासा है कि क्या इसका संबंध MakoTemplates से है