Bun Rust का रीराइट एक प्रभावशाली उपलब्धि है

MMaximilian Schwarzmüller
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00BUN को SIG से Rust में पोर्ट किया गया था।
00:00:02आपने शायद इसके बारे में सुन लिया होगा,
00:00:04लेकिन यहाँ बताने के लिए बहुत कुछ है।
00:00:06पिछले हफ्ते काफी ड्रामा हुआ है,
00:00:08लेकिन यहाँ बहुत सी दिलचस्प चीजें भी हो रही हैं।
00:00:10और चाहे आप BUN, SIG या Rust में रुचि रखते हों,
00:00:14यह वाकई बहुत दिलचस्प है।
00:00:15साथ ही, AI का लाभ कैसे उठाया गया,
00:00:18और हमारे उद्योग में सामान्य तौर पर
00:00:20इसी तरह के प्रोजेक्ट्स के लिए इसका क्या मतलब हो सकता है।
00:00:22अब, एक छोटी सी बात,
00:00:24मुझे व्यक्तिगत रूप से BUN काफी पसंद है।
00:00:26यह मेरा डिफ़ॉल्ट JavaScript रनटाइम है जिसे मैं
00:00:29अपने अधिकांश प्रोजेक्ट्स में इस्तेमाल करता हूँ।
00:00:30और वास्तव में, एक सुखद संयोग यह है कि,
00:00:32मैंने पिछले हफ्ते BUN पर एक बिल्कुल नया कोर्स पब्लिश किया है।
00:00:35और यह Rust वर्ज़न के लिए भी वैसे ही काम करता है
00:00:37जैसे यह SIG वर्ज़न के लिए करता था।
00:00:39तो अगर आप BUN को थोड़ा गहराई से समझना चाहते हैं
00:00:41और इसके सभी मुख्य API के बारे में जानना चाहते हैं,
00:00:44क्योंकि यह BUN के सबसे बड़े फायदों में से एक है,
00:00:46कि इसमें बहुत कुछ पहले से ही शामिल (built-in) है।
00:00:48कुछ लोगों को यह पसंद नहीं है, मुझे यह बहुत पसंद है।
00:00:50अगर आप इसके बारे में और सीखना चाहते हैं,
00:00:51तो वह कोर्स आपके लिए दिलचस्प हो सकता है।
00:00:53लेकिन आइए अब हम करीब से देखते हैं
00:00:54कि पोर्टिंग की पूरी टाइमलाइन क्या थी, क्या कहते हैं?
00:00:58यह असल में दो महीने पहले हुआ था।
00:01:01तो ब्लॉग पोस्ट जुलाई में पिछले हफ्ते जारी की गई थी,
00:01:04लेकिन पोर्टिंग खुद मई में हुई थी।
00:01:08और इसकी शुरुआत मई की शुरुआत में हुई
00:01:10जब आधिकारिक BUN गिटहब रिपॉजिटरी पर
00:01:13CloudFaserPort शाखा (branch) खोजी गई थी।
00:01:15उस शाखा में एक पोर्टिंग MD फ़ाइल थी,
00:01:18एक मार्कडाउन फ़ाइल जिसमें निर्देश थे
00:01:21कि SIG कोड को Rust कोड में कैसे बदला जाए,
00:01:23उस कोड को कैसे पोर्ट किया जाए, अनुवाद तालिकाओं (translation tables) के साथ,
00:01:27और सामान्य निर्देश थे।
00:01:28और हम इस पर वापस आएंगे कि वह फ़ाइल कैसे बनाई गई थी,
00:01:30क्योंकि जाहिर है कि इसमें AI शामिल था,
00:01:32जैसा कि आप शायद अनुमान लगा सकते हैं, थोड़े समय बाद।
00:01:34उसकी खोज हुई।
00:01:36तो स्वाभाविक रूप से, हैकर न्यूज़ और X पर चर्चा शुरू हो गई।
00:01:40और कुछ लोग इसे लेकर उत्साहित थे।
00:01:43कुछ लोग इसके बहुत आलोचक थे।
00:01:46लेकिन उस समय, हम बहुत कुछ नहीं जानते थे।
00:01:47जाहिर है, Rust के आसपास काफी ध्रुवीकरण (polarization) है।
00:01:52ऐसे लोग हैं जो Rust से प्यार करते हैं, मेरी तरह।
00:01:55ऐसे लोग हैं जो Rust से नफरत करते हैं।
00:01:57ऐसे लोग हैं जो इस बात से नफरत करते हैं कि
00:01:58सब कुछ Rust में फिर से लिखा जाना चाहिए,
00:02:00क्योंकि अक्सर आप पढ़ते हैं
00:02:03कि लोग चाहते हैं कि प्रोग्राम XYZ को Rust में फिर से लिखा जाए।
00:02:06और मैं समझता हूँ कि यह परेशान करने वाला है।
00:02:08लेकिन स्वाभाविक रूप से, इसीलिए,
00:02:09वहाँ बहुत अधिक ध्रुवीकरण हो रहा था।
00:02:11लेकिन पोर्ट अभी तक नहीं हुआ था।
00:02:15वह मई में बाद में बदल गया।
00:02:16और 14 मई को, एक आधिकारिक पुल रिक्वेस्ट खोली गई,
00:02:22और फिर उसे मर्ज भी कर दिया गया,
00:02:24जिसने वास्तव में BUN कोड बेस को माइग्रेट किया,
00:02:28पूरा का पूरा, SIG से Rust में।
00:02:30अब, जैसा कि आप देख सकते हैं, यह एक विशाल पुल रिक्वेस्ट है।
00:02:32कोड की दस लाख से अधिक लाइनें जोड़ी गई थीं।
00:02:35और SIG कोड को हटाने का काम
00:02:39एक अलग चरण में हुआ।
00:02:40तो हाँ, इसीलिए यह सीधा अदला-बदली (swap) नहीं है।
00:02:42लेकिन यह एक बड़ा बदलाव है, जैसा कि आप देख सकते हैं,
00:02:44लगभग 7,000 कमिट के साथ।
00:02:46अब, स्वाभाविक रूप से, उस कोड की समीक्षा इंसानों द्वारा नहीं की गई थी,
00:02:51कम से कम पूरी तरह से नहीं।
00:02:52इसकी समीक्षा AI द्वारा की गई थी।
00:02:54इसमें टेस्ट पास हुए थे, लेकिन इसकी समीक्षा इंसानों द्वारा नहीं की गई थी।
00:02:59और हम इस पर वापस आएंगे कि AI का उपयोग कैसे किया गया, बस एक सेकंड में।
00:03:02लेकिन इसे पब्लिश या मर्ज किया गया था।
00:03:06और निश्चित रूप से, अब और अधिक चर्चा शुरू हो गई।
00:03:08जैसा कि मैंने अभी उल्लेख किया है, इसकी समीक्षा इंसानों द्वारा नहीं की गई थी।
00:03:10बेशक, उस समय सीमा में ऐसा करना असंभव है।
00:03:14लेकिन समुदाय ने इसमें गहराई से देखा और
00:03:17इसके हिस्सों का विश्लेषण किया।
00:03:19और फिर एक और, या पहली ब्लॉग पोस्ट आई,
00:03:23सभी विवरणों के बारे में आधिकारिक पोस्ट नहीं,
00:03:25बल्कि Buntine द्वारा असुरक्षित (unsafe) के उपयोग के बारे में एक पहली ब्लॉग पोस्ट या बयान जारी किया गया
00:03:29असुरक्षित (unsafe) के उपयोग के बारे में।
00:03:32क्योंकि इस पुल रिक्वेस्ट के बाद एक बड़ी आलोचना यह सामने आई
00:03:37कि इसमें मौजूद Rust कोड मुहावरेदार (idiomatic) Rust नहीं था।
00:03:41यह उस तरह का Rust कोड नहीं था जिसे आपको लिखना चाहिए
00:03:44अगर आप इसे शुरू से बना रहे होते।
00:03:46इसके बजाय, यह वास्तव में SIG से Rust में अनुवाद जैसा था।
00:03:50और इसका मतलब यह था कि Rust की सभी सर्वोत्तम प्रथाओं
00:03:54और पैटर्न्स का उपयोग नहीं किया गया था।
00:03:55और विशेष रूप से, वहां काफी अच्छी मात्रा में
00:03:58असुरक्षित (unsafe) उपयोग था।
00:04:00अब, असुरक्षित (unsafe) को समझने के लिए, आपको यह समझना होगा
00:04:03कि Rust मेमोरी का प्रबंधन कैसे करता है,
00:04:05क्योंकि यह इसके सबसे बड़े फायदों में से एक है,
00:04:08और यह अन्य भाषाओं से काफी अलग है।
00:04:10क्योंकि अधिकांश भाषाओं में, आपके पास या तो गार्बेज कलेक्टर होता है,
00:04:14जो एक ऐसी प्रक्रिया है जो मूल रूप से पता लगाती है
00:04:16कि कब कोई मान (value) प्रोग्राम में कहीं भी उपयोग नहीं किया जा रहा है
00:04:19और फिर मेमोरी खाली कर देता है, जो सुविधाजनक है,
00:04:21लेकिन अतिरिक्त संसाधनों की खपत करता है।
00:04:24या आपको इसे खुद करना होगा।
00:04:26उदाहरण के लिए, C जैसी भाषाओं में,
00:04:28आपको मैन्युअल रूप से मेमोरी आवंटित और मुक्त करनी होती है।
00:04:31और SIG में भी ऐसा ही है।
00:04:33आप वहाँ मेमोरी आवंटित कर सकते हैं, लेकिन आपको free भी कॉल करना होगा
00:04:37या जब आपको इसकी आवश्यकता न हो तो इसे खाली करना होगा।
00:04:40आप defer का उपयोग कर सकते हैं, जो अच्छा है।
00:04:43इसका मूल रूप से मतलब है कि आप इसे कॉल कर सकते हैं
00:04:47इससे पहले कि यह वास्तव में निष्पादित (execute) हो।
00:04:49यह defer है और स्वचालित रूप से कॉल किया जाएगा
00:04:52जब यह स्कोप समाप्त हो जाएगा, अनिवार्य रूप से।
00:04:55और यह अच्छा है क्योंकि अलग-अलग स्थितियां होती हैं
00:04:58जहाँ किसी मान (value) की आवश्यकता नहीं हो सकती है।
00:05:00लेकिन फिर भी, जब आपको मेमोरी को मैन्युअल रूप से साफ़ करना होता है,
00:05:04ऐसी कई स्थितियां हैं
00:05:05जहाँ आप खुद को नुकसान पहुँचा सकते हैं (shoot yourself in the foot)।
00:05:07आपके पास अधिक बारीक नियंत्रण होता है
00:05:09और यह बहुत उपयोगी, बहुत कुशल हो सकता है,
00:05:11लेकिन ऐसी स्थितियों को भूल जाना भी आसान है
00:05:15अधिक जटिल प्रोग्रामों में
00:05:16जहाँ आप मेमोरी को साफ नहीं कर रहे हो सकते हैं,
00:05:19जिससे मेमोरी लीक हो सकती है,
00:05:20या जहाँ आप दो बार सफाई कर रहे हो सकते हैं,
00:05:23जिससे एक त्रुटि (error) भी होगी।
00:05:25और इसलिए एक ट्रेड-ऑफ़ है।
00:05:27और Rust का दृष्टिकोण अलग है।
00:05:30Rust में, स्वामित्व (ownership) नामक एक अवधारणा है,
00:05:32जिसका अर्थ है कि हर मान (value) का केवल एक मालिक होता है,
00:05:36और यह स्कोप से बंधा होता है।
00:05:38तो अगर आपके पास एक स्कोप है,
00:05:39और आप कर्ली ब्रेसिज़ का उपयोग करके स्कोप बना सकते हैं,
00:05:41या किसी फ़ंक्शन का भी अपना स्कोप होगा।
00:05:43आप JavaScript से उस अवधारणा को जानते होंगे।
00:05:46अगर आपके पास स्कोप है,
00:05:47तो जब वहाँ कोई मान बनाया जाता है,
00:05:49तो वह उस स्कोप का होता है।
00:05:51और अगर स्कोप समाप्त हो जाता है, तो उसे खाली कर दिया जाता है।
00:05:53और वह निश्चित रूप से बहुत सुविधाजनक है
00:05:55क्योंकि आपको इसे खाली करने की चिंता करने की आवश्यकता नहीं है।
00:05:58आपके पास गार्बेज कलेक्टर भी नहीं है।
00:06:00इसके बजाय, आपके पास वह स्पष्ट नियम है।
00:06:02यह अधिक जटिल प्रोग्रामों में जटिलता का कारण बन सकता है
00:06:05जहाँ आपको मानों को इधर-उधर करने की आवश्यकता होती है।
00:06:07आप Rust में ऐसा कर सकते हैं,
00:06:08लेकिन इसके लिए सोचने का एक अलग तरीका चाहिए।
00:06:11लेकिन बेशक यह आपको मेमोरी सुरक्षा देता है,
00:06:14जब तक आप असुरक्षित (unsafe) कीवर्ड का उपयोग न करें।
00:06:19यदि आप इसका उपयोग करते हैं, तो आप एक असुरक्षित (unsafe) स्कोप बना सकते हैं।
00:06:22और उसमें, वे नियम अब लागू नहीं होते।
00:06:24और फिर यह सुनिश्चित करना आपका काम है
00:06:26कि मेमोरी का उचित प्रबंधन किया जाए।
00:06:28अब, आप ऐसा क्यों करेंगे?
00:06:29खैर, उदाहरण के लिए,
00:06:31यदि आप किसी C लाइब्रेरी को अंदर खींच रहे हैं,
00:06:33जो आप Rust में कर सकते हैं,
00:06:34आप कुछ C कोड मिला सकते हैं, ऐसा कहें,
00:06:37या कुछ C लाइब्रेरी विधियों और फ़ंक्शंस को कॉल कर सकते हैं,
00:06:40तो चूंकि C स्वाभाविक रूप से असुरक्षित (unsafe) है,
00:06:44वह कोड जहाँ आप उस C कोड तक पहुँचते हैं, वह भी असुरक्षित है।
00:06:48तो आपको हमारे असुरक्षित कोड के साथ बातचीत करने के लिए उस सुविधा की आवश्यकता है।
00:06:52और यह भी एक बात है जिसे उन्होंने नोट किया
00:06:54उस आधिकारिक बयान में,
00:06:56कि कोड बेस में वे सभी असुरक्षित (unsafe) उपयोग
00:07:00का एक अच्छा हिस्सा वास्तव में कॉल से संबंधित था,
00:07:04अन्य लाइब्रेरीज़, C लाइब्रेरीज़, आदि को,
00:07:07जो नहीं बदलेगा।
00:07:08लेकिन उन्होंने ऐसे क्षेत्रों की भी पहचान की
00:07:10जहाँ वे वास्तव में कोड में सुधार कर सकते थे
00:07:13और असुरक्षित (unsafe) से छुटकारा पा सकते थे।
00:07:14और उन्होंने उल्लेख किया कि वे ऐसा करेंगे
00:07:15बाद की पुल रिक्वेस्ट्स में।
00:07:18और उन्होंने किया और अभी भी ऐसा कर रहे हैं।
00:07:20तो आप इस शुरुआती पोर्ट के बारे में सोच सकते हैं
00:07:22एक शुरुआती बिंदु के रूप में,
00:07:24जिसे समय के साथ परिष्कृत किया गया।
00:07:26यह अभी भी उल्लेख करने योग्य है कि यह शुरुआती पुल रिक्वेस्ट,
00:07:28या वह विशाल पुल रिक्वेस्ट,
00:07:30पहले से ही टेस्ट पास कर रही थी।
00:07:32तो यह स्थिर (stable) था, टेस्ट पास हो रहे थे,
00:07:35लेकिन कोड उस कोड गुणवत्ता का नहीं था
00:07:37जिसकी आप शायद उम्मीद करेंगे अगर इसे Rust में लिखा गया होता
00:07:40शुरू से, क्योंकि वह लक्ष्य नहीं था।
00:07:43तो वह 21 मई थी।
00:07:45फिर सन्नाटा छा गया।
00:07:46और यह भी ध्यान देने योग्य है कि BUN का यह वर्ज़न
00:07:49अभी जारी नहीं किया गया था।
00:07:50और जब मैं इसे रिकॉर्ड कर रहा हूँ, तो यह अभी भी लाइव नहीं है।
00:07:52जब आप अभी BUN इंस्टॉल कर रहे हैं,
00:07:54आपको अभी भी SIG वर्ज़न मिल रहा है,
00:07:56लेकिन यह अब किसी भी दिन बदल सकता है।
00:07:58लेकिन फिर 8 जुलाई को,
00:07:59आधिकारिक ब्लॉग पोस्ट जारी की गई थी
00:08:02जहाँ हमें बहुत सारे दिलचस्प विवरण मिलते हैं
00:08:04इस पोर्ट के बारे में।
00:08:06और इसे पढ़ना वास्तव में सार्थक है।
00:08:07मैं इसे नीचे लिंक कर दूँगा
00:08:08क्योंकि यहाँ सीखने के लिए बहुत कुछ है।
00:08:11यह पूरा पोर्ट, और यह कोई रहस्य नहीं है,
00:08:13यह पूरी तरह से AI की मदद से किया गया था।
00:08:15यह ध्यान रखना महत्वपूर्ण है कि BUN का स्वामित्व Anthropic के पास है।
00:08:18इसलिए उनके पास उन सभी टोकन तक मुफ्त पहुँच थी
00:08:22और विशेष रूप से Fable 5 तक भी
00:08:24इससे पहले कि इसे जनता के लिए जारी किया जाता।
00:08:26यह पोर्ट Fable 5 के साथ किया गया था।
00:08:29और वैसे, यदि आप अभी Cloud Code इंस्टॉल कर रहे हैं,
00:08:32भले ही BUN 1.4, जो कि Rust वर्ज़न है, अभी जारी नहीं हुआ है,
00:08:36Cloud Code पहले से ही ऊपर चल रहा है
00:08:39BUN के एक अप्रकाशित वर्ज़न पर, यूँ कहें,
00:08:42जो कि Rust वर्ज़न है।
00:08:44तो यह बात है।
00:08:45लेकिन हाँ, यह पोर्ट Cloud Code के साथ किया गया था
00:08:48Fable 5 पर आधारित, मुफ्त टोकन के साथ, निश्चित रूप से,
00:08:52अनिवार्य रूप से, चूँकि BUN Anthropic का हिस्सा है।
00:08:54और इसे ध्यान में रखना महत्वपूर्ण है
00:08:56क्योंकि उस ब्लॉग पोस्ट में,
00:08:58हम सीखते हैं कि यदि आप सभी टोकन को मिला दें,
00:09:03या यदि आप उन सभी टोकन का योग कर लें
00:09:04जो खर्च किए गए थे और API कीमतें लगा दी जाएँ,
00:09:08तो यह पूरा पोर्ट लगभग $160,000 का होता।
00:09:13यह एक चौंकाने वाली संख्या है, लेकिन वास्तव में,
00:09:18यदि आप इस प्रोजेक्ट के दायरे के बारे में सोचें,
00:09:20और दायरा यह है कि BUN, SIG कोड की 535,000 लाइनें था,
00:09:26यदि आप उस दायरे के बारे में सोचें
00:09:28और कि इंसानों को उसे Rust में पोर्ट करने में कितना समय लगेगा,
00:09:32तो $160,000 वास्तव में इतने बुरे नहीं लग सकते,
00:09:36इस पर निर्भर करता है कि आप कहाँ स्थित हैं।
00:09:38खैर, फिर भी, यह स्पष्ट है कि कोई भी ओपन सोर्स प्रोजेक्ट
00:09:43ऐसा करने में सक्षम नहीं होगा।
00:09:44और अधिकांश कंपनियाँ शायद ऐसा नहीं कर पाएंगी
00:09:47या पोर्ट पर इतनी राशि खर्च करने को तैयार नहीं होंगी।
00:09:50यह संभव है क्योंकि BUN, Anthropic का हिस्सा है।
00:09:54और निश्चित रूप से, यह Anthropic के लिए एक अच्छा मार्केटिंग स्टंट भी है।
00:09:58शायद यह मुख्य उद्देश्य नहीं रहा होगा।
00:09:59मैं यह नहीं जानता।
00:10:03लेकिन निश्चित रूप से, यह एक अच्छी मार्केटिंग है।
00:10:04यह सब ध्यान में रखना महत्वपूर्ण है।
00:10:06फिर भी, यह सब ध्यान में रखना महत्वपूर्ण है।
00:10:08बहरहाल, इस ब्लॉग पोस्ट में,
00:10:10हम जान सकते हैं कि जेरेड ने वह पोर्ट कैसे किया
00:10:14या उसने उस पोर्ट को कैसे काम में लिया।
00:10:18और वह सब उस पोर्टिंग MD फाइल से शुरू हुआ,
00:10:21जिसे उसने क्लाउड के साथ चर्चा में बनाया था,
00:10:25तीन घंटे की चर्चा में,
00:10:26जैसा कि उसने ब्लॉग पोस्ट में उल्लेख किया है,
00:10:28जहाँ उसने अनिवार्य रूप से क्लाउड कोड और एंथ्रोपिक मॉडलों के साथ
00:10:32फैसला किया कि
00:10:35ऐसी पोर्टिंग MD फाइल को कैसा दिखना चाहिए
00:10:37SIG को Rust कोड में अनुवाद करने में सक्षम होने के लिए।
00:10:40फिर एक बार जब उसने उस पर पुनरावृत्ति की और उससे खुश था,
00:10:44उसने शुरुआत में तीन फाइलों पर इसका परीक्षण किया।
00:10:46और एक बार जब वह उससे खुश हो गया,
00:10:48तो उसने पूरे BUN कोड बेस पर क्लाउड को उतार दिया।
00:10:53अब इस ब्लॉग पोस्ट में,
00:10:54वह स्पष्ट करता है कि उसने सिर्फ क्लाउड को प्रॉम्ट नहीं दिया
00:10:57BUN और Rust को फिर से लिखने के लिए, कोई गलती न करें,
00:11:00बल्कि इसके बजाय उसने एक विस्तृत प्रणाली स्थापित की
00:11:03जहाँ उसके पास एक मुख्य एजेंट था,
00:11:07जो उप-एजेंटों को भी सक्रिय करता था, निश्चित रूप से,
00:11:09पोर्टिंग MD फाइल के अनुसार पोर्टिंग कर रहे थे।
00:11:13और फिर उसके पास दो प्रतिपक्षी समीक्षा एजेंट थे
00:11:16जिन्होंने मुख्य एजेंट के काम की समीक्षा की एक बार जब यह हो गया
00:11:19और प्रतिक्रिया प्रदान की,
00:11:21और फिर उस प्रतिक्रिया को लागू करने के लिए एक फिक्सर एजेंट।
00:11:24और उसने यह सब एक लूप में चलाया
00:11:25और निश्चित रूप से कई कार्य वृक्षों में वितरित किया
00:11:30ताकि पूरे कोड बेस को प्रोसेस किया जा सके
00:11:33और इसके माध्यम से अपना रास्ता काम करें।
00:11:35ब्लॉग पोस्ट में,
00:11:35उसने उल्लेख किया कि उसने BUN और Rust को फिर से लिखा
00:11:38क्लाउड कोड में 50 गतिशील वर्कफ़्लो का उपयोग करके,
00:11:40जो ये वर्कफ़्लो हैं जो बहुत सारे उप-एजेंटों को सक्रिय करते हैं
00:11:4311 दिनों के दौरान।
00:11:46और उसके पास वहां एक अच्छा चार्ट भी है।
00:11:48सामान्य तौर पर, ब्लॉग पोस्ट में,
00:11:49वहां अच्छे ग्राफिक्स हैं
00:11:51जो इसे पचाना थोड़ा आसान बनाते हैं,
00:11:53जो बनाए गए कमिट्स की संख्या दिखाते हैं
00:11:56और फिर अलग-अलग दिनों पर पुश किए गए
00:11:58और फिर दिन के समय।
00:12:00तो यह सब क्लाउड कोड में लूप की मदद से हुआ,
00:12:04बहुत सारे उप-एजेंटों की मदद से
00:12:05और एक मुख्य एजेंट की स्पष्ट प्रक्रिया,
00:12:08समीक्षा एजेंटों और फिक्सर एजेंट के साथ।
00:12:10और फिर उसने एक और अलग रास्ता भी अपनाया
00:12:15यूँ कहें कि उन सभी परीक्षणों को काम में लाने का।
00:12:20और इसने अपनी चुनौतियां लाईं
00:12:22क्योंकि टेस्ट सुइट इतना बड़ा और जटिल है
00:12:25कि वह विभिन्न बुनियादी ढांचे के प्रतिबंधों में फंस गया
00:12:29क्योंकि कुछ परीक्षण बहुत अधिक मेमोरी का उपभोग करते हैं
00:12:31और समानांतर में कई परीक्षण चलाना,
00:12:33इसलिए यह काम नहीं करता है।
00:12:34लेकिन अंततः उसने AI की मदद से वह सब भी काम में लिया,
00:12:39परीक्षण चलाना, कोड को ठीक करना,
00:12:42परीक्षणों को फिर से चलाना आदि।
00:12:43तो बहुत सारी लूपिंग, बहुत सारे एजेंट और उप-एजेंट शामिल थे,
00:12:47स्वाभाविक रूप से, और बहुत सारे टोकन जल गए।
00:12:49$165,000 के टोकन जल गए।
00:12:53अब फिर से, आप गहराई में जा सकते हैं,
00:12:55और यही वह है जो मैं करने की सलाह दूंगा
00:12:57यदि आप सभी छोटी-मोटी बारीकियों में रुचि रखते हैं।
00:12:59यह वहां तक पहुँचने की यात्रा का दस्तावेजीकरण करने वाला एक बहुत अच्छा ब्लॉग पोस्ट है।
00:13:03लेकिन यह संक्षेप में है कि 11 दिनों में पोर्ट कैसे हुआ
00:13:08उन सभी एजेंटों और उप-एजेंटों के साथ जो कई वर्कफ़्लो में वितरित थे,
00:13:1250 ऐसे वर्कफ़्लो, जैसा कि हमने 11 दिनों के दौरान सीखा,
00:13:17$165,000 API कीमतों पर टोकन में खर्च किए गए।
00:13:24अब, अंत में, एक बार जब ब्लॉग पोस्ट में उसका काम हो गया,
00:13:29उसने उल्लेख किया कि Bun 1.4 उन विभिन्न बग्स को ठीक करता है जो पिछले SICK वर्ज़न में हैं,
00:13:35कि यह अधिक मेमोरी कुशल है, कि यह छोटा है।
00:13:38और जैसा कि हम एंड्रयू केली, जो SICK के निर्माता हैं, की प्रतिक्रिया से सीखते हैं,
00:13:43इनमें से कुछ सुधार संभवतः SICK के साथ भी हासिल किए जा सकते थे।
00:13:47लेकिन वह ब्लॉग पोस्ट काफी दिलचस्प है क्योंकि इसे संपादित किया गया था।
00:13:53यह शुरू में जितना था, अब उससे कम गुस्से से भरा है।
00:13:57पहला वर्ज़न व्यक्तिगत हमलों से भरा था,
00:14:00सिर्फ यह कहने के लिए कि यह व्यक्तिगत हमला नहीं था,
00:14:03लेकिन यह व्यक्तिगत हमलों से भरा था।
00:14:05नवीनतम वर्ज़न, जिसे मैं नीचे लिंक भी करूंगा, अभी भी काफी तीखा है।
00:14:11अंत में, आप पहले वर्ज़न को पढ़कर स्पष्ट रूप से बता सकते हैं,
00:14:14लेकिन इस वर्ज़न को भी,
00:14:16कि एंड्रयू, SICK के निर्माता और जेरेड, Bun के निर्माता,
00:14:21वे अब या फिर से सबसे अच्छे दोस्त नहीं बनेंगे।
00:14:26अब, वह Bun को SICK का समर्थन करने के लिए धन्यवाद देता है, आर्थिक रूप से भी,
00:14:31सिर्फ मूल रूप से इस पूरे पोर्ट के बारे में गुस्सा करने के लिए और यह कैसे आवश्यक नहीं होता
00:14:41यदि Bun कोड उचित SICK में लिखा गया होता।
00:14:44वह बहुत स्पष्ट करता है कि उसे ऐसा नहीं लगता कि Bun रिपॉजिटरी,
00:14:48SICK वर्ज़न में, उच्च कोड गुणवत्ता थी और इससे कई समस्याएं हुईं।
00:14:53और वह सच हो भी सकता है और नहीं भी।
00:14:56मुझे लगता है कि यह बिल्कुल संभव है कि Bun के पैमाने की परियोजना में,
00:15:01उस गति से चलना जिसमें Bun चलता है,
00:15:06कोड गुणवत्ता SICK के निर्माता के मानकों के अनुरूप नहीं रही होगी।
00:15:12आप निश्चित रूप से तर्क दे सकते हैं कि अधिकांश कोड प्रोजेक्ट्स
00:15:15में आवश्यक रूप से उच्चतम कोड गुणवत्ता नहीं होती है।
00:15:18तो आप जो चाहें बना सकते हैं।
00:15:21अब, मैं इसे वहीं छोड़ दूंगा।
00:15:24मुझे लगता है कि कुल मिलाकर प्रतिक्रिया ब्लॉग पोस्ट काफी कमजोर है
00:15:29क्योंकि यह गुस्से से उबल रहा है।
00:15:33इसमें कुछ वैध बिंदु हैं।
00:15:35जैसे, उदाहरण के लिए, ब्लॉग पोस्ट में जेरेड बनाता है,
00:15:40वह उल्लेख करता है कि SICK से Rust तक के पोर्ट को मान्य किया गया था,
00:15:46निश्चित रूप से, इन सभी समीक्षक एजेंटों के साथ,
00:15:48लेकिन परीक्षण सुइट चलाकर और उसे काम में लाकर भी।
00:15:51और एंड्रयू सही ढंग से बताता है कि, निश्चित रूप से, वही टेस्ट सुइट
00:15:56SICK वर्ज़न महान है यह साबित करने के लिए पर्याप्त होना चाहिए था या नहीं।
00:16:00तो शायद टेस्ट सुइट में भी सुधार किया जाना चाहिए था।
00:16:04किसी भी तरह, निश्चित रूप से ये दोनों सबसे अच्छे दोस्त नहीं बनेंगे।
00:16:09और मुझे इस बारे में कोई राय नहीं है कि SICK या Rust सामान्य रूप से या Bun के लिए बैटरी भाषा है।
00:16:17हालांकि, मेरा मानना है कि AI के साथ, Rust और उसका मेमोरी मॉडल और तथ्य
00:16:23कि आपको कई मेमोरी संबंधित समस्याओं के लिए संकलन समय त्रुटियां मिलती हैं, एक बड़ा लाभ है,
00:16:30विशेष रूप से AI के युग में, क्योंकि, निश्चित रूप से, यह पूरा पोर्ट वास्तव में प्रभावशाली है
00:16:38जब AI के उपयोग की बात आती है।
00:16:41और निश्चित रूप से, यह AI का उपयोग करने का एक तरीका है जिसे हम में से अधिकांश वहन नहीं कर पाएंगे
00:16:45या कंपनियों में वहन करने के इच्छुक नहीं होंगे।
00:16:48लेकिन यह प्रभावशाली है कि मैं ऐसा करने में सक्षम था।
00:16:52और यह वाइब कोडिंग या सिर्फ YOLO प्रॉम्टिंग नहीं है।
00:16:56इसके पीछे एक स्पष्ट प्रक्रिया है।
00:16:59इसमें बहुत सोचा गया था, जिसे मैंने उम्मीद है कि स्पष्ट कर दिया है, जो निश्चित रूप से स्पष्ट भी हो जाता है
00:17:05यदि आप छोटी-मोटी तकनीकी बारीकियों में गोता लगाते हैं।
00:17:08लेकिन सभी योजना, सेटअप के साथ सभी पुनरावृत्ति के साथ, जिस तरह से इसे संपर्क किया गया था,
00:17:13स्पष्ट रूप से यह सिर्फ एक प्रॉम्ट नहीं था जो इस पर फेंका गया था।
00:17:17और फिर हम देखेंगे कि हम कहां पहुंचते हैं, यह दिखाता है कि आप AI के साथ क्या कर सकते हैं।
00:17:21और निश्चित रूप से, एक कोड बेस को एक भाषा से दूसरी भाषा में पोर्ट करना AI के लिए एक बहुत अच्छा उपयोग मामला है।
00:17:27यदि आप इसके बारे में सोचें, तो AI निश्चित रूप से नया कोड लिखने में संघर्ष कर सकता है।
00:17:32यह वह कोड नहीं लिख सकता है जिसे आप लिखना चाहते थे, कोड सम्मेलनों का पालन न करें
00:17:36या शैलियां जिनका आप पालन करना चाहते थे, और यह चीजों को गड़बड़ भी कर सकता है।
00:17:40अब, यह निश्चित रूप से AI नया सॉफ्टवेयर बनाने के लिए भी अद्भुत है।
00:17:43लेकिन आप वहां एक पोर्ट के साथ समस्याओं का एक अलग सेट का सामना करते हैं।
00:17:47सबसे बड़ा लाभ यह है कि आपके पास AI के लिए सिर्फ देखने और अनुवाद करने के लिए एक कोड बेस है,
00:17:53जो कुछ ऐसा है जो AI कर सकता है, और आपके पास वहां एक टेस्ट सुइट है।
00:17:57तो बनाने के लिए बहुत कुछ है।
00:17:59यह AI के लिए एक अच्छा उपयोग मामला है, जैसा कि प्रतीत होता है, और जैसा कि यह पोर्ट स्पष्ट रूप से साबित करता है।
00:18:04और मुझे लगता है कि यह यहाँ सबसे दिलचस्प निष्कर्ष है।
00:18:08साथ ही यह भी कि आप उन परियोजनाओं से निपट सकते हैं जो बस असंभव रही होतीं
00:18:12पहले निपटना।
00:18:13फिर से, हर किसी के लिए नहीं, लेकिन कुछ आकारों की कुछ कंपनियों के लिए।
00:18:18यह दिलचस्प हो सकता है।
00:18:19AI की मदद से विरासत सॉफ्टवेयर का आधुनिकीकरण करना एक बहुत अच्छा उपयोग मामला हो सकता है।
00:18:26और यह दिखाता है और साबित करता है कि ऐसा किया जा सकता है।
00:18:30अब, निश्चित रूप से, BUN 1.4 अभी बाहर नहीं आया है।
00:18:32हम देखेंगे कि क्या सब कुछ क्रैश हो जाता है और उन्हें अब से एक महीने में वापस जाना पड़ता है।
00:18:36आप इसे पूरी तरह से खारिज नहीं कर सकते, लेकिन मुझे व्यक्तिगत रूप से नहीं लगता कि ऐसा होगा।
00:18:40कुछ शुरुआती अपनाने वाले इसे पहले से ही प्रोडक्शन में इस्तेमाल कर रहे हैं, जैसे कि क्लाउड कोड सीएलआई।
00:18:47इसका व्यापक रूप से परीक्षण और समीक्षा की गई है, भले ही, निश्चित रूप से, AI द्वारा, मानव समीक्षकों द्वारा नहीं।
00:18:54लेकिन मुझे पूरा विश्वास है कि यह काम करेगा और मुझे यह एक काफी प्रभावशाली उपलब्धि और AI का काफी प्रभावशाली उपयोग लगता है।
00:19:03लेकिन हमेशा की तरह, मैं यह सुनने में भी रुचि रखता हूं कि इन सबके बारे में आपके क्या विचार हैं।

