原文链接:
http://blog.qt.io/blog/2017/05/31/qt-5-9-released
翻译内容如下,采用的是第三方某在线翻译软件,所以有些地方不是太精确,纵然大吉做了一定的调整,但是终究不得完美!
我很高兴让大家知道,Qt 5.9.0刚刚发布。我们已经投入了大量的工作,使Qt 5.9成为目前为止我们开发的最好的Qt版本。 在Qt 5.9中,我们对性能和稳定性有了强烈的关注。我们已经在Qt中修复了大量的bug,并且我们已经做了大量的工作来改进我们的持续集成系统。这将使我们更容易从5.9开始创建新版本(补丁级别和小版本)。我们还在测试基础设施中添加了自动性能回归测试,这将允许我们不断地监视我们的工作,以提高Qt的性能。Qt Lite中使用的新配置系统已经收到了很多bug修复,也在这里,您可以在单独的博客文章中找到更多的详细信息。
长期支持版本我们所做的一个主要决定是使Qt . 5.9成为另一个长期支持的(LTS)版本。之前的LTS版本,Qt 5.6,已经开始显示它的年龄,许多用户要求更多的更新版本的Qt,他们可以作为长期运行项目的基础。 在Qt 5.6之后的一些主要变化包括超过2000个bug修复。另外,我们现在使用一个c++ 11兼容编译器和Qt,它允许我们实现代码库的现代化。我们还添加了Qt Lite配置系统,并对我们的图形体系结构进行了重要的更新。这是除了在Qt 5.9中实现的所有其他新内容之外,在下面几节中解释。作为一项LTS发布,Qt 5.9将在未来三年内得到支持。随着我们对CI和发布基础设施的改进,我们确信我们将能够为Qt 5.9提供更多的更新和补丁级别的版本,而不是Qt 5.6系列。作为一个长期支持的版本,我们将在第一年提供频繁更新。在第一年之后,我们将逐渐对在分支中发生的变化变得越来越严格,因此,在第二和第三年,补丁级别的发布将会稍微少一些。我们将一如承诺继续支持Qt 5.6,但我们强烈建议每个人开始新项目使用Qt 5.9,因为有很多改进,将会对您有很大的好处。
很多新功能
即使我们关注性能和稳定性,我们还是设法将更多的新特性添加到Qt 5.9中,而不是仅限于我在这个博客中提到的这些。对于更完整的列表,请查看我们wiki中的“新特性”页面。下面是一些突出显示的新特性,大吉也会在GK-View,N32926,NUC972,IMX平台,全志平台上第一时间试验QT5.9,还请多关注大吉博客。
在核心和网络模块中添加了一些新特性。从基础类开始,Qt核心有两个新类。第一个类qfloat16抽象了16位浮点数,因为这些现在对于使用GPU的api越来越重要。此外,还添加了一个新的QOperatingSystemVersion类,以方便地测试应用程序正在运行的操作系统和版本。Qt网络获得了对HSTS(HTTP Strict Transport Security)的支持,通过QNetworkAccessManager提高了HTTPS连接的安全性。我们在Qt NFC的NFC支持已经看到了Android的一些非常好的改进,Qt Web socket现在可以使用外部TCP套接字。在WinRT和蓝牙外围设备上的经典蓝牙技术现在都得到了支持。
Qt Gui和3D
Qt GUI获得了一个着色缓存,它可以缓存OpenGL着色程序的编译版本,我们还增加了对计算着色器的支持。OpenGL涂料引擎现在也与OpenGL核心配置文件一起工作。Qt 3D已经完成了大量的工作。与我们在Qt 5.8中已经拥有的功能一起,我们现在在Qt 5.9中有了一个很棒的3D引擎。你可以在我们的合作伙伴KDAB单独的博客中找到所有的细节。
Qt QML和Quick
Qt 5.9改进了QML和JS引擎,已经进行了相当多的工作。我们添加了一个完全重写的垃圾收集器,提供更好的性能和减少JavaScript堆中的内存碎片。新收集器还提供了更好的基础,以便在即将到来的Qt版本中进一步增强我们的内存管理。Qt 5.9还提供了全新的QML缓存基础设施,为我们的用户提供了类似的好处——就像商业上可用的Qt快速编译器一样,但是以一种更加透明的方式。新的基础设施有两种操作模式。在默认模式下,缓存基础结构在应用程序的第一个启动阶段创建QML文件的二进制缓存。您还可以在应用程序构建时预先创建缓存,实现与Qt快速编译器类似的性能和启动时间。此外,新的缓存基础设施不会将您的应用程序绑定到Qt的特定补丁级别版本,因为二进制缓存是版本化的,如果需要,将会重新生成。此外,在引擎中进行了大量工作来提高性能和减少内存消耗,这使得与我们之前的Qt 5.6 LTS版本相比,这是一个重要的升级。Qt Quick现在利用Qt GUI中添加的OpenGL着色缓存,改进了应用程序启动时间。我们添加了一个图像提供程序,可以在进程之间共享图像数据,以及一个新的OpenVG后端,允许它在只有2D硬件加速支持的硬件上运行。Qt快速控制2增加了更多的新功能,请查看单独的总结博客文章,链接到所有的细节和博客文章,在Qt 5.7中添加了Qt快速控制。
Qt位置和定位
对于这个版本,Qt位置已经收到了相当多的新特性。我们增加了对倾斜和旋转地图的支持,通过api和触摸手势。地图的叠加已经得到了改进,现在在地图上添加覆盖项变得更容易了,我们改进了对地图上的版权声明的支持。一个全新的插件添加了对Mapbox的支持,使用他们的OpenGL的地图渲染引擎。还有一些其他的视觉改进也发生了,比如使用较低分辨率的瓷砖来估计在更高的缩放级别上仍然缺少的瓷砖,直到下载完。在iOS中,我们改进了Qt定位,这样即使应用程序在后台,它也可以收集数据。
其他模块
其他许多模块也已经更新。最明显的是,Qt Webengine现在使用的是Chromium 56。Qt虚拟键盘现在支持外部键盘布局和许多其他很酷的新功能,Qt Gamepad已经脱离技术预览状态,在Qt 5.9中完全支持。我们还在技术预览状态中添加了Qt远程对象作为一个新模块。在另一篇博客文章中对Qt Wayland进行了重大的改动。当然,Qt 5.9也有一个全新版本的Qt Creator,有很多新的特性。Qt Quick Designer现在包含一个内置的代码编辑器,现在我们已经完全重写了cmake集成。要了解更多细节,请查看单独的博客。
平台变更
Qt 5.9增加了两个新平台的支持。它现在支持qnx7.0,QNX操作系统的最新版本。我们还增加了对完整性操作系统的支持,关于这一点的详细信息在另一个博客文章中再次出现。最后,我们添加了支持编译Qt的大小优化模式(-操作GCC),为Qt库和应用程序节省大约5 - 20%的二进制大小。
鸣谢!
最后,我要感谢所有为这次释放作出贡献的人们。虽然您可以看到并跟踪所有通过补丁到我们的git存储库的用户,但许多额外的工作在幕后发生了更多的变化,例如,通过我们的CI和发布基础设施,或者帮助为web页面创建抵押品和内容。我希望你们都喜欢这个版本。您可以通过您的Qt帐户或从我们的下载页面获取它。请不要忘记给我们反馈,并编写一个bug报告(如果您应该找到的话),这样我们就可以在即将发布的补丁中进一步改进5.9系列。
以上内容是这次发布时,Lars Knoll的博客发布的更新内容,下面我们来简单的回顾一下,QT5.5以来各种较大的变化:
1.QT.5.5,子版本:QT5.5.0,5.5.1
特色:
最后一个集成webkit版本
最后一个webkit与Qt WebEngine并存的版本
第一次支持Windows10系统
第一次支持蓝牙Bluetooth LE API
大吉点评:
qreal存在bug,在配置configure时,如果在./configure时,添加-qreal float 会编译出错; 不支持触摸转屏,
不支持UI转屏,是最后一个和QT4版本兼容最好的QT5版本。
测试平台:GK-View,N32926,NUC972,IMX6UL,IMX283, A33,T2,T3,AM335X
2.QT.5.6,子版本:QT5.6.0,5.6.1,5.6.2
特色:
长期支持版本(LTS),支持年限为3年(2016年3月~2019年3月)
第一次支持Can总线,动态库名称为:libQt5SerialBus.so
增加高DPI或苹果的视网膜显示屏的支持
将基于Chromium 45的Qt WebEngine 完全集成,取消了webkit的集成
大吉点评:
解决了QT5.5中qreal的bug,该版本表现比较稳定,但是该版本放弃了webkit的集成,QtWebEngine又是第一次完全集成,
对于那些依赖这部分进行开发的用户, 动荡是非常大的,所以实际国内用的人比较少。
测试平台:GK-View,N32926,NUC972,IMX6UL
3.QT5.7,子版本:QT5.7.0,QT5.7.1
特色:
将原来QT一直使用的LGPL2授权修改为LGPL3,关于LGPL授权问题,可以参考以下博文:
https://my.oschina.net/yonghe/blog/377647
第一次要求GCC编译工具链支持C++11,所以编译QT5.7以后的版本建议使用GCC-4.8.1或更高版本(GCC4.8.1发布于2015年),
具体原因请参考以下博文:
http://blog.csdn.net/haluoluo211/article/details/71141093
QtWebEngine在Chromium 49基础上重新集成
对树莓派3和IMX7平台做了支持优化
新增两个重要类,Qt Charts Qt Data Visualization,需要对数据进行虚拟化和可视化的用户可以参考这个版本做起,
以下博文是对这两个类的介绍:
http://blog.csdn.net/czyt1988/article/details/51351495
大吉点评:该版本用户极少,整个版本更新完全是为了QT5.8,不建议用户使用。
4.QT5.8,子版本:QT5.8.0
特点:
小幅度调整了QT源码的编译体系,以便适应QT Lite
新增QT Lite版本,让用户编译出最小QT库
完全支持 Wayland 合成器, 语音功能
QtWebEngine在Chromium 53基础上重新集成
完全支持SCXML
完全支持Can总线和Modbus总线通信
第一次新增网络签名认证模块
大吉点评:该版本仍然不是一个值得使用的版本,所谓的QT Lite,其实不是什么新东西,不知网友是否使用过一个配置,
在配置configure文件时,我们往往通过./configure -qconfig mini 或者./configure -qconfig full来选择QT的哪些类需要编译进库里面,
做过类似尝试的网友可能都知道,这个选项有时候会编译出错或者刚 好裁剪掉了自己APP需要的类,操作起来非常繁杂。那么,
Qt Lite就是干同样事情的,不同的是Qt Lite提供了更直观的配置体系,还提供了一个GUI工具,名称是 Qt Configuration Tool,
目前还没有国内用户声称拿到了该工具,也许是商业版才有吧,更多关于Qt Lite的信息可以参考以下博文:
http://blog.csdn.net/wsj18808050/article/details/55808104?locationNum=1&fps=1
从编译角度讲,QT5.8的编译并没有改变,只是少了或者多了一些模块,架构上没有翻天覆地的变化,网友们不用担心。
QT5.8发布到QT5.9发布,期间时间间隔很短,所以,建议网友都迁移到QT5.9上去,大吉也会第一时间做QT5.9的平台测试。
测试平台:GK-View,N32926,NUC972,IMX6UL,A33
结束语
本文中只是很浅略地对比了QT5.5以来各个版本的一些变化,供网友们参考,有什么疑问或者技术问题,可以联系大吉一起讨论。
谢谢您的耐心阅读!