نقشه راه عملکرد Qt 6 منتشر شد

لارس نول، خالق موتور KHTML، مدیر پروژه پروژه Qt و مدیر فنی شرکت Qt، گفت در مورد برنامه هایی برای ایجاد شاخه مهم بعدی چارچوب Qt. پس از تکمیل عملکرد شعبه Qt 5.14، توسعه بر روی آماده سازی برای انتشار Qt 6 که در پایان سال 2020 انتظار می رود تمرکز خواهد کرد.

Qt 6 با هدف اطمینان از سازگاری با Qt 5 توسعه می یابد، اما ممکن است مشکلات فردی ایجاد شود، زیرا تغییرات و پاکسازی های معماری برنامه ریزی شده بدون از دست دادن سطح مشخصی از سازگاری امکان پذیر نخواهد بود. برای هموارسازی این انتقال، برخی از ویژگی های Qt 6 برنامه ریزی شده است که به صورت کاهش یافته به عنوان بخشی از نسخه های Qt 5.14 و Qt 5.15 LTS گنجانده شوند. Toolkit همچنین برای ساده کردن مهاجرت به Qt 6 آماده خواهد شد.

از جمله اهداف اصلی برای شاخه مهم بعدی، تطبیق عملکرد با الزامات سال 2020، تمیز کردن پایه کد و ساده سازی تعمیر و نگهداری پروژه است. تغییرات مورد انتظار:

  • نوسازی قابل توجه QML:
    • پشتیبانی قوی از تایپ
    • امکان کامپایل QML به نمایش C++ و کد ماشین.
    • ایجاد پشتیبانی کامل از جاوا اسکریپت یک گزینه (استفاده از موتور جاوا اسکریپت با امکانات کامل به منابع زیادی نیاز دارد که از استفاده از QML در تجهیزاتی مانند میکروکنترلرها جلوگیری می کند).
    • امتناع از نسخه سازی در QML.
    • یکسان سازی ساختارهای داده کپی شده در QObject و QML (مصرف حافظه را کاهش می دهد و سرعت راه اندازی را افزایش می دهد).
    • دور شدن از تولید زمان اجرا ساختارهای داده به نفع تولید زمان کامپایل.
    • پنهان کردن اجزای داخلی با استفاده از روش ها و ویژگی های خصوصی.
    • ادغام بهبود یافته با ابزارهای توسعه برای refactoring و تشخیص خطا در زمان کامپایل.
  • افزودن یک لایه انتزاعی جدید، رابط سخت افزاری رندر (RHI)، برای ارائه استفاده یکپارچه از APIهای گرافیکی مختلف، از جمله OpenGL، Vulkan، Metal و Direct 3D (قبلاً Qt فقط OpenGL بود). تمام زیرساخت های رندر موجود برای استفاده از RHI، از جمله QPainter، Qt Quick Scenegraph و Qt3D تبدیل خواهند شد. همچنین برنامه ریزی شده است که ماژول Qt Shader Tools را برای پشتیبانی از زبان های مختلف توسعه شیدر و ارائه کامپایل متقابل سایه بان ها هم در مرحله ساخت و هم در زمان اجرا اضافه کنیم.
  • آماده سازی یک API یکپارچه برای ایجاد رابط های کاربری که عناصر گرافیکی دو بعدی و سه بعدی را ترکیب می کند. API جدید به شما امکان می دهد از QML برای تعریف عناصر رابط سه بعدی بدون استفاده از فرمت UIP استفاده کنید. رابط جدید برای ادغام محتوای سه بعدی با Qt Quick در نظر دارد مشکلاتی مانند سربار بالای یکپارچه سازی QML با محتوای Qt 2D یا 3D Studio و ناتوانی در همگام سازی انیمیشن ها و تبدیل های سطح فریم بین دو بعدی و سه بعدی را حل کند. رندر ترکیبی تو در تو دو بعدی و سه بعدی با استفاده از موتور رندر جدید اجرا خواهد شد. پیش نمایش Qt Quick جدید با پشتیبانی سه بعدی در نسخه Qt 3 انتظار می رود.
  • افزودن ابزارهایی برای پردازش دارایی های مرتبط با گرافیک در زمان کامپایل، مانند تبدیل تصاویر PNG به بافت های فشرده یا تبدیل سایه ها و مش ها به فرمت های باینری بهینه شده برای سخت افزار خاص.
  • تعبیه یک موتور یکپارچه برای تم ها و سبک ها، به شما امکان می دهد به ظاهر برنامه های مبتنی بر ابزارک Qt و Qt Quick، بومی پلتفرم های مختلف موبایل و دسکتاپ دست پیدا کنید.
  • یکسان سازی ابزارهای ایجاد رابط کاربری. برای جلوگیری از تکراری شدن عملکرد و توقف تحویل دو محصول جداگانه، انتظار می‌رود که عملکرد Qt 3D Studio با Qt Design Studio یکپارچه شود که بسیاری از زیرسیستم‌های آن و چارچوب اتصال پلاگین‌ها بر اساس کد یکسانی ساخته شده‌اند. خالق Qt.
    استودیوی طراحی Qt همچنین قصد دارد با بسته های تولید محتوا مانند Photoshop، Sketch، Illustrator، Maya و 3D Max یکپارچه سازی با کیفیت بالا ارائه دهد. زبان های اصلی پشتیبانی شده در جعبه ابزار توسعه یکپارچه C++، QML و Python هستند. Unification همچنین به معنای توانایی دسترسی به ابزارهای طراحی رابط از Qt Creator و ارائه قابلیت‌هایی از ابزارهای توسعه‌دهنده به طراحان رابط است، به عنوان مثال، کامپایل یک پروژه یا آزمایش یک برنامه بر روی یک دستگاه.

  • تصمیم گرفته شد از CMake به جای QMake به عنوان سیستم ساخت استفاده شود. پشتیبانی از ساخت برنامه های کاربردی با استفاده از QMake باقی خواهد ماند، اما Qt خود با استفاده از CMake ساخته خواهد شد. CMake به این دلیل انتخاب شد که این جعبه ابزار به طور گسترده در بین توسعه دهندگان پروژه C++ استفاده می شود و در بسیاری از محیط های توسعه یکپارچه پشتیبانی می شود. توسعه سیستم مونتاژ Qbs که ادعا می‌کرد جایگزینی برای QMake است. خاتمه یافت;
  • انتقال به استاندارد C++17 در طول توسعه (قبلاً از C++98 استفاده می شد). Qt 6 قصد دارد از بسیاری از ویژگی های C++ مدرن پشتیبانی کند، اما بدون از دست دادن سازگاری با کدهای مبتنی بر استانداردهای قدیمی.
  • امکان استفاده از C++ برخی از قابلیت های ارائه شده برای QML و Qt Quick. به طور خاص، یک سیستم ویژگی جدید برای QObject و کلاس های مشابه ارائه خواهد شد. یک موتور برای کار با اتصالات از QML به هسته Qt ادغام خواهد شد که باعث کاهش بار و مصرف حافظه برای اتصالات می شود و آنها را برای همه بخش های Qt و نه فقط Qt Quick در دسترس قرار می دهد.
  • ادامه کار برای گسترش پشتیبانی از زبان های اضافی مانند Python و WebAssembly.
  • تجدید ساختار با تجزیه به اجزای کوچکتر و کاهش اندازه محصول زیربنایی. ابزارهای برنامه‌نویس و اجزای سفارشی به‌عنوان افزونه‌هایی که از طریق فروشگاه کاتالوگ جدید توزیع می‌شوند، ارائه می‌شوند. اضافه شده به Qt از توسعه دهندگان شخص ثالث، چه رایگان و چه پولی، نیز برای توزیع پذیرفته می شود.

منبع: opennet.ru

اضافه کردن نظر