Zero Native: Vercel का Electron किलर जिसके बारे में किसी ने नहीं सोचा था

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00यह Xero Native है, जो Vercel द्वारा बनाया गया एक Zig-आधारित नेटिव ऐप बिल्डर है, जो या तो सिस्टम के वेब व्यू का उपयोग कर सकता है
00:00:05या डेस्कटॉप या मोबाइल ऐप्स के लिए इलेक्ट्रॉन की तरह पूरे क्रोमियम को बंडल कर सकता है जो बहुत छोटे बाइनरी प्रदान करता है
00:00:12और डेवलपमेंट के लिए इंस्टेंट रीबिल्ड्स देता है।
00:00:14लेकिन क्या इसे ठीक से उपयोग करने के लिए थोड़ी ज़िग भाषा जानने की आवश्यकता जावास्क्रिप्ट डेवलपर्स को निराश करेगी?
00:00:18सब्सक्राइब करें और चलिए पता लगाते हैं।
00:00:20हालांकि बन (BUN) टीम ज़िग से हटकर रस्ट (Rust) की ओर बढ़ रही है, फिर भी यह एक बहुत ही शानदार भाषा है
00:00:28जिसमें कोई 'बोरो चेकर' या 'लाइफटाइम' नहीं है और यह सीधे C को कॉल कर सकती है, यानी कोई भी C लाइब्रेरी सिर्फ एक इम्पोर्ट दूर है
00:00:35बिना किसी ग्लू कोड की आवश्यकता के।
00:00:37और यह जावास्क्रिप्ट डेवलपर्स के सीखने के लिए काफी समझने योग्य है।
00:00:39वास्तव में, यदि आप मुझे शुरू से ज़िग में प्रोग्रामिंग करना सीखते हुए देखना चाहते हैं, तो मुझे कमेंट्स में बताएं।
00:00:44मुझे लगता है कि यह काफी मजेदार काम होगा।
00:00:46लेकिन अनिवार्य रूप से, ज़ीरो नेटिव एक पतला ज़िग शेल है जो फ्रंट एंड रेंडर करने वाले वेब व्यू को होस्ट करता है
00:00:51जो JSON ब्रिज का उपयोग करता है ताकि वेब व्यू में मौजूद जावास्क्रिप्ट नेटिव ज़िग लेयर के साथ संवाद कर सके और इसके विपरीत भी,
00:00:58इसी तरह यह ओएस स्तर के एपीआई तक पहुँचने में सक्षम है।
00:01:01और अगर आपको लगता है कि यह 'इलेक्ट्रोबन' जैसा लगता है, तो यह कुछ हद तक वैसा ही है।
00:01:04लेकिन एक बड़े अंतर के साथ, जिसके बारे में हम वीडियो में आगे बात करेंगे।
00:01:07लेकिन अभी के लिए, आइए एक बहुत ही सरल डेमो देखते हैं।
00:01:10तो शुरू करने के लिए, आपके पास पहले ज़िग इंस्टॉल होना चाहिए, जो मैंने Miez के साथ किया है।
00:01:13लेकिन आप Brew का भी उपयोग कर सकते हैं, फिर ज़ीरो नेटिव इंस्टॉल करें।
00:01:16और इन दोनों कामों को करने के बाद, आप एक नया प्रोजेक्ट तैयार करने के लिए `zero native init` कमांड चला सकते हैं।
00:01:22यह मेरे प्रोजेक्ट का नाम है, लेकिन यह कुछ भी हो सकता है जो आप चाहें।
00:01:25मैं रिएक्ट के साथ फ्रंट एंड फ्लैग का उपयोग करने जा रहा हूँ, जो एक Vite रिएक्ट प्रोजेक्ट इंस्टॉल करेगा।
00:01:30लेकिन यह Svelte, Vue, Next या सिर्फ Vite भी हो सकता है।
00:01:34तो अगर मैं एंटर दबाता हूँ, तो ज़ीरो नेटिव कुछ डायरेक्टरीज़ जोड़ देगा।
00:01:37अगर हम डेमो प्रोजेक्ट में जाएँ, तो हम `app.zon` फाइल देख सकते हैं, जिसे मैं बाद में समझाऊंगा।
00:01:43हमारे पास आइकन और अन्य स्टैटिक एसेट्स के लिए 'assets' फोल्डर है, 'build.zig' फाइल है,
00:01:48जो ज़िग बिल्ड ग्राफ, JS ब्रिज और वेब इंजन के लिए है, और 'front end' डायरेक्टरी है जिसमें हमारा फ्रंट एंड कोड है।
00:01:54वास्तव में, यदि हम उसमें जाएँ, तो हम कुछ ऐसी फाइलें देख सकते हैं जिन्हें देखने के हम जावास्क्रिप्ट डेवलपर के रूप में अभ्यस्त हैं।
00:01:58अब, इस स्तर पर, यदि हम `zig build run` चलाते हैं, तो यह सभी डिपेंडेंसीज़ इंस्टॉल कर देगा और हमारे ऐप को एक नई विंडो में खोल देगा।
00:02:04ध्यान दें, यदि आप किसी मौजूदा जावास्क्रिप्ट प्रोजेक्ट पर ज़ीरो नेटिव इंस्टॉल करना चाहते हैं,
00:02:08तो मैं Vite का उपयोग करने की सलाह देता हूँ, जो कि एक न्यूनतम संस्करण है, और फिर इस फ्रंट एंड डायरेक्टरी की हर चीज़ को अपने ऐप के कोड से बदल दें।
00:02:15ज़ीरो नेटिव में एक बहुत ही अच्छा देव सर्वर भी है जो पूरे फ्रंट एंड लाइफसाइकिल को संभालता है।
00:02:19इसलिए यदि हम `zig build dev` चलाते हैं, तो यह बाइनरी को कंपाइल करता है और ज़ीरो नेटिव देव सर्वर को चलाता है।
00:02:24तो अगर मैं कुछ कोड एडिट करता हूँ, तो हम अपने नेटिव ऐप को रियल टाइम में अपडेट होते देख सकते हैं।
00:02:28मैं `zig build package` भी चला सकता हूँ, जो नेटिव ऐप को बिल्ड करेगा ताकि मैं इसे वितरित कर सकूँ।
00:02:33और हम इसे यहाँ 'zig-out/package' डायरेक्टरी के अंदर देख सकते हैं, जो केवल 2.9 मेगाबाइट का है, जो बहुत छोटा है।
00:02:39और कुछ लोग तो इसे 1 मेगाबाइट से भी कम करने में सफल रहे हैं।
00:02:43लेकिन क्या होगा अगर मैं ऐप आइकन, नाम या वेब इंजन बदलना चाहूँ?
00:02:46यहीं पर `app.zon` फाइल काम आती है, जहाँ मैं आइकन का नाम, प्रोजेक्ट का नाम, और यहाँ तक कि जिस इंजन पर ऐप चलता है उसे भी बदल सकता हूँ, साथ ही विंडो का आकार भी।
00:02:55और यह ज़ीरो नेटिव का एक बहुत ही संक्षिप्त अवलोकन है।
00:02:58ऐसी बहुत सी चीज़ें हैं जिन्हें मैं नहीं बता पाया, जैसे सिस्टम ट्रे आइकन, कोड साइनिंग, और iOS और Android के लिए एम्बेडेड ऐप्स।
00:03:05वास्तव में, मुझे इसके साथ और अधिक समय बिताने की ज़रूरत है, जिससे एक और वीडियो बन सकता है।
00:03:09लेकिन जितना अच्छा ज़ीरो नेटिव है, यह इलेक्ट्रोबन जैसी चीज़ की तुलना में कैसा है, जो सिस्टम के नेटिव वेब व्यू का उपयोग करने वाले छोटे, तेज़ ऐप भी बनाता है?
00:03:17इलेक्ट्रोबन के साथ, बन (Bun) खुद ही एक्जीक्यूशन एनवायरनमेंट है क्योंकि आपको मुख्य प्रोसेस के लिए टाइपस्क्रिप्ट लिखना पड़ता है।
00:03:24तो हालांकि एक ज़िग बाइनरी ऐप शुरू करती है, कोड बन वेब वर्कर के अंदर चलता है, जो बन के FFI के माध्यम से नेटिव एपीआई के साथ संवाद करता है, जिसे C++ और ऑब्जेक्टिव-C लेयर से गुजरना पड़ता है।
00:03:37लेकिन ज़ीरो नेटिव के साथ, आपको केवल ज़िग बाइनरी की आवश्यकता है, कोई जावास्क्रिप्ट नहीं, कोई बन नहीं, बस ज़िग, एक सरल C इम्पोर्ट के माध्यम से ओएस स्तर के एपीआई और किसी भी C लाइब्रेरी से संवाद करता है।
00:03:50इसका परिणाम इलेक्ट्रोबन की तुलना में सबसे पतला नेटिव शेल होने के रूप में मिलता है।
00:03:54लेकिन अभी Xero Native से अपनी पसंद का सब कुछ पाने के लिए आपको शायद थोड़ा Zig कोड लिखना पड़े, या कम से कम Zig ऑब्जेक्ट नोटेशन फ़ाइल में कुछ कॉन्फ़िगरेशन बदलने पड़ें।
00:04:03साथ ही, ज़ीरो नेटिव इलेक्ट्रोबन जितना फीचर-रिच नहीं है, जिसने मुझे टाइटल बार स्टाइल बदलने और यहाँ तक कि कुछ कस्टम मेनू आइटम जोड़ने की अनुमति दी थी।
00:04:11और वे चीज़ें, दुर्भाग्य से, अभी `app.zon` फाइल में समर्थित नहीं हैं।
00:04:15मुझे एक समस्या भी दर्ज करनी पड़ी क्योंकि MacOS पर पैकेज बनाना पहली बार में मेरे लिए काम नहीं कर रहा था, लेकिन यह मेरी तरफ से कौशल की कमी हो सकती है।
00:04:22फिर भी, मुझे यकीन है कि टीम और अधिक सुविधाएँ जोड़ने और इनमें से कुछ मुद्दों को ठीक करने के साथ-साथ कुछ बेहतरीन मोबाइल सपोर्ट जोड़ने पर कड़ी मेहनत कर रही है।
00:04:29और यदि आप उन सुविधाओं में से किसी का इंतज़ार नहीं कर सकते, तो यह ओपन सोर्स है।
00:04:32तो बस क्लाउड (Claude) को कोड दें, उसे बताएं कि आप क्या चाहते हैं और मुझे यकीन है कि वह आपके लिए उन सुविधाओं को जोड़ सकता है, है ना?

