أخبار الإنترنتدراسات وتقاريرمنوعات تقنية

تضرر ملايين مشاريع جافا سكريبت بسبب تحديث لمكتبة صغيرة

تسبب تحديث لمكتبة جافا سكريبت JavaScript صغيرة بتأثر جزء كبير من النظام البيئي للغة البرمجة، ويُعتقد أن ملايين المشاريع قد تأثرت.

ونجمت المشكلة عن مكتبة (JavaScript) أحادية السطر، مما يعني أن هذه هي المرة الثانية التي يتسبب فيها مشروع (JavaScript) صغير بحدوث مشكلات واسعة النطاق.

وتسمى الحزمة التي تسببت بالمشكلة (is-promise)، وتتكون المكتبة من سطرين من التعليمات البرمجية المصدرية.

ويمكن للمطورين استخدامها في مشاريعهم عبر استدعاء أحادي السطر للسماح لهم باختبار كون كائن جافا سكريبت هو “Promise“، مع إرجاع الدالة لنتيجة منطقية بنعم أو لا عند استخدامها.

وبالرغم من كون الحزمة مكونة من سطرين فقط من التعليمات البرمجية التي تجري فحصًا أساسيًا، فإن مكتبة (is-promise) هي واحدة من حزم (JavaScript) الأكثر شيوعًا (المكتبات) ضمن مدير الحزم (npm)، وهو مدير الحزم الافتراضي لبيئة تشغيل (JavaScript Node.js).

ووفقًا لمنصة (GitHub)، فإن المكتبة تعد جزءًا من أكثر من 3.4 ملايين مشروع، وتعتمد عليها 766 مكتبة جافا سكريبت أخرى.

وجرى تحديث مكتبة (is-promised) قبل عدة أيام لتلقي الدعم للعمل كوحدة (ES)، وهو نظام الوحدة المعياري الذي تستخدمه لغة جافا سكريبت، ومع ذلك، لم تلتزم النسخة 2.2.0 من (is-promise) بمعايير وحدة (ES) المناسبة.

وبدأت المشاريع التي استخدمت مكتبة (is-promised) بالفشل بسبب الدعم غير المناسب لوحدة (ES)، وجرى ملاحظة تأثير الخطأ بشكل فوري، بحيث تأثرت قواعد برمجة جافا سكريبت ذات المصدر المغلق وصولًا لبعض أكبر مشاريع نظام جافا سكريبت البيئي.

وبالرغم من أن الخطأ لم يعطل المشاريع الحالية، لكنه منع المطورين من تجميع إصدارات جديدة من المشاريع، وتضمن ذلك تطبيق (Create React) من فيسبوك Facebook، وإطار عمل (Angular.js) من جوجل، وأدوات (Firebasse) من جوجل، و (AWS Serverless CLI) من أمازون.

وأصدر فريق مكتبة (is-promised) تحديثًا لكنه لم يتمكن من إصلاح المشكلة، وتراجع الفريق في نهاية المطاف عن دعم وحدة (ES) في النسخة 2.2.2.

ويمثل هذا الحادث ثاني حادث تتسبب فيه مكتبة (JavaScript) صغيرة بحدوث مشكلات في نظام جافا سكريبت البيئي، وحدث شيء مماثل في شهر مارس 2016، عندما قرر مؤلف مكتبة جافا سكريبت المسماة (left-pad) إلغاء نشر المكتبة المكونة من 17 سطرًا من التعليمات البرمجية، مما تسبب بتعطل آلاف المشاريع.

وكما حدث في عام 2016، فقد أثارت حادثة مكتبة (is-promised) الأسئلة، وبدأت المناقشات حول الحاجة إلى وجود مكتبات أحادية السطر في النظام البيئي.

زر الذهاب إلى الأعلى