إعادة كتابة Bun بلغة Rust إنجاز مذهل

MMaximilian Schwarzmüller
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00تم نقل BUN من 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وأيضاً فيما يتعلق بكيفية الاستفادة من الذكاء الاصطناعي
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والتعرف على جميع واجهات برمجة التطبيقات الأساسية التي يقدمها،
00:00:44لأن هذه إحدى أكبر مزايا BUN
00:00:46أنه يحتوي على الكثير من الأشياء المضمنة.
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عندما تم اكتشاف فرع CloudFaserPort
00:01:13في مستودع BUN الرسمي على GitHub.
00:01:15كان ذلك الفرع يحتوي على ملف MD للنقل،
00:01:18ملف ماركداون يحتوي على تعليمات
00:01:21حول كيفية تحويل كود SIG إلى كود Rust،
00:01:23كيفية نقل هذا الكود، وجداول الترجمة،
00:01:27وتعليمات عامة.
00:01:28وسنعود إلى كيفية إنشاء هذا الملف،
00:01:30لأنه بالطبع كان هناك ذكاء اصطناعي،
00:01:32كما قد تخمن، بعد قليل.
00:01:34تم اكتشاف ذلك.
00:01:36لذا بشكل طبيعي، نشأت نقاشات على Hacker News و X.
00:01:40وكان هناك أشخاص متحمسون لذلك.
00:01:43وكان هناك أشخاص ينتقدونه بشدة.
00:01:46ولكن في تلك اللحظة، لم نكن نعرف الكثير.
00:01:47من الواضح أن هناك الكثير من الاستقطاب حول Rust.
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لذا نعم، لهذا السبب ليست عملية تبديل.
00:02:42لكنه تغيير ضخم، كما ترون،
00:02:44مع ما يقرب من 7000 عملية التزام (commit).
00:02:46الآن، بشكل طبيعي، لم يتم مراجعة ذلك الكود بشرياً،
00:02:51على الأقل ليس بالكامل.
00:02:52لقد تمت مراجعته بواسطة الذكاء الاصطناعي.
00:02:54كانت هناك اختبارات اجتياز، لكن لم تتم مراجعته بشرياً.
00:02:59وسنعود إلى كيفية استخدام الذكاء الاصطناعي بعد ثانية واحدة.
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
00:03:29حول استخدام “غير آمن” (unsafe).
00:03:32لأن أحد الانتقادات الكبيرة التي ظهرت بعد طلب السحب هذا
00:03:37هو أن كود Rust الموجود هناك لم يكن Rust اصطلاحياً.
00:03:41لم يكن ذلك النوع من كود Rust الذي قد تكتبه أو يجب أن تكتبه
00:03:44إذا كنت تبني هذا من الصفر.
00:03:46بدلاً من ذلك، كان في الحقيقة ترجمة من SIG إلى Rust.
00:03:50وهذا يعني أنه لم يتم استخدام جميع أفضل ممارسات
00:03:54وأنماط Rust.
00:03:55وبشكل خاص، كانت هناك كمية معقولة
00:03:58من استخدام “غير آمن” (unsafe) هناك.
00:04:00الآن، لفهم “غير آمن”، يجب أن تفهم
00:04:03كيف تدير Rust الذاكرة.
00:04:05لأن هذه إحدى أكبر مزاياها،
00:04:08وهي مختلفة تماماً عن اللغات الأخرى.
00:04:10لأنه في معظم اللغات، لديك إما جامع قمامة (garbage collector)،
00:04:14وهو عملية تكتشف بشكل أساسي
00:04:16عندما لا يتم استخدام قيمة في أي مكان في البرنامج
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قبل تنفيذها فعلياً.
00:04:49يتم تأجيلها وسيتم استدعاؤها تلقائياً
00:04:52عندما ينتهي هذا النطاق، بشكل أساسي.
00:04:55وهذا جيد لأن هناك مواقف مختلفة
00:04:58حيث قد لا تعود هناك حاجة إلى قيمة ما.
00:05:00ولكن مع ذلك، عندما تضطر إلى تنظيف الذاكرة يدوياً،
00:05:04هناك العديد من المواقف
00:05:05حيث يمكنك إيذاء نفسك.
00:05:07لديك تحكم أكثر دقة
00:05:09ويمكن أن يكون ذلك مفيداً جداً، وفعالاً جداً،
00:05:11ولكن من السهل أيضاً نسيان مواقف
00:05:15في البرامج الأكثر تعقيداً
00:05:16حيث قد لا تقوم بتنظيف الذاكرة،
00:05:19وبالتالي التسبب في تسريب ذاكرة،
00:05:20أو حيث قد تقوم بالتنظيف مرتين،
00:05:23وهو ما سيسبب خطأ أيضاً.
00:05:25ولذلك هناك مقايضة.
00:05:27ولدى Rust نهج مختلف.
00:05:30في Rust، لديك مفهوم يسمى الملكية (ownership)،
00:05:32مما يعني أن كل قيمة لها مالك واحد فقط،
00:05:36وهي مرتبطة بالنطاق (scope).
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إذا استخدمتها، يمكنك إنشاء نطاق غير آمن.
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 غير آمنة بطبيعتها،
00:06:44فإن الكود الذي تصل فيه إلى كود C هذا غير آمن أيضاً.
00:06:48لذا تحتاج إلى تلك الميزة للتفاعل مع كود غير آمن.
00:06:52وهذا أيضاً شيء لاحظوه
00:06:54في ذلك البيان الرسمي،
00:06:56بأن كل تلك الاستخدامات غير الآمنة في قاعدة الكود
00:07:00بجزء جيد منها كانت مرتبطة فعلياً باستدعاءات،
00:07:04لمكتبات أخرى، مكتبات C، وما إلى ذلك،
00:07:07والتي لن تتغير.
00:07:08لكنهم حددوا أيضاً مجالات
00:07:10يمكنهم فيها فعلياً تحسين الكود
00:07:13والتخلص من غير الآمن.
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لذا كان مستقراً، وكانت الاختبارات تجتاز،
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تمت بمساعدة الذكاء الاصطناعي.
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:36فإن Cloud Code يعمل بالفعل فوق
00:08:39نسخة BUN غير مطروحة بعد، إذا جاز التعبير،
00:08:42وهي نسخة Rust.
00:08:44هذا هو الوضع.
00:08:45لكن نعم، تم هذا النقل باستخدام Cloud Code
00:08:48بناءً على Fable 5 مع رموز مجانية بالطبع،
00:08:52بشكل أساسي، بما أن BUN جزء من Anthropic.
00:08:54وهذا أمر مهم يجب وضعه في الاعتبار
00:08:56لأنه في تلك التدوينة،
00:08:58نعلم أنه إذا قمت بجمع كل الرموز،
00:09:03أو إذا قمت بحساب إجمالي كل الرموز
00:09:04التي تم إنفاقها واحتساب أسعار واجهة برمجة التطبيقات،
00:09:08كانت تكلفة هذا النقل بالكامل ستصل إلى حوالي 160 ألف دولار.
00:09:13هذا رقم مذهل، ولكن في الواقع،
00:09:18إذا فكرت في نطاق هذا المشروع،
00:09:20ونطاقه هو أن BUN كانت تتكون من 535 ألف سطر من كود SIG،
00:09:26إذا فكرت في هذا النطاق
00:09:28وكم سيستغرق البشر من وقت لنقل ذلك إلى Rust،
00:09:32فإن مبلغ 160 ألف دولار قد لا يبدو سيئًا للغاية،
00:09:36اعتمادًا على مكان تواجدك.
00:09:38ومع ذلك، فمن الواضح أنه لا يوجد مشروع مفتوح المصدر
00:09:43سيكون قادرًا على القيام بذلك.
00:09:44ومعظم الشركات ربما لن تكون قادرة
00:09:47أو راغبة في إنفاق هذا المبلغ من المال على عملية نقل.
00:09:50هذا ممكن لأن BUN جزء من Anthropic.
00:09:54وبالطبع، هذه أيضًا حيلة تسويقية لطيفة
00:09:58لشركة Anthropic.
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الذي أنشأه في نقاش مع Claude،
00:10:25في نقاش استمر ثلاث ساعات،
00:10:26كما ذكر في التدوينة،
00:10:28حيث قرر بشكل أساسي بالتعاون مع Claude Code
00:10:32ونماذج Anthropic،
00:10:35كيف ينبغي أن يبدو ملف النقل MD
00:10:37لكي يكون قادرًا على ترجمة SIG إلى كود Rust.
00:10:40ثم بمجرد أن تكرر العمل عليه وكان راضيًا عنه،
00:10:44قام باختباره على ثلاثة ملفات في البداية.
00:10:46وبمجرد أن كان راضيًا عن ذلك،
00:10:48أطلق العنان لـ Claude على قاعدة كود BUN بأكملها.
00:10:53الآن في هذه التدوينة،
00:10:54يوضح أنه لم يكتفِ بطلب من Claude
00:10:57إعادة كتابة BUN بـ 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 سير عمل ديناميكي في Claude Code،
00:11:40وهي سير العمل التي تشغل الكثير من الوكلاء الفرعيين
00:11:43على مدار 11 يومًا.
00:11:46وهو يحتوي أيضًا على مخطط جيد هناك.
00:11:48بشكل عام، في التدوينة،
00:11:49هناك رسومات جيدة هناك
00:11:51تجعل الأمر أسهل قليلًا في الاستيعاب،
00:11:53والتي تظهر عدد الالتزامات (commits) التي تم إنشاؤها
00:11:56ثم دفعها في الأيام المختلفة
00:11:58ثم أوقات اليوم.
00:12:00إذًا حدث كل ذلك بمساعدة الحلقات في Claude Code،
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لكنه في النهاية جعل كل ذلك يعمل أيضًا بمساعدة الذكاء الاصطناعي،
00:12:39تشغيل الاختبارات، إصلاح الكود،
00:12:42إعادة تشغيل الاختبارات وما إلى ذلك.
00:12:43إذًا الكثير من الحلقات، الكثير من الوكلاء والوكلاء الفرعيين المشاركين،
00:12:47بطبيعة الحال، والكثير من الرموز التي تم استهلاكها.
00:12:49165 ألف دولار من الرموز المستهلكة.
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 ألف دولار على الرموز بأسعار واجهة برمجة التطبيقات.
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:48نسخة SICK، كان يتمتع بجودة كود عالية وأن ذلك أدى إلى العديد من المشاكل.
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:56كان ينبغي أو لم يكن ينبغي أن تكون كافية لإثبات أن نسخة SICK رائعة.
00:16:00ربما كان ينبغي تحسين مجموعة الاختبار أيضًا.
00:16:04على أية حال، بالتأكيد لن يصبح هذان أفضل أصدقاء.
00:16:09وليس لدي رأي حول ما إذا كانت SICK أو Rust هي اللغة الأفضل بشكل عام أو لـ Bun.
00:16:17ومع ذلك، أعتقد أنه مع الذكاء الاصطناعي، تعد لغة Rust ونموذج الذاكرة الخاص بها وحقيقة
00:16:23أنك تحصل على أخطاء في وقت التحويل (compile-time) للعديد من المشكلات المتعلقة بالذاكرة ميزة هائلة،
00:16:30خاصة في عصر الذكاء الاصطناعي، لأنه، بالطبع، عملية النقل هذه بأكملها مثيرة للإعجاب حقًا
00:16:38عندما يتعلق الأمر باستخدام الذكاء الاصطناعي.
00:16:41وبالتأكيد، إنها طريقة لاستخدام الذكاء الاصطناعي لن يستطيع معظمنا تحمل تكلفتها
00:16:45أو لن نكون راغبين في تحمل تكلفتها في الشركات.
00:16:48لكن من المثير للإعجاب أن الذكاء الاصطناعي كان قادرًا على القيام بذلك.
00:16:52وهي ليست برمجة عشوائية (Vibe coding) أو مجرد مطالبة عشوائية (YOLO prompting).
00:16:56هناك عملية واضحة وراء كل ذلك.
00:16:59الكثير من التفكير تم وضعه في هذا، وهو ما أوضحته، والذي يصبح واضحًا بالتأكيد أيضًا
00:17:05إذا غصت في التفاصيل التقنية الدقيقة.
00:17:08ولكن مع كل التخطيط، كل التكرار مع الإعداد، مع الطريقة التي تم بها التعامل مع هذا،
00:17:13من الواضح أن هذا لم يكن مجرد مطالبة واحدة ألقيت عليه.
00:17:17ثم سنرى إلى أين سنصل، يظهر هذا ما يمكنك القيام به بالذكاء الاصطناعي.
00:17:21وبالطبع، نقل قاعدة كود من لغة إلى أخرى هو حالة استخدام جيدة للذكاء الاصطناعي.
00:17:27إذا فكرت في الأمر، فإن الذكاء الاصطناعي يمكنه، بالطبع، أن يكافح في كتابة كود جديد.
00:17:32قد لا يكتب الكود الذي أردت كتابته، أو لا يتبع اصطلاحات الكود
00:17:36أو الأنماط التي أردت اتباعها، وقد يفسد الأمور أيضًا.
00:17:40الآن، الذكاء الاصطناعي رائع بالتأكيد لبناء برامج جديدة أيضًا.
00:17:43لكنك تواجه مجموعة مختلفة من المشاكل هناك في عملية النقل.
00:17:47الميزة الهائلة هي أن لديك قاعدة كود للذكاء الاصطناعي لينظر إليها ويترجمها فقط،
00:17:53وهو شيء يمكن للذكاء الاصطناعي القيام به، ولديك مجموعة اختبار هناك.
00:17:57لذا هناك الكثير للبناء عليه.
00:17:59إنها حالة استخدام جيدة للذكاء الاصطناعي، كما يبدو، وكما يثبت هذا النقل بوضوح.
00:18:04وأعتقد أن هذا هو أهم استنتاج هنا.
00:18:08أيضًا أنه يمكنك معالجة المشاريع التي كان من المستحيل
00:18:12معالجتها من قبل.
00:18:13مرة أخرى، ليس للجميع، ولكن لشركات معينة بأحجام معينة.
00:18:18قد يكون هذا مثيرًا للاهتمام.
00:18:19تحديث البرامج القديمة بمساعدة الذكاء الاصطناعي يمكن أو قد يكون حالة استخدام رائعة.
00:18:26وهذا يوضح ويثبت أنه يمكن القيام بذلك.
00:18:30الآن، بالطبع، BUN 1.4 لم يصدر بعد.
00:18:32سنرى ما إذا كان كل شيء سينهار وسيتعين عليهم التراجع في غضون شهر من الآن.
00:18:36لا يمكنك استبعاد ذلك تمامًا، لكنني شخصيًا لا أعتقد أن ذلك سيحدث.
00:18:40يتم استخدامه في الإنتاج من قبل بعض المتبنين الأوائل بالفعل، مثل Cloud Code CLI.
00:18:47لقد تم اختباره ومراجعته على نطاق واسع، على الرغم من ذلك، بالطبع، من قبل الذكاء الاصطناعي، وليس المراجعين البشر.
00:18:54لكنني واثق تمامًا من أن هذا سينجح وأجده إنجازًا مثيرًا للإعجاب للغاية وكذلك استخدامًا مثيرًا للإعجاب للذكاء الاصطناعي.
00:19:03ولكن كما هو الحال دائمًا، أنا مهتم أيضًا بسماع أفكارك حول كل ذلك.

