مؤخرا كثرات الهضرة على واحد المشروع سميتو Bun اللي هو عبارة عن Javascript runtime بحال Nodejs و Deno , لكن أسرع بكثير حسب الأقوال ديال صاحب المشروع Jarred Sumner. المقارنة كاينا في الموقع الرسمي ديال Bun بينو و بين Nodejs و Deno , كاتبين باللي Bun أسرع ب 3 مرات و أكثر.

شنو هو Javascript runtime :
Javascript runtime هو بيئة كاتجي بالعديد من الأدوات اللي كاتمكنا من إنشاء و تشغيل التطبيقات ديال javascript خارج المتصفح أي في server عن طريق ما يسمى ب Javascript engine أي المحرك اللي كايقوم بتحويل Javascript إلى اللغة اللي كايفهمها الحاسوب.
Nodejs كايستخدم Javascript engine سميتو V8 , هو نفسو اللي كاين في Google chrome. كاينين Javascript engines أخرين من غير V8 منهم SpiderMonkey المستخدم في متصفح Firefox و JavaScriptCore المستخدم في متصفح Safari.
أول javascript runtime خرج للوجود كان هو Nodejs في 2009 , قبل ظهور هاد الأخير , كان Javascript كايخدم فقط في المتصفحات أي أنه إلى بغيتي تخدم ل Backend ديال الموقع الإلكتروني خاصك شي لغة مثل PHP و غيرها.
الأن بفضل Nodejs بإمكانا نشؤو تطبيقات Fullstack بإستعمال javascript فقط.
طريقة تثبيت Bun :
التثبيت سهل جدا, كل ما عليك هو تحط هاد السطر في Terminal :
curl https://bun.sh/install | bash
لكن إلى كانت عندك Windows غايخصك تثبت WSL عاد غايمكلك تثبت Bun.
الفرق بين Bun و Nodejs و Deno :
-
Bun كايستخدم
javascriptcoreعكس Nodejs و Deno اللي كايستخدموV8. -
Bun مقاد بلغة منخفضة المستوى إسمها ZIG ( خرجات للوجود سنة 2016), عكس Nodejs اللي مقاد ب
Cو++Cو Deno اللي مقاد ب++CوRust. -
كايقبل حتا
Typescriptبلا ما تحتاج تثبتtypescript compilerعكس Nodejs.
مميزات Bun :
-
كايقبل
Top level awaitأي أنه بإمكانك تستخدمawaitبدون الحاجة لasync function. -
بإمكانك تستعمل
npm packagesأي أنه أي مشروع مقاد ب Nodejs بإمكانك تشغلو بإستخدام Bun. -
Bun كايقرا حتا
JSX. -
Bun كايقوم بتحميل ل
environment variablesتلقائيا من ملفenv. -
كايجي ب
Test runnerبحالJestمبني فيه. -
كايجي ب
Web APIsمبنين فيه , بحالfetchوwebSocketsوReadableStream...
مثال إنشاء Server بإستخدام Bun :
أنشئ ملف كاينتهي ب js. و وضع فيه هاد الكود :
// http.js export default { port: 3000, fetch(request) { return new Response("Welcome to Bun!"); }, };
ثم شغل الملف عن طريق كتابة bun run متبوعة بإسم الملف في Terminal :
bun run http.js
خلاصة :
النقطة اللي كايتفوق فيها Bun على Deno و اللي كانظن هي النقطة اللي غاتخلي Bun إدير بلاصتو في مجتمع المبرمجين, هي أنه كايقبل npm packages.
npm كبرات بزاف لدرجة أن أي حاجة بغيتيها غاتلقاها, رغم المشاكل الأمنية ديال npm إلا أن الإستغناء عنها شبه مستحيل , خصوصا أن جميع المشاريع اللي مقادين ب Nodejs كايستخدمو npm packages.
Bun الأن في النسخة التجريبية, مزال ما خرجش إصدار رسمي لكن كانصحكوم تثبتوه و تجربو الخدمة بيه و تقارنو ما بينو و بين Nodejs ... .