原文链接:Tuukka Turunen - Qt Roadmap for 2018
(翻译校审:Haipeng Yu、Yulong Bai和Ryan Chu)
引言:2018年,我们将继续完善Qt 5.9 LTS,现在我们正在为5月份发布Qt 5.11进行最后冲刺,并有望在11月份推出Qt 5.12 LTS。除Qt框架外,我们还在积极开发各种工具。以下是我们2018年的工作计划。
今年是我在Qt博客上与大家分享年度工作计划的第三年。首先还是要感谢全球每位Qt开发者的付出。虽然我们实现了大部分产品功能,但离不开多年来每一位Qt社区开发者的宝贵贡献,他们不断塑造着Qt。除了贡献代码,还有大量开发者活跃在Qt论坛和邮件列表中,帮助我们审核代码,测试各种开发版本。感谢大家与我们一起成就了Qt。
今年,我们计划发布两个包含新功能的版本,即5月的Qt 5.11和11月的Qt 5.12 LTS (长期支持版本)。和以往一样,我们会先推出预发布版以测试新功能,也会针对用户反馈问题推出补丁版本。当然,我们会继续为Qt 5.9 LTS推出补丁版本。
我们计划为Qt Creator推出三款版本以改进集成开发环境(IDE)并增加新功能,分别是3月的Creator4.6,7月的Creator 4.7以及11月的Creator 4.8。Qt 3D Studio是我们最新开发的工具,计划于今年6月推出基于Qt 3D引擎的Qt 3D Studio 2.0,9月发布Qt 3D Studio 2.1,12月发布Qt 3D Studio 2.2。
对于特定的行业,我们会继续更新Qt for Automation和Qt Automotive Suite这两款解决方案。作为一个全新的主要版本,Qt Automotive Suite 2.0已于2月底发布,之后会陆续推出增量更新版。我们还会推出全新的Qt Safe Renderer 1.0,用于开发Qt安全关键应用程序。
所以这是Qt无比忙碌的一年。让我们马上了解一下这些新版本里都包含了哪些新功能。
Qt 5.9 LTS已是一个稳健版,含多个补丁版本,提升了诸多功能。在Qt 5.9.x补丁版本,我们修复了上千位用户上报的问题,并将在2018年持续更新。Qt 5.9 LTS现已进入Strict阶段,这意味着我们需要集中精力修复最关键的Bug,而非关键性漏洞将在Qt 5.11(以及随后的5.12 LTS)中集中修复。在不断提升质量的同时,我们也积极关注关键用例中的性能表现。我们不断监测产品性能,以识别导致某些领域性能衰退的代码提交,并尽可能提升产品性能。Bug修复和性能提升双管齐下,全新的Qt版本才能更快、更稳定地运行当前的应用程序。
说到新功能,我们做了许多与图形相关的工作。统一3D引擎可谓是2018年的一个重头戏。Qt 3D Studio 1.x版本使用了英伟达(NVIDIA)提供的3D引擎。虽然该引擎性能稳定出色,但是向Qt 3D迁移的优势显而易见:可轻松在同一应用程序上同时使用预定义和编程创建的内容,更好地支持不同的操作系统和硬件,并且无需开发、维护两台不同的3D引擎。
长期以来,我们都在努力改善Qt 3D Studio,使其能兼容Qt 3D应用程序,而Qt 3D自身的功能也在此过程得到了提升。比如,我们完善了Qt 3D的性能,并降低了有效运行Qt 3D Studio复杂应用程序时的内存消耗。可以预见,这些在Qt 3D引擎取得的性能提升,也能有助力于已有的Qt 3D和即将到来的Qt 3D Studio 2.0应用程序。这是一个统一3D引擎带来好处的绝佳范例。
资源调节(asset conditioning)是图形渲染中的另一个主要功能,针对不同的目标硬件,它可优化应用程序达到最佳性能。无论是2D还是3D图形,资源大小通常是整体资源大小的重要组成部分,尤其是运行时所占用的内存大小。今年,我们会继续完善Qt的资源调节支持,添加更多可支持的纹理压缩和打包格式,从而在创建系统和工具时,更轻松自如地控制图形资源。
Qt 5.10加入了对ETC1、ETC2和ETC2_EAC压缩的基本支持,Qt 5.11改善了纹理压缩,并增加支持常用的Khronos Texture(KTX)文件格式。带OpenGL ES 3.x支持的现代GPU可高效处理压缩纹理,从而在使用新版Qt时提高内存使用率和性能。我们不断改善Qt的资源调节能力,当前正积极探索纹理贴图和其他可行功能,从而更好地提升纹理性能和内存使用。
我们还完善了对Vulkan的支持,并首次在Qt 5.12中支持Metal。我们已着手研究支持硬件图形图层,尤其是如何使用Qt Wayland时实现这一功能。这仍然是个硬件问题,但我们已能在一些常用入门级芯片上实现这一功能。
作为支持鼠标、触屏和手势事件操作的新方式,全新的手势操作,即PointerHandlers,是我们一直在努力的主要领域。这一新功能主要解决了通用性问题,对多点触摸和多显示器应用程序尤为重要,弥补了之前版本未能涵盖的方面。新功能允许在Qt应用中使用其他的控制机制,如支持通过相机或距离传感器监测到的手势动作。
Pointer Handlers提供了轻量级解释性API,用于跨场景并行、识别和处理鼠标和触摸屏上最常见的鼠标、触摸和多点触摸动作(按下-保持-释放、拖曳、滑动和收缩)。必要时,用户可跨屏幕与多个项目互动。此功能首先出现在Qt Labs中,我们计划在Qt 5.12中加入完整功能,让Pointer Handlers实现更多用例,并在之后的版本中公布C++ API。
Qt 5.10中,Qt Quick Controls 2初步具备了基于图片样式的功能。我们希望在Qt5.11中完成该功能以及新的设计模板,包括供Inkscape使用的模板(其他包括Sketch、Illustrator和Photoshop模板)。我们也正在开发一项性能优化的全新表格视图(table view)实现,并且会集成到Qt Quick当中,该功能计划在Qt 5.12中推出。为尽早获得反馈以提供全新的表格视图(table view),我们会将该功能作为补丁在Qt 5.11中测试。这是一个始终以高性能为前提的新实现,目前进展非常良好。
因此Qt Quick用户将用到很多新功能,但Qt Widgets用户也不必担心,我们从未忘记你们。去年我们修复了Qt Widgets的多个Bug,今年会继续这项工作。Qt Widgets和Qt Quick各有千秋,作为Qt产品的支持组件,它们互为补充。
Qt WebEngine是一款基于Chromium的HTML5引擎,将在Qt 5.11中升级对应Chromium 65版本。关于Qt 5.12 LTS,我们正在讨论从Qt发布时间表中移除Qt WebEngine的可能性,以增加Qt WebEngine的更新频率。尽管仍处于研究阶段,但把Qt WebEngine拆分为独立组件可以带来诸多益处。我们认为,Qt WebEngine独立后更新频率可以达到每三个月一次,能与每六周一次的Chromium发布频率契合。对Qt 5.12 LTS的用户而言,这意味着在获得安全更新的同时,更能获Qt LTS版本支持的全新的Chromium版本。
Qt for Python(即Python编程语言绑定)是我们今年计划推出的重量级产品。原代号为PySide,开发工作已持续了较长时间。在进行了大量工作后,我们目前已能提供一款基于Qt 5.11的技术预览版。简而言之,它提供了一组使Python应用程序能使用Qt功能的绑定(bindings)。例如,Qt是创建Python应用程序用户界面的绝佳框架,作为一种强大的编程语言,Python拥有庞大且仍在持续增长的用户群体。编程技术问答网站Stack Overflow分析认为,Python是增长速度最快的编程语言,其开发者数量在2012年就超过了C++开发者,目前已超过后者总数的三倍。但TIOBE开发语言排行榜指数仍认为C++比Python更受欢迎,但其调查也表明Python正处于增长趋势。我们希望众多Python开发者能发现Qt在其应用程序中的价值。
框架项目列表中的最后一项新产品Qt for WebAssembly。就像我们已着手进行Qt for NativeClient以及emscripten的相关开发,当前对WebAssembly的工作也然会遵循相同的方向。2017年以来,四大浏览器公司(Chrome、Edge、Firefox和WebKit/Safari)已接受使用WebAssembly,后者将会为运行Qt提供稳定平台。今后我们会撰写更多关于在WebAssembly上运行Qt应用程序的文章,您现在可以了解一下其代码和创建说明。
在工具领域,基于英伟达一年前的贡献,我们一直在努力打造全新的Qt3D Studio,这是一款创建互动式3D用户界面和应用程序的绝佳工具,其编辑器是可在Windows、Mac和Linux上运行的跨平台Qt应用程序。Qt 3D Studio并非用于设计3D模型的工具,后者可以通过AutoDesk Maya,Foundry MODO,甚至是Adobe Photoshop等常用工具导入。Qt 3D Studio附带了一整套材料和诸多资源,是用其他工具导入模型的补充。今年的重要发布是基于Qt 3D引擎运行的Qt 3D Studio 2.0。此举可带来诸多益处,包括可与其他Qt功能更加深度集成,提升可移植性和降低维护成本等。
虽然Qt 3D Studio示例大多基于汽车和数字座舱,但是它并非仅适用于汽车行业。自动化、医疗、娱乐、家用电器等都需要3D用户界面。Qt 3D和Qt 3D Studio同样适用于创建增强现实(AR)和虚拟现实(VR)的应用程序,这个欣欣向荣的技术领域能给消费者和商业需求带来诸多好处。汽车是Qt的一个重点领域,因此我们会根据该市场需求不断开发Qt 3D Studio,但它不会是我们唯一的关注领域。
在Qt 3D Studio 2.0和后续的2.x版本中,我们尤其关注它与其他Qt组建的互操作性,如与Qt Quick和QtCreator IDE的无缝集成。完全重写时间轴组件将是编辑器的一大改进,此举能极大改善用户体验和工作流程。2.0版本将会完全支持Behavior API和Data Node API。我们也会继续改善示例和文档,让Qt创建3D用户界面的过程更加变得高效、简易和有趣。
除了开发创建3D用户界面的工具,我们还在积极探索如何改善用于创建2D用户界面的工具。Qt Quick可快速创建动态和交互式用户界面,而且在很多用例中,仅这一个工具就能胜任用户界面的创建。我们的目标之一是更好地支持使用常用设计工具导入资源,让不精通软件开发的用户也能轻松操作。其他重大改进包括工具的功能、用户体验和可用性,同样是针对除开发者以外的用户。第三个重要改进是,用户可在目标应用程序甚至是目标设备上,轻松查看修改后过的设计结果。易于部署至目标设备一直是Qt Creator的优势,但仍有改进空间。今年下半年我们将首次推出优化后的UI设计工具,届时将与大家分享更多相关信息。
今年的Qt Creator更新版也会有多项改进,包括使用 Clang code Model,支持Python,支持即将推出的Qt目标平台(如Qt for WebAssemby),以及改善Cmake支持。使用Clang可为我们提供用于现代和未来C++语言标准的code-assistant。随着Qt for Python的问世,Qt Creator支持Python就显得极为重要,开发者们得以更方便地开发和调试Python应用程序。
除上述的酷炫功能外,我们会继续改进Qt Creator的所有重要功能,如提供调试支持、代码编辑器功能(与clang/qml代码模型互补)和发布功能(改进安装过程,通过在线安装程序安装的预发布版本)。我们在不断改善Qt Creator 对Cmake的支持,以满足不断增长的Cmake用户群体需求。我们也在不断进行QBS的开发和qmake的维护工作,使其成为Qt应用中的可用选项。此外,我们还会持续研究Qt Creator的性能表现,并不断做出改进。
今年我们会推出Qt SafeRenderer 1.0,这是一款全新的组件,用户能更轻松地创建安全关键型用户界面。它包括两个主要部件:与Qt Creator集成创建安全关键型用户界面,以及用于渲染安全关键型用户界面的渲染组件。我们正处于获取Qt Safe Renderer功能安全认证的最后阶段,包括对安全关键型工具和运行时组件。
除了根据客户和重点行业反馈改进通用产品外,我们还根据特定行业需求开发了相应的解决方案。它们也可用于其他行业,但最契合的还是与其名字相关的领域,最好的示例就是Qt for Automation和Qt Automotive Suite。
今年,在Qt for Automation上,我们的主要工作是全面支持MQTT,KNX和OPC/UA的应用。去年我们推出了Qt MQTT和Qt KNX技术预览版,并将在Qt未来版本中全面支持这两个功能。Qt OpcUa是我们的新增功能,我们计划在Qt 5.11发布时推出全新功能Qt OpcUa的技术预览版,再根据用户反馈完成开发,在Qt 5.12中正式发布。
刚发布的Qt Automotive Suite 2.0基于Qt 5.9LTS,整合了Qt Safe Renderer套件和Qt 3D Studio,全面升级了QtIVI增加从QFace IDL生成API的功能,提高了Neptune UI、Application Manager和GammaRay分析性能,并添加了新的功能。
若您希望了解Qt的更多近况,包括在中国举办的活动,请关注我们的微信公众号(微信号:theQtCompany),点击官网上的“联系我们”,加入邮件列表,或参与论坛上的讨论。
如果您喜欢这篇文章,请帮我们点个赞或转发到您的朋友圈。谢谢!