Nowości dla programistów

Następujące zmiany są ważne dla programistów używających platformy programistycznej GNOME 3.2. Można tę część pominąć przechodząc od razu do rozdziału Rozdział 5 ― Umiędzynaradawianie.

W środowisku GNOME 3.2 zawarto najnowsze wydanie platformy programistycznej GNOME. Składa się ona z bibliotek o stabilnym API i ABI dostępnych na warunkach licencji GNU LGPL, które można wykorzystywać do tworzenia programów wieloplatformowych.

Więcej informacji o programowaniu za pomocą GNOME można znaleźć w Centrum programistów GNOME.

4.1. GLib 2.30

Biblioteka narzędziowa niskiego poziomu GLib otrzymała różne ulepszenia:

  • Funkcja GApplication może teraz być używana dla nieunikalnych programów.
  • Biblioteka GLib instaluje teraz oddzielny nagłówek dla API uniksowych: glib-unix.h. Dostarcza on między innymi źródło głównej pętli dla sygnałów uniksowych.
  • Dowiązania GDBus obsługują wzorzec "menedżera obiektów" za pomocą licznych nowych interfejsów.
  • Dowiązania GDBus posiadają teraz generator kodu: gdbus-codegen.
  • Działania atomowe zostały przepisane, by używały wbudowanych działań kompilatora GCC. Wywołania z wymuszonymi konwersjami mogą sprawiać problemy.
  • Dodano działania atomowe na wskaźnikach, w tym blokadę bitów w położeniach rozmiaru wskaźnika.
  • Polityka jednostek została zmieniona, aby preferowała jednostki SI. Zmienna g_format_size_for_display została zastąpiona przez g_format_size.
  • Dodano obsługę podpisów HMAC: GHmac.
  • Dodano interfejs dla certyfikatów i wyszukiwania kluczy: GTlsDatabase. Implementacja jest dostarczana przez bibliotekę glib-networking.

4.2. GTK+ 3.2

Biblioteka GTK+ 3.2 jest najnowszym wydaniem zestawu narzędzi GTK+, który jest sercem środowiska GNOME. GTK+ 3.2 zawiera nowe funkcje dla programistów, a także wiele poprawek błędów.

  • Pola wprowadzania mogą teraz zawierać podpowiedzi. Proszę zobaczyć funkcję gtk_entry_set_placeholder_text.
  • Więcej widżetów obsługuje zarządzanie geometrią wysokości względem szerokości. Ważne jest ustawienie rozsądnych rozmiarów etykiet i okien.
  • Nowe widżety:
    • Widżet GtkLockButton dla działań wymagających uprawnień, co można zobaczyć w panelach centrum sterowania.
    • Widżet GtkOverlay dla kontrolek pływających nad obszarem treści, podobnie jak w przeglądarkach WWW.
    • GtkFontChooserDialog, nowe okno wyboru czcionki.
  • Znacznie ulepszona obsługa motywów CSS, w tym klasy stylów dla głównych i wbudowanych pasków narzędziowych.
  • Ulepszony został mechanizm HTML o nazwie Broadway, wyświetlający programy w przeglądarce za pomocą WebSockets, ale wciąż jest w fazie eksperymentalnej. Potencjalnie pozwala on na uruchamianie programów na własnym serwerze i dostęp do nich z dowolnego miejsca, lub umieszczenie programu na serwerze publicznym, który będzie udostępniał osobną kopię programu dla każdego użytkownika. Należy zwrócić uwagę, że do jego działania wymagane jest skompilowanie biblioteki GTK+ z włączoną opcją --enable-x11-backend --enable-broadway-backend i ustawienie zmiennej środowiskowej GDK_BACKEND podczas uruchamiania.
  • Dodano obsługę reftests w celu ułatwienia pisania testów.
  • Poprawienie wydajności biblioteki GTK+ w różnych obszarach, takich jak buforowanie żądań rozmiarów, odczytywanie informacji o stylu CSS i obliczaniu rozmiaru widżetów.

4.3. Clutter 1.8