Key Takeaway

BUN का SIG से Rust में पोर्ट होना AI-संचालित एजेंटिक वर्कफ़्लो के माध्यम से जटिल सॉफ़्टवेयर आधुनिकीकरण की क्षमता और इसकी 165,000 डॉलर की लागत को प्रमाणित करता है।

Highlights

  • BUN रनटाइम को SIG से Rust में पूरी तरह पोर्ट करने के लिए 11 दिनों तक 50 गतिशील वर्कफ़्लो चलाए गए।

  • इस पोर्टिंग प्रक्रिया में लगभग 165,000 डॉलर की API लागत वाले टोकन खर्च हुए।

  • पूरे माइग्रेशन में 535,000 लाइनें SIG कोड की शामिल थीं और 7,000 से अधिक कमिट किए गए।

  • पोर्टिंग प्रक्रिया को Fable 5 मॉडल के साथ एक विस्तृत एजेंटिक लूप (मुख्य एजेंट, समीक्षा एजेंट, फिक्सर एजेंट) द्वारा निष्पादित किया गया।

  • Rust में माइग्रेट करने के बाद मेमोरी प्रबंधन के लिए आवश्यक 'unsafe' कीवर्ड का उपयोग कम करने के लिए भविष्य में और सुधार किए जाएंगे।

