أمان الذاكرة في Go: الخطر الخفي لانعدام أمان الخيوط

2025-07-25

تتناول هذه المقالة الفهم الشائع لأمان الذاكرة في Go. يُجادل الكاتب بأن أمان الذاكرة البسيط (مثل منع الوصول خارج الحدود) غير كافٍ للبرامج القوية؛ تكمن السلامة الحقيقية في تجنب السلوك غير المعرفة (UB). يُوضح مثال برنامج Go كيف يمكن أن تؤدي سباقات البيانات إلى UB وانهيارات، حتى بدون استخدام عمليات `unsafe`. يُزعم الكاتب أن معالجة Go لسباقات البيانات ليست صارمة بما فيه الكفاية، مما يتناقض مع ادعاءاتها بشأن أمان الذاكرة، مما يجعل برامج Go أكثر عرضة للاختراقات الأمنية. تُشدد الخاتمة على أن أمان اللغة ليس ثنائيًا، ولكن فهم ضمانات أمان اللغة والتنازلات أمر بالغ الأهمية.

اقرأ المزيد
التطوير سباق البيانات

المؤشرات معقدة II: أخطاء دقيقة في تحسينات LLVM

2025-02-02

تتناول هذه المشاركة أهمية الدلالات الدقيقة لتمثيلات وسيطة للمترجم (IRs)، خاصةً للغات مثل C و C++ و Rust التي تسمح بالتعامل مع المؤشرات غير الآمنة. يوضح الكاتب كيف يمكن أن تؤدي سلسلة من ثلاث تحسينات لمرجع LLVM تبدو صحيحة إلى سلوك خاطئ للبرنامج. والسبب الجذري هو مصدر المؤشر (provenance) - المعلومات الإضافية المضمنة في المؤشر بخلاف عنوان ذاكرته، والتي توضح كيف تم حسابه. هذا يتطلب مواصفات IR LLVM أكثر دقة، بما في ذلك تعريف دقيق للسلوك غير المحدد (UB). إن معاملة IRs للمترجم كلغات برمجة مستقلة ذات مواصفات صارمة هو المفتاح لحل هذه المشاكل.

اقرأ المزيد