Biblioteka interfejsów użytkownika przyspieszanych sprzętowo środowiska GNOME o nazwie Clutter zawiera następujące ulepszenia:

  • Nowe działania, takie jak ClutterGestureAction do zapisywania rozpoznanych gestów, ClutterSwipeAction do wykrywania gestów przewijania, ClutterDropAction do sprawiania, aby aktor upuścił element docelowy podczas używania ClutterDragAction, a także obsługę długiego przyciśnięcia w ClutterClickAction.
  • Przekształcenia ClutterState mogą być dowiązywane do sygnałów obiektów podczas tworzenia sceny w ClutterScript.
  • Ulepszona integracja rysowania z biblioteką cairo.
  • Cogl, interfejs programowania procesora graficznego używany przez bibliotekę Clutter, został wydzielony do oddzielnej biblioteki.

4.4. Wykorzystanie przestarzałych bibliotek

Poczyniono postępy w nieustającej pracy nad zastępowaniem przestarzałych technologii lepszymi rozwiązaniami.

  • Biblioteka GConf używa teraz domyślnie usługi D-Bus i nie wymaga już biblioteki ORBit2. Z tego powodu ze środowiska GNOME usunięto przestarzałe biblioteki ORBit2 i libIDL.
  • Główne moduły środowiska GNOME zależą teraz tylko od dowiązań do języka Python opartych na introspekcji (pygobject-3), więc biblioteki PyGTK, gnome-python i gnome-python-desktop nie są już wymagane.
  • Niektóre programy (na przykład Accerciser, Dasher, GHex, graficzny debuger Nemiver oraz narzędzie do zarządzania hasłami i kluczami szyfrowania Seahorse) zamiast biblioteki GConf używają teraz mechanizmu GSettings do przechowywania ustawień.
  • Część pakietów, takich jak przeglądarka WWW Epiphany zostało przekonwertowanych z używania dowiązań dbus-glib do dowiązań GDBus oraz z biblioteki libunique do interfejsu G(tk)Application.

4.5. Łatwiejsze kompilowanie środowiska GNOME za pomocą JHBuild

JHBuild, narzędzie do budowania środowiska GNOME, nie buduje już modułów, jeśli wersja zainstalowana w systemie jest dostatecznie nowa. Można to kontrolować za pomocą opcji konfiguracji partial_build, która jest domyślnie włączona. Za pomocą polecenia jhbuild sysdeps wyświetla się listę modułów odnalezionych w systemie oraz listę modułów, które zostaną zbudowane.

W przypadku kompilowania od podstaw środowiska GNOME za pomocą aktualnej dystrybucji może to zmniejszyć listę kompilowanych modułów nawet o 50.

4.6. Różne aktualizacje dla programistów

Inne ulepszenia platformy programistycznej GNOME w wersji 3.2 obejmują:

  • Klasyczne (statyczne) dowiązania do języka Python zostały usunięte z PyGObject 3.0. Dostarczane są tylko dowiązania dynamiczne (przez introspekcję). Biblioteki PyGObject 2 i 3 mogą być instalowane równolegle, ponieważ introspekcja jest domyślnie wyłączona w pakietach PyGObject 2. Dostępne są informacje o przenoszeniu programów z PyGObject 2 do PyGObject 3.
  • Usługa Tracker w wersji 0.12 obsługuje następujące wersje poszczególnych programów: Firefox ≥ 4.0, Thunderbird ≥ 5.0, MeeGoTouch, a także kilka dodatkowych parametrów SPARQL, wydobywanie informacji z plików EPub oraz lokalne katalogi XDG dla plików .desktop.
  • Usługa NetworkManager w wersji 0.9 dostarcza obsługę introspekcji i uproszczone API dla usługi D-Bus. Dostępne są informacje o przenoszeniu programów z wersji 0.8 do 0.9 usługi NetworkManager.
  • Jako część wspomnianych wcześniej starań, aby używać i promować PKCS#11 jako warstwę między bibliotekami kryptograficznymi, różne części usługi gnome-keyring zostały wydzielone do bibliotek niezależnych od środowiska.
  • Biblioteka GtkSourceView obsługuje teraz wyróżnianie elementów składni plików Markdown i Standard ML.
  • Usługa Evolution-Data-Server otrzymała wiele poprawek w obsłudze introspekcji.
  • Biblioteka libfolks zawiera teraz mechanizm Evolution-Data-Server, który jest używany przez nowy program Kontakty.
  • W przypadku narzędzi używanych do przetwarzania dokumentacji pakiety gnome-doc-utils i xml2po są stopniowo zastępowane przez pakiety yelp-tools i itstool. Pakiet yelp-xsl zawiera kilka eksperymentalnych rozszerzeń formatu Mallard, takich jak przetwarzanie warunkowe i dynamiczne glosariusze.