- 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 टूल्स का उपयोग न करके इसे खुद बनाने का कारण जटिलता थी
- कम्युनिटी लाइब्रेरी की परिपक्वता और Ant की आवश्यकताओं के साथ उनकी संगतता
- नियंत्रण अपने हाथ में रखने की ज़रूरत (बिज़नेस कारणों से बहुत अधिक customization अनिवार्य था)
- आधुनिक meta framework को बिल्ड के अलावा compile-time framework की भी ज़रूरत होती है। खासकर SSR और RSC scenarios में बहुत अधिक compilation की आवश्यकता होती है
- 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 टिप्पणियां
Hacker News की राय
esbuild या swc की तुलना में performance कम हो सकती है
यह tool non-standard features को support करता है, इसलिए किसी खास bundler पर निर्भरता बन सकती है
Vite की मुख्य ताकत rollup के मौजूदा plugin system का उपयोग करना है
शीर्षक में "Rust" देखकर लगा कि यह web के लिए Rust compiler होगा
मैं web developer नहीं हूँ, इसलिए bundler वास्तव में क्या करता है इसे लेकर उलझन है
मैं web developer नहीं हूँ, लेकिन नियमित रूप से web apps बनाता हूँ
Rspack (ByteDance) ने 1.0 version जारी किया है
एक और दिलचस्प Rust-आधारित JavaScript bundler है Oxid / OXC
यह जिज्ञासा है कि bundling की सीमा पर पहुँचने के बाद क्या होगा
यह जिज्ञासा है कि क्या इसका संबंध MakoTemplates से है