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.