Key Takeaway

Zero Native एक अत्यंत हल्का नेटिव ऐप शेल है जो Zig भाषा का उपयोग करके 3 MB से कम आकार के डेस्कटॉप और मोबाइल एप्लिकेशन बनाता है और सीधे C लाइब्रेरी के साथ संचार करता है।

Highlights

  • Zero Native Vercel द्वारा बनाया गया एक Zig-आधारित नेटिव ऐप बिल्डर है जो सिस्टम वेब व्यू या पूरे क्रोमियम को बंडल कर सकता है।

  • Zig भाषा में कोई 'बोरो चेकर' या 'लाइफटाइम' नहीं होता है और यह बिना किसी ग्लू कोड के सीधे C लाइब्रेरी को इम्पोर्ट कर सकती है।

  • Zero Native के साथ बनाए गए नेटिव ऐप बाइनरी का आकार केवल 2.9 MB है और इसे 1 MB से भी कम किया जा सकता है।

  • यह JSON ब्रिज का उपयोग करता है जिससे वेब व्यू के अंदर मौजूद जावास्क्रिप्ट सीधे नेटिव Zig लेयर और OS-स्तर के API के साथ संचार करती है।

  • ElectroBun के विपरीत, Zero Native को मुख्य प्रोसेस के लिए जावास्क्रिप्ट या Bun की आवश्यकता नहीं है और यह केवल Zig बाइनरी पर चलता है।