Key Takeaway

يُثبت ترحيل قاعدة كود BUN المكونة من 535 ألف سطر من Zig إلى Rust في 11 يوماً باستخدام أنظمة وكلاء الذكاء الاصطناعي المتعددة جدوى استخدام النماذج اللغوية الكبيرة كأداة هندسية لتحويل لغات البرمجة على نطاق واسع.

Highlights

  • شملت عملية ترحيل BUN من لغة Zig إلى Rust إعادة كتابة قاعدة كود مكونة من 535 ألف سطر.

  • استغرقت عملية الترحيل 11 يوماً باستخدام أنظمة أتمتة مكونة من 50 سير عمل ديناميكي داخل Claude Code.

  • بلغت التكلفة الإجمالية لاستهلاك الرموز (tokens) في عملية الترحيل عبر واجهة برمجة تطبيقات الذكاء الاصطناعي حوالي 160 ألف دولار.

  • تضمن نظام الترحيل وكيلاً رئيسياً لإدارة العمل، ووكلاء فرعيين للتنفيذ، ووكلاء مراجعة تنافسية، ووكيل إصلاح أخطاء.

  • أدى الترحيل إلى إزالة الاعتماد على إدارة الذاكرة اليدوية في Zig واستبدالها بنظام الملكية (ownership) في Rust، مع احتفاظ الكود ببعض أجزاء الكود غير الآمن (unsafe) للتفاعل مع مكتبات C.

