针对开发者的新特性
以下变更对于开发者非常重要。如果您对针对开发者的变更不感兴趣,可以跳到第5节 ― 国际化。
包含于 GNOME 3.2 中的还有 GNOME 开发平台的最新版本,并提供了一系列遵循 GNU LGPL 的 API- 与 ABI- 稳定的程序库,可用于跨平台应用程序的开发。
关于使用 GNOME 进行开发的更多信息,请访问 GNOME 开发者中心。
- 4.1. Glib 2.30
- 4.2. GTK+ 3.2
- 4.3. Clutter 1.8
- 4.4. 对废弃程序库的使用
- 4.5. 使用 JHBuild 编译 GNOME 更加容易
- 4.6. 与开发者有关的杂项更新
4.1. Glib 2.30
GNOME 的底层软件工具库 GLib 有了很多改进:
- GApplication 现在可以用于非单窗口程序。
- GLib 现在安装一个分离的 Unix 独有编程接口的头文件:glib-unix.h。除其它一些功能外,还为 Unix 信号提供一个主循环源。
- GDBus 支持“对象管理器”匹配器以及一系列新接口。
- GDBus 现在有了一个代码生成器:gdbus-codegen。
- 原子操作已经重写,以使用 gcc 内置功能;调用显式转换可能会有问题。
- 添加了对于指针的原子操作,包括在指针大小区域上的位锁。
- 计量单位正常更改为首选 SI 单位;g_format_size_for_display 已经废弃,现在赞成使用 g_format_size。
- 已经添加对 HMAC 摘要的支持:GHmac。
- 新添加了一个证书和密钥查找接口:GTlsDatabase。glib-networking 提供了一个实现
4.2. GTK+ 3.2
GTK+ 3.2 是 GTK+ 工具集的最新版,是 GNOME 的心脏。GTK+ 3.2 包括对于开发者的新功能以及错误修复。
- 输入框现在可以使用提示了,请参考 gtk_entry_set_placeholder_text。
- 还有很多控件支持宽-高几何管理。这对设置合理的标签尺寸以及查看窗口尺寸非常重要。
- 新控件:
- GtkLockButton 支持特权操作,正如在一些控制中心面板中看到的。
- 用于在内容区上方悬浮控制的 GtkOverlay,就像浏览器中那样。
- GtkFontChooserDialog,一个新的字体选择对话框。
- 更多对 CSS 主题的支持改进,包括对于主工具栏和内联工具栏的样式类。
- HTML 后端 Broadway,使用 websockets ,在浏览器中进行渲染,已经得到了 改进,但是仍然是实验性的。这潜在地可以让您的程序在服务器上运行,并且可以在任何地方访问;或者放置在公共服务器上,为每一位用户产生一个程序实例。注意这需要使用 --enable-x11-backend --enable-broadway-backend 来编译 GTK+,并且在运行时需要 GDK_BACKEND 环境变量。
- 对 reftests 的支持 已经添加,会让编写测试用例更加简单。
- 已经进行 了一系列的 GTK+ 性能改进,包括缓存大小请求、读取 CSS 样式信息以及控件尺寸计算。
4.3. Clutter 1.8
GNOME 用于硬件加速用户界面的图形库 Clutter 提供了如下改进:
- 新动作,比如用于编写手势识别的 ClutterGestureAction,用于探测轻扫手势的 ClutterSwipeAction,用于在使用 ClutterDragAction 时让操作者放下目标的 ClutterDropAction 以及 ClutterClickAction 的长按支持。
- ClutterState transitions can be bound to object signals when creating a scene in ClutterScript.
- 改进 Cairo 绘制集成
- Cogl,Clutter 使用的 GPU 编程接口,现在分离出来作为了单独的库。
4.4. 对废弃程序库的使用
使用更先进工具替换过时技术的进程在一直不间断地进行着。
- GConf 现在默认使用 D-Bus,因此就不再需要 ORBit2 了。所以废弃库 ORBit2 和 libIDL 可以从 GNOME 中移除了。
- GNOME 核心模块现在只依赖基于 introspection 的 Python 绑定(pygobject-3)了,因此不再需要 pygtk, gnome-python 和 gnome-python-desktop 了。
- 多个程序 (例如 Accerciser, Dasher, GHex, 图形调试器 Nemiver, 和密码及加密密钥管理工具 Seahorse) 现在使用 GSettings 作为存储后端来代替 GConf。
- 多个程序,例如 Epiphany 网页浏览器已经从使用 dbus-glib 转换到使用 GDBus,从 libunique 转换到 G(tk)Application。
4.5. 使用 JHBuild 编译 GNOME 更加容易
GNOME 的编译工具 JHBuild 不再编译系统上已经安装的、足够新的模块了。这由配置选项 partial_build 控制,并且默认启用了。jhbuild sysdeps 命令列出哪些系统模块已经找到以及哪些模块需要编译。
如果您使用一个最近的发行版从头开始编译 GNOME,这可以轻松地从要编译的列表中去掉 50 个模块。
4.6. 与开发者有关的杂项更新
GNOME 3.2 中 GNOME 平台的一些其它改变包括:
- 经典(静态) Python 绑定已经因为 PyGObject 3.0 而移除,现在只提供动态 Python 绑定(通过 introspection)。PyGObject 2 和 3 可以同时安装,因为 introspection 在 PyGObject 2 包中默认禁用了。这是关于 如何从 PyGObject 2 向 PyGObject 3 移植 的信息。
- Tracker 版本 0.12 提供对 Firefox ≥ 4.0,Thunderbird ≥ 5.0, MeeGoTouch, 多种附加 SPARQL 参数,从 EPub 文件中提取信息,和本地 XDG 目录 desktop 文件的支持
- NetworkManager 0.9 版提供了 introspection 支持和简化的 D-Bus API。这是 如何从 NetworkManager 0.8 向 0.9 移植 的信息。
- 作为前述努力的一部分,为使用和促进使用 PKCS#11 作为加密库之间的胶水,gnome-keyring 的很多部分已经分离出来成为了 桌面无关的库。
- GtkSourceView 现在支持 Markdown 和标准 ML 文件的高亮。
- Evolution-Data-Server 获得了很多 introspection 支持方面的修复。
- libfolks 现在包含一个 Evolution-Data-Server 后端,由新的 联系人 程序使用。
- 对于用于文档处理的工具,gnome-doc-utils 和 xml2po 正在慢慢得被 yelp-tools 和 itstool 替代。yelp-xsl 包含一些实验性的 Mallard 扩展,比如条件处理和动态术语表。