Peta jalan fungsionalitas Qt 6 diterbitkan

Lars Knoll, pencipta mesin KHTML, manajer proyek Proyek Qt dan direktur teknis Perusahaan Qt, saya diberitahu tentang rencana untuk membuat cabang penting berikutnya dari kerangka Qt. Setelah fungsionalitas cabang Qt 5.14 selesai, pengembangan akan fokus pada persiapan rilis Qt 6, yang diharapkan pada akhir tahun 2020.

Qt 6 akan dikembangkan dengan tujuan untuk memastikan kompatibilitas dengan Qt 5, namun masalah individu mungkin timbul, karena perubahan dan pembersihan arsitektur yang direncanakan tidak akan mungkin dilaksanakan tanpa kehilangan tingkat kompatibilitas tertentu. Untuk memperlancar transisi, beberapa fitur Qt 6 direncanakan untuk disertakan dalam bentuk yang diperkecil sebagai bagian dari rilis Qt 5.14 dan Qt 5.15 LTS. Toolkit juga akan disiapkan untuk mempermudah migrasi ke Qt 6.

Di antara tujuan utama cabang penting berikutnya adalah menyelaraskan fungsionalitas dengan persyaratan tahun 2020, membersihkan basis kode, dan menyederhanakan pemeliharaan proyek. Perubahan yang diharapkan:

  • Modernisasi QML yang signifikan:
    • Dukungan pengetikan yang kuat.
    • Kemampuan untuk mengkompilasi QML ke dalam representasi C++ dan kode mesin.
    • Menjadikan dukungan JavaScript penuh sebagai pilihan (menggunakan mesin JavaScript berfitur lengkap memerlukan banyak sumber daya, sehingga mencegah penggunaan QML pada peralatan seperti mikrokontroler).
    • Penolakan pembuatan versi di QML.
    • Penyatuan struktur data yang diduplikasi dalam QObject dan QML (akan mengurangi konsumsi memori dan mempercepat startup).
    • Beralih dari pembuatan struktur data waktu proses ke pembuatan waktu kompilasi.
    • Menyembunyikan komponen internal melalui penggunaan metode dan properti pribadi.
    • Peningkatan integrasi dengan alat pengembangan untuk pemfaktoran ulang dan diagnosis kesalahan waktu kompilasi;
  • Menambahkan lapisan abstrak baru, Rendering Hardware Interface (RHI), untuk menyediakan penggunaan berbagai API grafis dengan lancar, termasuk OpenGL, Vulkan, Metal, dan Direct 3D (sebelumnya Qt hanya untuk OpenGL). Semua infrastruktur rendering yang ada akan dikonversi untuk menggunakan RHI, termasuk QPainter, Qt Quick Scenegraph, dan Qt3D. Direncanakan juga untuk menambahkan modul Qt Shader Tools untuk mendukung berbagai bahasa pengembangan shader dan menyediakan kompilasi silang shader baik pada tahap build maupun saat runtime;
  • Persiapan API terpadu untuk membuat antarmuka pengguna yang menggabungkan elemen grafis 2D dan 3D. API baru akan memungkinkan Anda menggunakan QML untuk mendefinisikan elemen antarmuka 3D tanpa menggunakan format UIP. Antarmuka baru untuk mengintegrasikan konten 3D dengan Qt Quick berencana memecahkan masalah seperti tingginya overhead dalam mengintegrasikan QML dengan konten dari Qt 3D atau 3D Studio, dan ketidakmampuan untuk menyinkronkan animasi dan transformasi tingkat bingkai antara 2D dan 3D. Gabungan rendering 2D dan 3D bersarang akan diimplementasikan menggunakan mesin rendering baru. Pratinjau Qt Quick baru dengan dukungan 3D diharapkan pada rilis Qt 5.14;
  • Menambahkan alat untuk memproses aset terkait grafis pada waktu kompilasi, seperti mengonversi gambar PNG menjadi tekstur terkompresi atau mengonversi shader dan jerat menjadi format biner yang dioptimalkan untuk perangkat keras tertentu;
  • Menyematkan mesin terpadu untuk tema dan gaya, memungkinkan Anda mencapai tampilan aplikasi berdasarkan Qt Widgets dan Qt Quick, asli untuk berbagai platform seluler dan desktop;
  • Penyatuan alat untuk membuat antarmuka pengguna. Untuk menghindari duplikasi fungsionalitas dan penghentian pengiriman dua produk terpisah, diharapkan fungsionalitas Qt 3D Studio akan diintegrasikan ke dalam Qt Design Studio, banyak subsistem dan kerangka kerja untuk menghubungkan plugin dibangun di atas basis kode yang sama dengan Pencipta Qt.
    Qt Design Studio juga berencana menyediakan integrasi berkualitas tinggi dengan paket pembuatan konten seperti Photoshop, Sketch, Illustrator, Maya, dan 3D Max. Bahasa utama yang didukung dalam perangkat pengembangan terpadu adalah C++, QML, dan Python. Penyatuan juga berarti kemampuan untuk mengakses alat desain antarmuka dari Qt Creator, dan memberikan kemampuan kepada perancang antarmuka dari alat pengembang, misalnya, menyusun proyek atau menguji aplikasi pada perangkat;

  • Diputuskan untuk menggunakan CMake, bukan QMake, sebagai sistem pembangunan. Dukungan untuk membangun aplikasi menggunakan QMake akan tetap ada, namun Qt sendiri akan dibangun menggunakan CMake. CMake dipilih karena toolkit ini banyak digunakan di kalangan pengembang proyek C++ dan didukung di banyak lingkungan pengembangan terintegrasi. Pengembangan sistem perakitan Qbs yang diklaim sebagai pengganti QMake, dihentikan;
  • Transisi ke standar C++17 selama pengembangan (sebelumnya C++98 digunakan). Qt 6 berencana mengimplementasikan dukungan untuk banyak fitur C++ modern, namun tanpa kehilangan kompatibilitas dengan kode berdasarkan standar lama.
  • Kemampuan untuk menggunakan dari C++ beberapa fungsi yang ditawarkan untuk QML dan Qt Quick. Secara khusus, sistem properti baru untuk QObject dan kelas serupa akan disajikan. Mesin untuk bekerja dengan binding akan diintegrasikan dari QML ke dalam inti Qt, yang akan mengurangi beban dan konsumsi memori untuk binding dan membuatnya tersedia untuk semua bagian Qt, dan bukan hanya Qt Quick;
  • Melanjutkan upaya untuk memperluas dukungan untuk bahasa tambahan seperti Python dan WebAssembly;
  • Restrukturisasi dengan memecah menjadi komponen-komponen yang lebih kecil dan mengurangi ukuran produk yang mendasarinya. Alat pengembang dan komponen khusus akan disediakan sebagai add-on yang didistribusikan melalui toko katalog baru. Penambahan Qt dari pengembang pihak ketiga, baik gratis maupun berbayar, juga akan diterima untuk didistribusikan.

Sumber: opennet.ru

Tambah komentar