Что нового для разработчиков

Следующие изменения важны для разработчиков, использующих платформу для разработки GNOME 3.2. Если вам не интересны изменения для разработчиков перейдите к Раздел 5 ― Интернационализация.

В GNOME 3.2 включена последняя версия платформы для разработчиков GNOME. Платформа состоит из набора стабильных библиотек API и ABI, доступных на условиях лицензии GNU LGPL, которые можно использовать для разработки кросс-платформенных приложений.

Информацию о разработке с помощью GNOME можно найти на странице центра для разработчиков GNOME.

4.1 GLib 2.30

В низкоуровневую инструментальную библиотеку GNOME GLib внесены различные улучшения:

  • Класс GApplication можно использовать для неуникальных приложений.
  • Теперь для API, зависящих от версии Unix, GLib устанавливает отдельный заголовок: glib-unix.h. Кроме того, он также предоставляет основный цикл для Unix-сигналов.
  • Класс GDBus поддерживает шаблон «Диспетчер объектов» со множеством новых интерфейсов.
  • В классе GDBus появился генератор кода: gdbus-codegen.
  • Атомарные операции были переписаны для использования встроенных функций gcc; при вызовах с явным приведением типа могут возникнуть проблемы.
  • Добавлены атомарные операции над указателями, включая битовые блокировки адресных пространств.
  • В политике использования единиц измерения предпочтение отадётся международной системе единиц (СИ); вместо устаревшей функции 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.
  • Теперь гораздо больше виджетов поддерживают управление геометрией «height-for-width». Установка разумных размеров текстовых меток и проверка размеров окон — важный элемент при разработке интерфейса.
  • Новые виджеты:
    • GtkLockButton для действий, требующих особых прав; используется в некоторых панелях в центре управления.
    • GtkOverlay для плавающего управления над областью содержимого (как показано в веб-браузерах).
    • Новое диалоговое окно выбора шрифтов GtkFontChooserDialog.
  • Значительно улучшена поддержка внешнего оформления (на основе CSS), включая классы стилей для основных и встроенных панелей инструментов.
  • Улучшен, хотя всё ещё остаётся экспериментальным, HTML-драйвер Broadway, который занимается отрисовкой в браузере с помощью WebSocket. Вы сможете либо запускать приложения на своём сервере и получать доступ к запущенному приложению из другого места, или сделать его доступным через сервер, который будет создавать новый экземпляр приложения для каждого пользователя. Примечание: GTK+ должен быть скомпилирован с параметром --enable-x11-backend --enable-broadway-backend, а также требуется установленная переменная среды GDK_BACKEND.
  • Для упрощения написания тестовых случаев была добавлена поддержка ref-тестов.
  • Различные улучшения производительности GTK+ при выполнении операций кэширования, чтения информации о стилях CSS и вычислении размеров виджетов.

4.3 Clutter 1.8

В графической библиотеке GNOME Clutter, предназначенной для создания интерфейсов с поддержкой аппаратного ускорения, были сделаны следующие улучшения:

  • Новые действия, например, ClutterGestureAction для записи жестов, ClutterSwipeAction для определения непрерывных однопальцевых жестов, ClutterDropAction для прекращения перетаскивания объектов при использовании ClutterDragAction, а также поддержка длительного нажатия ClutterClickAction.
  • Переходы ClutterState могут быть привязаны к сигналам объектов при создании сцены в ClutterScript.
  • Улучшена интеграция с Cairo.
  • Новый интерфейс Cogl для программирования GPU с помощью Clutter вынесен в отдельную библиотеку.

4.4 Использование устаревших библиотек

Дальнейшие улучшения в работе по замене устаревших технологий на более современные инструменты.

  • Теперь GConf по умолчанию использует D-Bus и поэтому больше не требует ORBit2. В результате, устаревшие библиотеки ORBit2 и libIDL были удалены из GNOME.
  • Теперь основные модули GNOME зависят только от Python-привязок (pygobject-3), поэтому pygtk, gnome-python и gnome-python-desktop больше не требуются.
  • Теперь несколько приложений (например, Accerciser, Dasher, GHex, gnome-video-arcade, графический отладчик Nemiver, а также инструмент управления паролями и ключами шифрования Seahorse) вместо GConf используют GSettings.
  • Несколько пакетов, таких как веб-браузер Epiphany, были переведены с dbus-glib на GDBus и с libunique на G(tk)Application.

4.5 Компиляция GNOME с помощью JHBuild

Инструмент сборки GNOME JHBuild больше не собирает модуль, если его версия, установленная в вашей системе, является достаточной. За это отвечает включённый по умолчанию параметр partial_build. Команда jhbuild sysdeps выводит список найденных системных модулей, а также модулей, которые будут собраны.

Если вы хотите собрать GNOME с нуля, это позволит пропустить 50 модулей из списка собираемых модулей.

4.6 Различные обновления для разработчиков

Другие улучшения платформы GNOME в версии 3.2:

  • Классические (статические) привязки к Python были убраны для PyGObject 3.0, предоставляются только динамические привязки (через интроспекцию). PyGObject 2 и 3 можно устанавливать параллельно, т. к. интроспекция в пакетах PyGObject 2 по умолчанию отключена. См. как портировать приложения с PyGObject 2 на PyGObject 3.
  • В новой версии Tracker добавлена поддержка Firefox ≥ 4.0, Thunderbird ≥ 5.0, MeeGoTouch, нескольких дополнительных параметров SPARQL, извлечение информации из файлов EPub, а также локальных каталогов XDG для desktop-файлов.
  • В NetworkManager версии 0.9 реализована поддержка интроспекции и упрощён API для D-Bus. См. как портировать приложения с NetworkManager версии 0.8 на версию 0.9.
  • В рамках упомянутых усилий по использованию и продвижению PKCS#11 в качестве «прослойки» между библиотеками шифрования, различные части gnome-keyring были разделены на независимые от рабочего стола библиотеки.
  • GtkSourceView теперь поддерживает подсветку синтаксиса файлов Markdown и Standard ML.
  • В Evolution-Data-Server исправлено множество ошибок в поддержке интроспекции.
  • libfolks теперь включает в себя драйвер Evolution-Data-Server, который используется новым приложением Contacts.
  • Среди инструментов, используемых для обработки документации, gnome-doc-utils и xml2po постепенно заменяются yelp-tools и itstool. В yelp-xsl включено несколько экспериментальных расширений Mallard, например обработка условий и динамические глоссарии.