كتاب مجاني عن التزامن في Go يشرح ما لا يكتشفه الـ race detector
اجتياز الاختبارات والـ race detector لا يعني أن الكود المتزامن صحيح، لأن الأداة ترى نوعًا واحدًا فقط من أخطاء التزامن.
وسم
اجتياز الاختبارات والـ race detector لا يعني أن الكود المتزامن صحيح، لأن الأداة ترى نوعًا واحدًا فقط من أخطاء التزامن.
الـ agents قد تبني المكتبات أسرع من أي وقت، لكنها في الوقت نفسه تُضعف الحافز الذي يجمع المطورين حول مكتبة مشتركة واحدة.
الترقية هذه المرة ليست السلوك نفسه بسرعة أعلى، فهناك افتراضيان تغيّرا ويطبقان دون أي إجراء، والحكم عليهما يأتي من قياس الأداء على كل تطبيق لا من ملاحظات الإصدار.
الاعتراض على reduce مفهوم من طريقة قراءتها، لكن الملاحظة الأثقل في التدوينة أن هذا الاعتراض صار أقل، ربما لأن مراجعة الكود نفسها صارت أقل تدقيقًا.
الجديد ليس أن الفريق كسر كودًا قائمًا، بل أنه قاس حجم الكسر ونشره قبل اتخاذ القرار، فصار الخلاف على الحكم لا على المعلومات.
تكلفة إدخال لغة جديدة إلى codebase قديم ليست في الصياغة ولا في إقناع الفريق، بل في جعل مخرجاتها جزءًا أصيلًا من أدوات البناء والتصحيح القائمة.
اعتماد المطورين على الطباعة ليس كسلًا ولا تفضيلًا شخصيًا، بل مؤشر على أن أدوات الـ debugging لم تواكب اللغة بعد.
مشروع مفتوح المصدر يربط بقاء ميزة كبيرة برقم مكتوب وموعد محدد، والأرقام الحالية لا تتجاوز نصف الهدف في أحسن الأحوال.
تسرب الـ goroutines لا يظهر في أي benchmark، بل في خدمة تثقل بعد أسابيع من التشغيل ويُعاد تشغيلها دوريًا، والآن صار الـ runtime نفسه يشير إليه.
أغلب عمل Rust الجاد هو استبدال كود C قائم قطعة بعد قطعة، وكل فجوة في التوافق كانت تترك سطرًا من C يعيش في المشروع سنوات.
الكود نفسه الذي كان يعمل على جهاز ويفسد البيانات العربية بصمت على جهاز آخر يصبح سلوكه واحدًا في كل مكان، بعد قرار ظل مؤجلًا سنوات دفع ثمنه أصحاب الحروف غير اللاتينية.