Timeline

نظرة عامة على عملية الترحيل

  • بدأت عملية نقل قاعدة كود BUN من Zig إلى Rust في أوائل شهر مايو 2026.
  • اكتشف المجتمع تعليمات الترحيل في مستودع GitHub الرسمي قبل الإعلان الرسمي بفترة.
  • أثار الترحيل حالة من الاستقطاب بين المطورين بسبب تفضيلات لغات البرمجة المختلفة.

ظهر فرع CloudFaserPort في مستودع BUN الرسمي في أوائل مايو، متضمناً ملف ماركداون يشرح كيفية تحويل كود Zig إلى Rust. أدى هذا الاكتشاف إلى نقاشات واسعة على Hacker News و X حول ضرورة وحكمة إعادة كتابة البرامج بلغة Rust. على الرغم من الانتقادات، لم تكن تفاصيل النقل واضحة تماماً في تلك المرحلة.

تنفيذ الترحيل والتعقيد التقني

  • تم دمج طلب سحب رسمي في 14 مايو قام بترحيل أكثر من مليون سطر كود وإزالة كود Zig.
  • اعتمدت عملية المراجعة على الذكاء الاصطناعي والاختبارات الآلية بدلاً من المراجعة البشرية الكاملة.
  • استخدمت النسخة الأولية من Rust في BUN كمية من الكود غير الآمن (unsafe) للتفاعل مع مكتبات C.

