الأخبار التكنولوجية والاستعراضات والنصائح!

أصدرت Microsoft التعليمات البرمجية من مكتبة C ++ القياسية الموجودة في Visual Studio

شعار مايكروسوفت

في مؤتمر CppCon 2019 الذي تم الاحتفال به في هذه الأيام ، انتهز المشاركون في مايكروسوفت الفرصة للإعلان عن افتتاح الكود لتنفيذه من مكتبة C ++ القياسية (المعروف أيضًا باسم STL) ، وهو جزء من مجموعة أدوات MSVC وبيئة تطوير Visual Studio.

تنفذ المكتبة القدرات الموضحة في المعايير الحالية C ++ 14 و C ++ 17 ، ويتطور أيضًا في اتجاه دعم معيار C ++ 20 المستقبلي ، بعد التغييرات في مسودة العمل الحالية.

وفقا ل الأسباب التي دفعت الناس مايكروسوفت لاتخاذ هذه الخطوة، في البيان اشرح:

هناك عدة أسباب وراء قيامنا بذلك ، أحدها هو العمل في STL في GitHub ، مما سيتيح لعملائنا متابعة تطورنا فور حدوثه ، واختبار آخر التغييرات التي أجريناها ، ومساعدتنا في تحسين طلبات الاستخراج من خلال مراجعتها.

مع تسارع توحيد C ++ ، ويتم التصويت على ميزات أكبر كل عام ، نعتقد أنه سيكون من المهم قبول الميزات الرئيسية كمساهمات مفتوحة المصدر. (على سبيل المثال ، تعد مكتبات التنسيق الزمني و C ++ 20 مرشحة محتملة). نريد أيضًا المساهمة مرة أخرى في مجتمع C ++ من خلال تمكين تنفيذ وظائفنا الرئيسية. (على سبيل المثال ، C ++ 17 charconv)

مع ذلك يقول مستخدمو Microsoft أنهم يخططون لمواصلة تطوير هذه المكتبة كمشروع مفتوح الذي يتم تطويره في GitHub والذي سيقبل طلبات الاستخراج من المطورين الخارجيين مع التصحيحات وتنفيذ ميزات جديدة (للمشاركة في التطوير ، يلزم إبرام اتفاقية CLA لنقل حقوق الملكية إلى الرمز المنقول).

لوحظ ذلك سيساعد نقل تطوير STL إلى GitHub عملاء Microsoft على تتبع التقدم المحرز في مجال التطوير وتجربة أحدث التغييرات والمساعدة في مراجعة الطلبات الواردة للابتكارات.

افتح الكود ايضا سيسمح للمجتمع باستخدام تطبيقات جاهزة من فرص معايير جديدة في مشاريع أخرى.

حول رمز ترخيص هذه المكتبة ، يُقترح فتحه تحت رخصة Apache 2.0 مع استثناءات للملفات الثنائية التي تحل مشكلة تضمين مكتبات وقت التشغيل في تكوين الملفات القابلة للتنفيذ التي تم إنشاؤها.

أن يكون واضحا ، لا يتم دمج MSVC STL مع libc ++ لأنها تظل مكتبات مختلفة.

تشرح Microsoft سبب ترخيص الرمز يتم تحديده بطريقة تتيح تبادل الرموز مع مكتبة libc ++ الخاصة بمشروع LLVM. تختلف STL و libc ++ في التمثيل الداخلي لهياكل البيانات ، ولكن إذا رغبوا في ذلك ، يمكن لمطوري libc ++ حمل وظائف STL مثيرة للاهتمام (على سبيل المثال ، charconv) أو يمكن للمشروعين تطوير بعض الابتكارات بشكل مشترك.

يتم توزيع MSVC STL بموجب ترخيص Apache v2.0 مع استثناءات LLVM ، والتي تم إنشاؤها مؤخرًا بواسطة مشروع Clang / LLVM / libc ++.

تلغي الاستثناءات المضافة إلى ترخيص Apache شرط ذكر استخدام المنتج المصدر عند تسليم الملفات الثنائية المترجمة مع STL للمستخدمين النهائيين.

تم اختيار هذا الترخيص المفتوح المصدر المفتوح لأنه يحمل نفس ترخيص libc ++ مما سيجعل من الأسهل لتبادل التعليمات البرمجية بين المكتبات. لتوضيح ذلك ، لا يتم دمج MSVC STL مع libc ++ ؛ تظل مكتبات مختلفة تدعم منصات مختلفة مع تمثيلات مختلفة من بنية البيانات.

من ناحية أخرى ، يسمى أحد الأهداف الرئيسية للمشروع الامتثال الكامل للمتطلبات من المواصفات ، التي تضمن الأداء العالي ، وسهولة الاستخدام (تصحيح الأخطاء ، والتشخيص ، وأدوات الكشف عن الأخطاء) والتوافق على مستوى المصدر و ABI مع الإصدارات السابقة من Visual Studio 2015/2017.

من بين المجالات التي لا تهتم Microsoft بتطوير قابلية نقل الأنظمة الأساسية الأخرى وإضافة ملحقات مخصصة.

إذا كنت تريد معرفة المزيد حول البيان الذي أدلت به Microsoft ، فيمكنك الرجوع إليه في الرابط التالي.