ชุดเครื่องมือสร้าง Qbs 2.0 ได้เปิดตัวแล้ว Qbs จำเป็นต้องใช้ Qt เป็น dependency แม้ว่าตัว Qbs เองจะออกแบบมาเพื่อจัดการการสร้างโปรเจ็กต์ใดๆ ก็ตาม Qbs ใช้ภาษา QML เวอร์ชันที่เรียบง่ายกว่าในการกำหนดสคริปต์สร้างโปรเจ็กต์ ทำให้สามารถกำหนดกฎการสร้างที่ยืดหยุ่นได้ ซึ่งรวมถึงโมดูลภายนอก ใช้ฟังก์ชัน JavaScript และสร้างกฎการสร้างแบบกำหนดเอง
ภาษาสคริปต์ที่ใช้ใน Qbs ได้รับการดัดแปลงเพื่อสร้างและแยกวิเคราะห์สคริปต์บิลด์โดยอัตโนมัติโดย IDE นอกจากนี้ Qbs จะไม่สร้าง makefiles และตัวมันเอง โดยไม่มีตัวกลาง เช่น ยูทิลิตี make จะควบคุมการเรียกใช้คอมไพเลอร์และลิงเกอร์ ปรับกระบวนการสร้างให้เหมาะสมตามกราฟโดยละเอียดของการขึ้นต่อกันทั้งหมด การมีอยู่ของข้อมูลเริ่มต้นเกี่ยวกับโครงสร้างและการพึ่งพาในโครงการช่วยให้คุณสามารถดำเนินการแบบขนานได้อย่างมีประสิทธิภาพในหลายเธรด สำหรับโปรเจกต์ขนาดใหญ่ที่ประกอบด้วยไฟล์และไดเร็กทอรีย่อยจำนวนมาก ประสิทธิภาพการสร้างใหม่โดยใช้ Qbs สามารถทำได้ดีกว่าหลายเท่า การสร้างใหม่แทบจะทันทีทันใดและไม่ทำให้นักพัฒนาเสียเวลารอ
จำได้ว่าในปี 2018 บริษัท Qt ตัดสินใจหยุดพัฒนา Qbs Qbs ได้รับการพัฒนาเพื่อแทนที่ qmake แต่ในที่สุดก็ตัดสินใจใช้ CMake เป็นระบบสร้างหลักสำหรับ Qt ในระยะยาว การพัฒนา Qbs ได้ดำเนินต่อไปในฐานะโครงการอิสระที่ได้รับการสนับสนุนจากกองกำลังชุมชนและนักพัฒนาที่สนใจ โครงสร้างพื้นฐานของ Qt Company ยังคงถูกใช้เพื่อการพัฒนาต่อไป
การเปลี่ยนแปลงหมายเลขเวอร์ชันที่สำคัญเกิดจากการนำแบ็กเอนด์ JavaScript ใหม่มาใช้แทนที่ QtScript ซึ่งถูกยกเลิกไปแล้วใน Qt 6 การบำรุงรักษา QtScript ภายในอย่างต่อเนื่องเนื่องจากการเชื่อมโยง JavaScriptCore ที่ซับซ้อนนั้นถือว่าไม่สมจริง ดังนั้น แบ็กเอนด์ใหม่จึงใช้เอนจิน QuickJS JavaScript ที่มีขนาดกะทัดรัดและเป็นอิสระ ซึ่งสร้างโดย Fabrice Bellard ผู้ก่อตั้ง QEMU และ FFmpeg เอนจินนี้รองรับข้อกำหนด ES2019 และเหนือกว่าคู่แข่งเดิมอย่างเห็นได้ชัดในด้านประสิทธิภาพ (XS 35%, DukTape มากกว่าสองเท่า, JerryScript สามเท่า และ MuJS เจ็ดเท่า)
ในแง่ของการพัฒนาสคริปต์บิลด์ การเปลี่ยนไปใช้เอนจินใหม่ไม่น่าจะส่งผลให้เกิดการเปลี่ยนแปลงที่สำคัญใดๆ ประสิทธิภาพการทำงานจะยังคงเท่าเดิม ความแตกต่างที่เห็นได้ชัดอย่างหนึ่งคือข้อกำหนดที่เข้มงวดยิ่งขึ้นของเอนจินใหม่ในการใช้ค่าที่ไม่ได้กำหนด ซึ่งอาจเผยให้เห็นปัญหาในโปรเจกต์ที่มีอยู่ซึ่งไม่มีใครสังเกตเห็นเมื่อใช้ QtScript
ที่มา: opennet.ru