Timeline

Zig भाषा और Zero Native की संरचना

  • Zero Native डेस्कटॉप और मोबाइल के लिए इलेक्ट्रॉन के विकल्प के रूप में छोटे बाइनरी और त्वरित रीबिल्ड प्रदान करता है।
  • Zig भाषा C लाइब्रेरी को सीधे कॉल करने की क्षमता रखती है जो इसे जावास्क्रिप्ट डेवलपर्स के लिए सीखने योग्य बनाती है।
  • Zig लेयर और जावास्क्रिप्ट वेब व्यू के बीच संचार के लिए एक JSON ब्रिज का उपयोग किया जाता है।

यह तकनीक सिस्टम के वेब व्यू का लाभ उठाती है ताकि भारी बाइनरी फ़ाइलों से बचा जा सके। Zig की सादगी इसे रस्ट जैसी भाषाओं के 'बोरो चेकर' की जटिलता के बिना प्रदर्शन देने की अनुमति देती है। यह संरचना OS-स्तर के API तक पहुँचने के लिए एक पतला माध्यम प्रदान करती है।

प्रोजेक्ट सेटअप और डेवलपमेंट वर्कफ़्लो

  • प्रोजेक्ट शुरू करने के लिए `zero native init` कमांड का उपयोग Vite, React, Svelte या Vue के साथ किया जा सकता है।
  • `zig build dev` कमांड एक डेवलपमेंट सर्वर चलाता है जो रियल-टाइम कोड संपादन और ऐप अपडेट की अनुमति देता है।
  • `zig build package` कमांड वितरण के लिए केवल 2.9 मेगाबाइट का एक अत्यंत छोटा नेटिव ऐप पैकेज तैयार करता है।

