Novidades para desenvolvedores

As seguintes alterações são importantes para os desenvolvedores que usam a Plataforma do desenvolvedor do GNOME 3.2. Se as mudanças para desenvolvedores não lhe interessam, você pode pular para Seção 5 ― Internacionalização.

O lançamento mais recente da Plataforma do desenvolvedor GNOME foi incluído no GNOME 3.2. Ela consiste de um conjunto de bibliotecas com ABI e API estáveis sob a licença GNU LGPL que podem ser usadas para o desenvolvimento de aplicativos multiplataforma.

Para informações sobre o desenvolvimento com o GNOME, visite a Central do desenvolvedor GNOME.

4.1 GLib 2.30

A biblioteca de utilitários de software em baixo nível do GNOME, a GLib, teve várias melhorias:

  • GApplication agora pode ser usada para aplicativos não-únicos.
  • GLib agora instala um cabeçalho em separado para APIs específicas para Unix: glib-unix.h. Dentre outras coisas, ela provê uma fonte de sinais Unix no laço principal.
  • GDBus suporta o padrão do "gerenciador de objeto" com um número de novas interfaces.
  • GDBus agora tem um gerador de código: gdbus-codegen.
  • Atomic operations foram reescritas para usar gcc builtins; chamadas com conversões explícitas podem ser problemáticas.
  • Atomic operations em ponteiros foram adicionadas, incluindo bit-locks em locais pointer-size.
  • A política de unidades foi alterada para preferir unidades SI ; g_format_size_for_display foi preterida em favor de g_format_size.
  • Suporte para HMAC digests foram adicionados: GHmac.
  • Foi adicionada uma interface para pesquisa de certificado e chaves: GTlsDatabase. Uma implementação é fornecida pela glib-networking.

4.2 GTK+ 3.2

GTK+ 3.2 é a versão mais recente do toolkit GTK+, que é o coração do GNOME. GTK+ 3.2 inclui novos recursos para os desenvolvedores, além de extensas correções de erros.

  • Entradas agora podem conter dicas. Consulte gtk_entry_set_placeholder_text.
  • Muitos mais widgets possuem suporte ao gerenciamento de geometria de altura-para-largura. Isso é importante para definir tamanhos razoáveis em rótulos e verificar tamanhos de janela.
  • Novos widgets:
    • GtkLockButton para operações privilegiadas, como visto em alguns painéis do Centro de controle.
    • GtkOverlay para controles flutuantes sobre uma área de conteúdo, como pode ser visto em navegadores da web.
    • GtkFontChooserDialog, uma nova caixa de diálogo de seleção de fonte.
  • Suporte muito melhorado de temas CSS, incluindo classes de estilo para as barras de ferramentas principal e integrada.
  • O backend HTML Broadway, que renderiza em um navegador usando websockets, foi melhorado, mas ainda é experimental. Potencialmente, isso permite que você execute seus próprios aplicativos em seu servidor e também que pode acessá-los de qualquer lugar ou colocá-los em um servidor público que gera uma nova instância do aplicativo para cada usuário. Observe que isso requer compilar o GTK+ com --enable-x11-backend --enable-broadway-backend e também a variável de ambiente GDK_BACKEND em tempo de execução.
  • Suporte para reftests foi adicionado tornando mais fácil escrever os casos de teste.
  • Várias melhorias de desempenho do GTK+ tiveram espaço nas áreas de requisições de tamanho de cache, leitura de informações de estilo CSS e cálculo do tamanho de widgets.

4.3 Clutter 1.8

A biblioteca gráfica do GNOME para interfaces de usuário com aceleração de hardware Clutter fornece os seguintes aprimoramentos:

  • Novas ações, tais como ClutterGestureAction para escrever identificadores de gesto, ClutterSwipeAction para a detecção de gestos, ClutterDropAction para permitir ao ator acertar alvos quando usando ClutterDragAction e suporte para pressionamento-demorado ClutterClickAction.
  • Transições ClutterState podem ser ligadas a sinais de objeto ao criar uma cena no ClutterScript.
  • Melhor integração de desenho do Cairo.
  • Cogl, a interface de programação de GPU usada pelo Clutter, está como uma biblioteca separada.

4.4 Uso de bibliotecas obsoletas

Novos progressos foram feitos no trabalho contínuo de substituir tecnologias ultrapassadas por facilidades superiores.

  • GConf agora usa o D-Bus por padrão e, portanto, não requer mais ORBit2. Como consequência, as bibliotecas obsoletas ORBit2 e libIDL foram removidas do GNOME.
  • Módulos núcleo do GNOME agora só dependem de bindings de Python baseado no introspection (pygobject-3) e, portanto, pygtk, gnome-python e gnome-python-desktop não são necessários mais.
  • Vários aplicativos (por exemplo Accerciser, Dasher, GHex, o depurador gráfico Nemiver, e a ferramenta de gerenciamento de senhas e de chaves de criptografia Seahorse) agora usam o GSettings como armazenamento back-end em vez do GConf.
  • Vários pacotes, tais como navegador da web Epiphany, foram convertidos de usar dbus-glib para GDBus e de libunique para G(tk)Application.

4.5 É fácil compilar o GNOME com JHBuild

A ferramenta de compilação do GNOME JHBuild não compila mais módulos cuja versão instalada no seu sistema é suficientemente recente. Isto é controlado através da opção de configuração partial_build e ela é ativada por padrão. O comando sysdeps jhbuild lista quais módulos de sistema foram encontrados, bem como os módulos que vão ser compilados.

Se você começar a construir o GNOME do zero com uma distribuição recente, você pode facilmente remover 50 módulos da lista de módulos a compilar.

4.6 Diversas atualizações para desenvolvedores

Outros aprimoramentos da plataforma GNOME no GNOME 3.2 incluem:

  • As ligações clássicas (estáticas) de Python foram removidas para o PyGObject 3.0 e somente ligações Python dinâmicas são fornecidas (através da introspecção). PyGObject 2 e 3 são instaladas em paralelo, com isso a introspecção é desativada por padrão em pacotes do PyGObject 2. Informações sobre como portar aplicativos de PyGObject 2 para PyGObject 3 estão disponíveis.
  • O Tracker versão 0.12 fornece suporte para Firefox ≥ 4.0, Thunderbird ≥ 5.0, MeeGoTouch, vários parâmetros adicionais de SPARQL, extraindo informações de arquivos EPub e diretórios XDG locais para arquivos de área de trabalho.
  • O NetworkManager versão 0.9 fornece suporte a introspecção e uma API D-Bus simplificada. Informações de como portar aplicativos do NetworkManager 0.8 a 0.9 estão disponível.
  • Como parte do esforço acima mencionado para usar e promover o PKCS#11 como uma cola entre bibliotecas de criptografia, várias partes do Chaveiro do GNOME foram divididas em bibliotecas independente da área de trabalho.
  • GtkSourceView agora oferece suporte a destaque de sintaxe de arquivos Markdown e Standard ML.
  • Evolution-Data-Server recebeu muitas correções de suporte à intropecção.
  • A libfolks agora inclui um back-end do Evolution-Data-Server, que é usado pelo novo aplicativo de Contatos .
  • Entre as ferramentas utilizadas para documentação de processamento, gnome-doc-utils e xml2po estão lentamente sendo substituídos por yelp-tools e itstool. yelp-xsl inclui algumas extensões experimentais do Mallard, como processamento condicional e glossários dinâmicos.