GLib
GLib é uma biblioteca multiplataforma de software que inicialmente fazia parte do projeto GTK+. Antes da liberação da versão 2 do GTK+, os desenvolvedores resolveram separar a parte não relacionada com a interface gráfica e criar um produto separado. A GLib é uma biblioteca de uso geral que disponibiliza vários tipos de dados, macros, funções para conversão de tipos, utilitários para manipulação de strings e de arquivos, um laço de eventos, além de outras implementações.
Como a GLib é uma biblioteca multiplataforma, as aplicações que a utilizam como interface para o sistema operacional podem ser utilizadas em diferentes sistemas sem maiores alterações.[1]
Características
[editar | editar código-fonte]A GLib possui estruturas de dados avançadas, como chunks de memória, listas duplamente ou simplesmente ligadas, tabelas hash, funções para manipulação de strings, análise léxica de textos, arrays dinâmicos, árvores binárias balanceadas, quarks (uma associação de duas vias entre uma string e um identificador numérico único) e tuplas (tabelas de dados que podem ser indexados por qualquer combinação de campos). O gerenciamento de memória é realizado através de "fatias" de memória (memory slices) e permite a alocação eficiente de memória[2] através da implementação do esquema slab allocation.[3]
A GLib também fornece funções que facilitam a criação de programas com múltiplas threads: mutexes, primitivas para acesso a variáveis globais, filas assíncronas, troca de mensagens, log, hooking e timers.
Também estão incluídas na GLib as seguintes funcionalidades:
- macros padronizadas;
- carregamento dinâmico de módulos;
- um sistema de tipos, GType;
- um sistema de objetos, GObject
Projetos similares
[editar | editar código-fonte]Para algumas aplicações, a combinação da linguagem C com a biblioteca GLib é uma alternativa para o uso da linguagem C++ com a biblioteca STL. (Ver GObject para uma comparação detalhada).
A Apache Portable Runtime possui uma grande sobreposição em relação a GLib e fornece muitas implementações similares para programação com threads, rede e estruturas de dados.
Outros toolkits também fornecem pacotes com funções e estruturas de baixo nível. Por exemplo, no wxWidgets as funções não relacionadas a GUI estão separadas na biblioteca wxBase, e no Qt estas funções estão incluídas no módulo QtCore.
Componentes
[editar | editar código-fonte]O pacote GLib é composto de 5 bibliotecas:
- GObject
- GLib
- GModule
- GThread
- GIO
- ↑ Krause, Andrew (2007). Foundations of GTK+ Development. Col: Expert's Voice in Open Source. [S.l.]: Apress. p. 5. ISBN 1590597931.
[GLib] provides a cross-platform interface that allows your code to be run on any of its supported operating systems with little to no rewriting of code!
- ↑ Krause, Andrew (2007). Foundations of GTK+ Development. Col: Expert's Voice in Open Source. [S.l.]: Apress. p. 166. ISBN 1590597931.
The advantage of using memory slices is that they avoid excessive memory waste and fix scalability and performance problems that plagued memory chunks!
- ↑ «Memory Slices» (HTML). Consultado em 16 de outubro de 2011