تم تقديم إصدار مجموعة أدوات البناء Qbs 2.0. لبناء Qbs، يلزم وجود Qt كتبعية، على الرغم من أن Qbs نفسه مصمم لتنظيم بناء أي مشاريع. يستخدم Qbs إصدارًا مبسطًا من لغة QML لتحديد سيناريوهات بناء المشروع، مما يسمح لك بتحديد قواعد بناء مرنة إلى حد ما يمكنها تضمين وحدات خارجية واستخدام وظائف JavaScript وإنشاء قواعد بناء مخصصة.
تم تكييف لغة البرمجة النصية المستخدمة في Qbs لأتمتة إنشاء البرامج النصية وتحليلها بواسطة IDEs. بالإضافة إلى ذلك ، لا يُنشئ Qbs ملفات makefiles ، وهو نفسه ، بدون وسطاء مثل الأداة المساعدة make ، يتحكم في إطلاق المجمعين والرابطات ، ويحسن عملية الإنشاء استنادًا إلى رسم بياني مفصل لجميع التبعيات. يسمح لك وجود البيانات الأولية حول الهيكل والتبعيات في المشروع بالتوازي بشكل فعال مع تنفيذ العمليات في العديد من سلاسل العمليات. بالنسبة للمشاريع الكبيرة التي تتكون من عدد كبير من الملفات والأدلة الفرعية ، يمكن لأداء إعادة البناء باستخدام Qbs أن يتفوق على الأداء عدة مرات - إعادة البناء تكاد تكون فورية ولا تجعل المطور يقضي وقتًا في الانتظار.
تذكر أنه في عام 2018 ، قررت شركة Qt التوقف عن تطوير Qbs. تم تطوير Qbs كبديل لـ qmake ، ولكن في النهاية تقرر استخدام CMake كنظام بناء رئيسي لـ Qt على المدى الطويل. استمر تطوير Qbs الآن كمشروع مستقل مدعوم من قبل قوى المجتمع والمطورين المهتمين. يستمر استخدام البنية التحتية لشركة Qt في التطوير.
التغيير الكبير في رقم الإصدار يرجع إلى تنفيذ واجهة خلفية جديدة لـ JavaScript، والتي حلت محل QtScript، والتي تم إعلانها قديمة في Qt 6. تم اعتبار الاستمرار في صيانة QtScript بمفردنا بسبب الارتباطات المعقدة مع JavaScriptCore غير واقعي، لذلك تم اختيار محرك JavaScript QuickJS المدمج والاكتفاء الذاتي، الذي أنشأه Fabrice Bellard، الذي أسس مشاريع QEMU وFFmpeg، كأساس للواجهة الخلفية الجديدة. يدعم المحرك مواصفات ES2019 ويتفوق بشكل كبير على نظائره الحالية من حيث الأداء (XS بنسبة 35%، وDukTape بأكثر من مرتين، وJerryScript بثلاث مرات، وMuJS بسبع مرات).
من وجهة نظر تطوير نصوص البناء ، يجب ألا يؤدي الانتقال إلى محرك جديد إلى تغييرات ملحوظة. سيبقى الأداء أيضًا على حاله تقريبًا. من بين الاختلافات ، هناك متطلبات أكثر صرامة في المحرك الجديد لاستخدام القيم الخالية ، والتي يمكن أن تكشف عن مشاكل في المشاريع الحالية التي لم يلاحظها أحد عند استخدام QtScript.
المصدر: opennet.ru