Timeline

BUN के Rust में पोर्ट होने की समयरेखा

  • पोर्टिंग की आधिकारिक शुरुआत मई 2026 में हुई जब गिटहब रिपॉजिटरी में पोर्टिंग शाखा खोजी गई।
  • 14 मई को एक विशाल पुल रिक्वेस्ट के माध्यम से पूरा BUN कोड बेस SIG से Rust में स्थानांतरित कर दिया गया।
  • प्रारंभिक कोड में 'unsafe' रस्ट कोड की प्रचुरता के कारण समुदाय ने इसकी आलोचना की।

मई की शुरुआत में आधिकारिक रिपॉजिटरी पर एक 'CloudFaserPort' शाखा दिखाई दी, जिसमें अनुवाद निर्देशों वाली मार्कडाउन फ़ाइल मौजूद थी। 14 मई को दस लाख से अधिक नई लाइनों के साथ एक विशाल पुल रिक्वेस्ट को मर्ज किया गया। यद्यपि कोड टेस्ट पास कर रहा था, लेकिन इसे 'मुहावरेदार (idiomatic) Rust' के बजाय सीधा अनुवाद माना गया, जिसमें बड़ी संख्या में 'unsafe' स्कोप थे।

AI-आधारित पोर्टिंग प्रक्रिया और लागत

  • पूरा पोर्टिंग कार्य Anthropic के Fable 5 मॉडल और क्लाउड कोड का उपयोग करके संपन्न हुआ।
  • 50 गतिशील वर्कफ़्लो ने 11 दिनों तक लगातार एजेंटिक लूप के माध्यम से कोड को प्रोसेस किया।
  • इस पूरी परियोजना के लिए API टोकन पर 165,000 डॉलर का खर्च आया।

