حقائق رئيسية
- مشروع كروم حظر رسمياً ميزات محددة من لغة C++ للحفاظ على استقرار قاعدة الكود وأمنها عبر نظام المتصفحات الضخم الخاص به.
- هذه القيود مفصلة في دليل النمط الرسمي للمشروع، الذي يعمل كمرجع نهائي لجميع المساهمين.
- من بين الميزات المحظورة: std::make_unique و std::make_shared و std::regex بسبب مخاوف التوافق والأداء.
- يوفر المشروع بدائل خاصة بكروم مثل base::MakeUnique لضمان سلوك ثابت عبر جميع المنصات المدعومة.
- تشمل عمليات مراجعة الكود الآن فحوصات آلية تشير إلى الميزات الممنوعة قبل دمج الكود في الفرع الرئيسي.
- دليل النمط هو وثيقة حية تتلقى تحديثات منتظمة مع تطور معايير C++ وتحسن دعم المترجم.
تطور قاعدة الكود
أقام مشروع كروم إرشادات شاملة تحظر ميزات محددة من لغة C++ للحفاظ على الاستقرار عبر قاعدة الكود الضخمة الخاصة به. تعكس هذه القيود التزام المشروع بالصيانة طويلة الأمد والأمن.
باعتباره أحد أكبر مشاريع البرامج مفتوحة المصدر في العالم، تؤثر قرارات كروم على ملايين المطورين والمستخدمين حول العالم. يحظر دليل النمط للمشروع الآن صراحةً بعض الإضافات الحديثة من C++ التي قد تسبب عدم استقرار أو ثغرات أمنية.
تشمل الميزات المحظورة عدة إضافات حديثة من C++ قد تهدد معايير استقرار وأمن المشروع. يؤكد هذا القرار تركيز المشروع على جودة الكود و التوافق عبر المنصات.
قائمة الميزات المحظورة
حدد مشروع كروم عدة ميزات من لغة C++ أصبحت ممنوعة الآن داخل قاعدة الكود. هذه القيود مفصلة في دليل النمط الرسمي للمشروع، الذي يعمل كمرجع نهائي للمساهمين.
من بين الميزات المحظورة:
- std::make_unique - محظور بسبب مخاوف التوافق
- std::make_shared - مقيد لأسباب توافق مماثلة
- std::shared_ptr مع المصفوفات - غير مسموح به بسبب عدم اتساق التنفيذ
- std::atomic مع أنواع معينة - محدود لمنع سلوك غير محدد
- std::regex - محظور بسبب مشاكل الأداء والتوافق
يقوم المشروع أيضاً بتقييد استخدام std::filesystem و std::optional في سياقات معينة. هذه الميزات، رغم أنها جزء من معايير C++ الحديثة، تُعتبر غير مناسبة لمتطلبات كروم الخاصة.
يؤكد دليل النمط أن هذه القيود تنطبق على قاعدة الكود بأكملها، بما في ذلك جميع المشاريع الفرعية والاعتمادات. يجب على المساهمين الالتزام بهذه الإرشادات عند تقديم الكود للمراجعة.
مبررات القيود
ينبع قرار حظر هذه الميزات من الموقف الفريد لـ كروم كمشروع متعدد المنصات يدعم أنظمة تشغيل وبنية معالجة متعددة. يجب على المشروع الحفاظ على التوافق مع المترجمات والمكتبات الأقدم مع ضمان سلوك ثابت عبر المنصات.
يلعب الاعتبارات الأمنية دوراً حاسماً في هذه القيود. يمكن أن تسبب بعض ميزات C++ الحديثة أخطاء دقيقة أو سلوكاً غير محدد قد يتم استغلاله. يعطي مديرو المشروع أولوية للأمان والموثوقية على حساب الراحة.
الأداء هو عامل حاسم آخر. بينما تقدم بعض ميزات C++ الحديثة الراحة، قد لا تلبي متطلبات أداء كروم. فإن حجم المشروع الضخم يعني أن حتى تراجعات الأداء الطفيفة يمكن أن يكون لها تأثير كبير.
وجد فريق كروم أن بعض الميزات، رغم أنها جزء من معيار C++، لها تنفيذ غير متسق عبر منصات مختلفة. يمكن أن يؤدي هذا عدم الاتاق إلى سلوك غير متوقع ويجعل تصحيح الأخطاء أكثر صعوبة.
التأثير على التطوير
تؤثر هذه القيود بشكل كبير على كيفية كتابة المطورين للكود لكروم. يجب على المساهمين استخدام نهج بديلة تتماشى مع إرشادات المشروع مع تحقيق نفس الوظائف.
على سبيل المثال، بدلاً من استخدام std::make_unique، يجب على المطورين استخدام base::MakeUnique أو بدائل خاصة بكروم مماثلة. تم تصميم هذه البدائل بعناية للعمل بشكل ثابت عبر جميع المنصات المدعومة.
يوفر المشروع توثيقاً مفصلاً وأمثلة لكل ميزة مقيدة، مما يساعد المطورين على فهم البدائل المعتمدة. يتم تحديث هذا التوثيق بانتظام مع تطور المشروع.
تم تعزيز عمليات مراجعة الكود لالتقاط انتهاكات هذه القيود تلقائياً. يشمل نظام بناء كروم فحوصات تشير إلى الميزات الممنوعة قبل دمج الكود في الفرع الرئيسي.
اعتبارات مستقبلية
يقوم مشروع كروم بتقييم معايير الترميز الخاصة به باستمرار مع تطور C++. بينما تُحظر بعض الميزات حالياً، يبقى المشروع منفتحاً على إعادة النظر في هذه القرارات مع تحسن دعم المترجم ونضج المعايير.
دليل النمط هو وثيقة حية تتلقى تحديثات منتظمة. تشجع المساهمين على تقديم الملاحظات واقتراح التعديلات بناءً على التجربة الواقعية والمتطلبات المتغيرة.
مع نمو المشروع وظهور معايير C++ الجديدة، قد تُضاف ميزات إضافية إلى القائمة المحظورة، بينما قد تصبح أخرى مسموح بها في ظل شروط محددة. يضمن هذا النهج الديناميكي أن يبقى كروم في طليعة أفضل ممارسات هندسة البرمجيات.
يعكس التزام المشروع بهذه المعايير تفانيه في إنتاج برمجيات عالية الجودة وآمنة وقابلة للصيانة تخدم ملايين المستخدمين حول العالم.
النقاط الرئيسية
يمثل قرار مشروع كروم بحظر ميزات محددة من لغة C++ نهجاً مدروساً لإدارة قاعدة كود ضخمة ومعقدة. تعطي هذه القيود الأولوية للاستقرار والأمان والقابلية للصيانة على حساب الراحة.
يجب على المطورين العاملين مع كروم التكيف مع هذه الإرشادات، باستخدام البدائل المعتمدة التي تضمن سلوكاً ثابتاً عبر المنصات. بينما قد يتطلب هذا جهداً إضافياً، فإن الفوائد في جودة الكود والموثوقية كبيرة.
تعكس معايير المشروع المتطورة طبيعة تطوير البرمجيات الديناميكية، حيث تتحسن أفضل الممارسات باستمرار لمواجهة التحديات والفرص الجديدة.
أسئلة مكررة
ما هي ميزات C++ التي حظرها كروم؟
حظر كروم عدة ميزات حديثة من لغة C++ بما في ذلك std::make_unique و std::make_shared و std::shared_ptr مع المصفوفات و std::atomic مع أنواع معينة و std::regex و std::filesystem و std::optional في سياقات معينة. هذه القيود مفصلة في دليل النمط الرسمي للمشروع.
لماذا حظر كروم هذه الميزات؟
تنبع القيود من مخاوف التوافق، اعتبارات أمنية، ومتطلبات أداء. بعض الميزات لها تنفيذ غير متسق عبر المنصات، بينما يمكن للآخرين أن يسببوا أخطاء دقيقة أو سلوكاً غير محدد قد يتم استغلاله.
ما هي البدائل التي يستخدمها المطورون؟
يوفر كروم بدائل خاصة مثل base::MakeUnique بدلاً من std::make_unique. تم تصميم هذه البدائل بعناية للعمل بشكل ثابت عبر جميع المنصات المدعومة وتلبي متطلبات أداء المشروع.
كيف يتم فرض هذه القيود؟
يشمل نظام بناء كروم فحوصات آلية تشير إلى الميزات الممنوعة أثناء مراجعة الكود. هذا يضمن التقاط الانتهاكات قبل دمج الكود في الفرع الرئيسي، والحفاظ على سلامة قاعدة الكود.









