GTK 4.2.0 现在可以在通常的地点下载。
此版本是应用程序开发人员将其项目移植到 GTK4 的第一轮反馈的结果,因此它主要包括错误修复和 API 改进——但我们也添加了新功能,例如新的 GL 渲染器;工具包如何处理组合键和死键序列的各种改进;在 Windows 和 macOS 上编译 GTK 的构建系统改进;以及一个全新的 API 参考,该参考从语言绑定也使用的相同内省数据生成。
有关更多信息,您可以查看之前关于 4.1 开发周期的博文。
NGL 渲染器
感谢 Christian Hergert 的辛勤工作,NGL 渲染器现在是 Linux、Windows 和 macOS 的默认渲染器。我们收到了来自使用 Lima 等驱动程序的移动平台用户的非常积极的反馈,他们在每秒帧数以及功耗和 CPU 使用率方面都有了显着的改进;后两者也将对台式机和笔记本电脑用户产生积极影响。NGL 渲染器才刚刚开始:新的代码库将使我们能够在未来进行更多的改进。
目前,我们保留了旧的 GL 渲染器;您可以在您的环境中使用 export GSK_RENDERER=gl
来返回到 4.0 GL 渲染器——但如果您需要这样做,请务必提交问题,以便我们有机会修复 NGL 渲染器。
输入
Matthias 写了一篇关于处理组合键和死键输入序列的整篇博文,所以你可以直接阅读它。死键处理已经进行了几次迭代,以处理输入堆栈较低层中引入的古怪之处和解决方法。
在某些键盘布局中,死音符重音与撇号的处理存在一个已知问题,目前仍在调查中。如果您发现键盘输入的其他问题,尤其是在组合键序列或死键方面,请提交问题。
可移植性
GTK 的目标之一是拥有一个“交钥匙”构建系统,该系统能够从 Git 存储库的克隆版本到工具包的完全可部署安装,而无需手动完成所有依赖项,或使用奇怪的装置。您可以在这篇来自 Collabora 的朋友的文章中看到它在 Windows 上如何使用本机工具工作。
此外,我们现在确保您可以将 GTK 用作 Meson 子项目;这意味着您可以将 GTK 及其所有依赖项构建为您自己的应用程序构建环境的一部分,并且您可以轻松地收集所有构建工件,以便您使用您选择的工具链将它们与您的应用程序一起分发。
文档
对于 GTK 的新手来说,最臭名昭著的问题之一就是文档。不熟悉我们 API 的应用程序开发人员通常发现在我们的文档中很难找到信息;此外,API 参考的样式和结构已经很久没有更新了。为了改善第一印象和我们文档的使用,GTK 已切换到新的文档生成器,称为 gi-docgen。这个新工具为 API 参考添加了新功能,例如在文档中客户端搜索术语;以及一些不错的小可用性改进,例如
- 代码片段和示例的“复制到剪贴板”按钮
- 每个类的祖先和接口的可视层次结构
- 类中继承的属性、信号和方法的列表
- 响应式设计,使在小屏幕上使用 API 参考更容易
API 只有在允许开发人员以最符合习惯的方式使用它时才算好。GTK 不仅有 C API,还通过 GObject-Introspection 公开了一个用于语言绑定使用的整个 API。新文档使用相同的数据,这不仅使我们能够将构建时间缩短一半,而且还从源代码中的注释生成常见的文档位,使 API 参考更加一致和可靠;最后,C API 参考与语言绑定作者在使用内省数据时看到的内容相匹配,这意味着我们将在引入新 API 时收紧工具包和绑定开发人员之间的反馈循环。
Pango 和 GdkPixbuf 也已切换到 gi-docgen,这使我们能够通过我们的 CI 管道为各种依赖项构建 API 参考,并将其发布到一个全新的网站:docs.gtk.org。您始终可以在那里找到最新版本的 GTK 文档。
零星杂项
当然,除了这些可见的变化之外,我们还有一些较小的变化
- 从用于渲染我们内容的 GLSL 着色器到按需创建而不是预先创建的可访问性对象,整体性能得到了提高
- 当使用更新版本的 Cairo 和适当的 API 时,文本的子像素定位
- 表情符号选择器的响应式布局
- 改进了弹出窗口小部件中阴影的渲染
- 微调按钮中的本地化数字
- 改进了对 Wayland 输入法协议的支持
- 提高了文本视图小部件的滚动性能
数字
GTK 4.2 是四个月开发的成果,由 54 位开发人员进行了 1268 次单独的更改;总共添加了 73950 行,删除了 60717 行。
更改集最多的开发人员 | ||
---|---|---|
Matthias Clasen | 843 | 66.5% |
Emmanuele Bassi | 124 | 9.8% |
Timm Bäder | 87 | 6.9% |
Christian Hergert | 33 | 2.6% |
Jakub Steiner | 24 | 1.9% |
Benjamin Otte | 21 | 1.7% |
Chun-wei Fan | 15 | 1.2% |
Alexander Mikhaylenko | 14 | 1.1% |
Fabio Lagalla | 10 | 0.8% |
Bilal Elmoussaoui | 8 | 0.6% |
Carlos Garnacho | 6 | 0.5% |
Ignacio Casal Quinteiro | 6 | 0.5% |
Michael Catanzaro | 6 | 0.5% |
Emmanuel Gil Peyrot | 5 | 0.4% |
Xavier Claessens | 4 | 0.3% |
David Lechner | 4 | 0.3% |
Jan Alexander Steffens (heftig) | 4 | 0.3% |
Kalev Lember | 3 | 0.2% |
wisp3rwind | 3 | 0.2% |
Mohammed Sadiq | 2 | 0.2% |
更改行数最多的开发人员 | ||
---|---|---|
Matthias Clasen | 38475 | 42.6% |
Emmanuele Bassi | 15997 | 17.7% |
Christian Hergert | 13913 | 15.4% |
Kalev Lember | 9202 | 10.2% |
Timm Bäder | 5890 | 6.5% |
Jakub Steiner | 2397 | 2.7% |
Benjamin Otte | 902 | 1.0% |
Chun-wei Fan | 783 | 0.9% |
Ignacio Casal Quinteiro | 717 | 0.8% |
Fabio Lagalla | 292 | 0.3% |
Marek Kasik | 267 | 0.3% |
Alexander Mikhaylenko | 254 | 0.3% |
Emmanuel Gil Peyrot | 232 | 0.3% |
Simon McVittie | 214 | 0.2% |
Jan Tojnar | 83 | 0.1% |
wisp3rwind | 74 | 0.1% |
Jan Alexander Steffens (heftig) | 65 | 0.1% |
Carlos Garnacho | 62 | 0.1% |
Michael Catanzaro | 61 | 0.1% |
Ungedummt | 60 | 0.1% |
删除行数最多的开发人员 | ||
---|---|---|
Emmanuele Bassi | 8408 | 13.8% |
Jakub Steiner | 1890 | 3.1% |
Timm Bäder | 493 | 0.8% |
Simon McVittie | 203 | 0.3% |
Emmanuel Gil Peyrot | 146 | 0.2% |
Chun-wei Fan | 43 | 0.1% |
Jan Tojnar | 26 | 0.0% |
Alexander Mikhaylenko | 25 | 0.0% |
Jonas Ådahl | 17 | 0.0% |
Luca Bacci | 13 | 0.0% |
Robert Mader | 4 | 0.0% |
Chris Mayo | 3 | 0.0% |
Bartłomiej Piotrowski | 2 | 0.0% |
Marc-André Lureau | 2 | 0.0% |
Jan Alexander Steffens (heftig) | 1 | 0.0% |
Tom Schoonjans | 1 | 0.0% |