इंस्टॉलेशन के लिए Zig और Zero Native दोनों की आवश्यकता होती है जिन्हें Miez या Brew के माध्यम से सेटअप किया जा सकता है। `app.zon` फ़ाइल एसेट्स, बिल्ड ग्राफ़ और वेब इंजन के कॉन्फ़िगरेशन को नियंत्रित करती है। मौजूदा जावास्क्रिप्ट प्रोजेक्ट्स को भी अपनी फ्रंट-एंड डायरेक्टरी बदलकर इसमें एकीकृत किया जा सकता है।

ऐप कस्टमाइज़ेशन और कॉन्फ़िगरेशन

  • `app.zon` फ़ाइल ऐप आइकन, प्रोजेक्ट का नाम, वेब इंजन और विंडो के आकार को बदलने का मुख्य स्थान है।
  • यह टूल सिस्टम ट्रे आइकन, कोड साइनिंग और iOS/Android के लिए एम्बेडेड ऐप्स का समर्थन करता है।

Zig ऑब्जेक्ट नोटेशन फ़ाइल डेवलपर को कोड लिखे बिना ही ऐप के बुनियादी गुणों को बदलने की अनुमति देती है। यद्यपि वर्तमान में कुछ उन्नत सुविधाएँ सीमित हैं, लेकिन यह बुनियादी नेटिव एकीकरण के लिए एक व्यापक ढांचा प्रदान करती है।

ElectroBun और Zero Native के बीच तकनीकी अंतर

  • ElectroBun में कोड Bun वेब वर्कर के अंदर चलता है और C++ लेयर के माध्यम से API से संचार करता है।
  • Zero Native को निष्पादन के लिए किसी जावास्क्रिप्ट रनटाइम या Bun की आवश्यकता नहीं है क्योंकि यह सीधे Zig बाइनरी का उपयोग करता है।
  • Zero Native वर्तमान में ElectroBun की तुलना में कस्टम मेनू आइटम और टाइटल बार स्टाइलिंग में कम लचीला है।

मुख्य अंतर रनटाइम वातावरण में निहित है जहाँ Zero Native जावास्क्रिप्ट की निर्भरता को पूरी तरह हटा देता है। यद्यपि ElectroBun अधिक फीचर-रिच है, Zero Native का शेल अधिक पतला और तेज़ है। ओपन-सोर्स होने के कारण गायब सुविधाओं को क्लाउड जैसे AI टूल या मैन्युअल Zig कोडिंग के माध्यम से जोड़ा जा सकता है।

Community Posts

No posts yet. Be the first to write about this video!

Write about this video