تطلب طلب السحب الضخم التعامل مع ما يقرب من 7000 عملية التزام (commit). تضمن الترحيل استخدام 'unsafe' في Rust للتعامل مع إدارة الذاكرة اليدوية التي كانت موجودة في Zig، حيث تختلف Rust في قواعد ملكية الذاكرة. وعد الفريق بتحسين الكود تدريجياً لتقليل استخدام الكود غير الآمن في طلبات سحب مستقبلية.

أتمتة النقل باستخدام الذكاء الاصطناعي

  • استُخدم نموذج Claude 3.5 Sonnet (بإصداراته المبكرة) وتكلفة قدرها 160 ألف دولار من الرموز لإتمام العملية.
  • اعتمد النظام على وكيل رئيسي يوزع المهام على وكلاء فرعيين للمراجعة والإصلاح في حلقات تكرارية.
  • تم اختبار سير العمل على 50 مساراً ديناميكياً على مدار 11 يوماً.

استخدم فريق BUN نظاماً متقناً يبدأ بملف تعليمات MD تم إنشاؤه عبر نقاش لمدة 3 ساعات مع Claude. عمل النظام عبر حلقة تكرارية تبدأ بالترجمة، تليها مراجعة تنافسية، ثم إصلاح الأخطاء، مع توزيع العمل عبر أشجار عمل متعددة لضمان استقرار الاختبارات.

النتائج والنقاش المجتمعي

  • يوفر إصدار Bun 1.4 تحسينات في كفاءة الذاكرة وحجم البرنامج مقارنة بـ Zig.
  • حدث خلاف علني بين مبتكري BUN و Zig حول جودة الكود والأدوات المستخدمة في الترحيل.
  • يُعد هذا الترحيل حالة استخدام نموذجية لقدرة الذكاء الاصطناعي على تحديث البرمجيات القديمة واسعة النطاق.

أبدى أندرو كيلي، مبتكر لغة Zig، تحفظات قوية على ضرورة الترحيل، معتبراً أن المشكلات التي تم حلها كان يمكن معالجتها في Zig أيضاً. في المقابل، يظل الإنجاز التقني باستخدام وكلاء الذكاء الاصطناعي دليلاً على إمكانية إدارة مشاريع ضخمة بآلية عمل منظمة وليس فقط عبر الأوامر العشوائية.

Community Posts

View all posts