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 着色器到按需而不是预先创建的可访问性对象,性能在各方面都有所提高
- 当使用具有适当 API 的较新版本的 Cairo 时,文本的亚像素定位
- 表情符号选择器的响应式布局
- 改进了弹出窗口小部件中阴影的渲染
- 微调按钮中的本地化数字
- 改进了对 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% |