यह पोर्ट बिना किसी मानवीय समीक्षा के पूरी तरह AI द्वारा निष्पादित किया गया। जेरेड ने एक मुख्य एजेंट बनाया जो उप-एजेंटों, समीक्षा करने वाले एजेंटों और फिक्सर एजेंटों के साथ समन्वय करता था। इस प्रक्रिया में 535,000 लाइनें कोड की शामिल थीं, और यह पोर्टिंग MD फ़ाइल द्वारा निर्देशित थी जो पहले ही क्लाउड के साथ तीन घंटे के परामर्श से तैयार की गई थी।

आलोचना और भविष्य के निहितार्थ

  • SIG के निर्माता एंड्रयू केली ने मूल कोड की गुणवत्ता और इस पोर्ट की आवश्यकता पर आपत्ति जताई।
  • AI का उपयोग विरासत कोड को दूसरी भाषा में अनुवाद करने और पोर्ट करने के लिए एक अत्यधिक प्रभावी उपकरण साबित हुआ।
  • पोर्ट किया गया वर्ज़न (BUN 1.4) वर्तमान में क्लाउड कोड CLI में सक्रिय है।

परियोजना के बाद हुई बहस में मूल SIG कोड की गुणवत्ता और पोर्ट की आवश्यकता पर तीखी प्रतिक्रियाएँ देखी गईं। यह पोर्ट साबित करता है कि AI जटिल और बड़े सॉफ्टवेयर प्रोजेक्ट्स के आधुनिकीकरण के लिए एक व्यवहार्य साधन है, हालांकि ऐसी लागतें अधिकांश ओपन सोर्स प्रोजेक्ट्स के लिए अप्राप्य हैं। यह एक सफल प्रयोग है जिसने कोड को पोर्ट करने की नई संभावनाएं खोली हैं।

Community Posts

View all posts