GLib es un conjunto de tres (anteriormente cinco) bibliotecas de sistema de bajo nivel escritas en C y desarrolladas principalmente por GNOME . El código de GLib se separó de GTK , por lo que puede ser utilizado por software distinto de GNOME y se ha desarrollado en paralelo desde entonces.
El nombre "GLib" tiene su origen en el inicio del proyecto como una biblioteca de utilidades GTK C.
GLib proporciona estructuras de datos avanzadas, como fragmentos de memoria, listas doblemente enlazadas y enlazadas de forma simple , tablas hash , cadenas dinámicas y utilidades de cadenas, como un escáner léxico , fragmentos de cadenas (grupos de cadenas), matrices dinámicas, árboles binarios balanceados , árboles N-arios , quarks (una asociación bidireccional de una cadena y un identificador entero único), listas de datos con clave, relaciones y tuplas . Los cachés proporcionan gestión de memoria.
GLib implementa funciones que proporcionan subprocesos , programación de subprocesos y facilidades relacionadas, como acceso a variables primitivas, mutexes , colas asincrónicas, grupos de memoria seguros , paso y registro de mensajes, funciones de enlace (registro de devolución de llamada) y temporizadores . GLib también incluye facilidades de paso de mensajes, como conversión de orden de bytes y canales de E/S.
Algunas otras características de GLib incluyen:
El paquete GLib constaba de cinco bibliotecas, pero todas se fusionaron en una sola biblioteca, que desde entonces se llamó simplemente GLib , y ya no se mantienen como bibliotecas independientes. Las bibliotecas originales eran:
De estos, tres siguen residiendo en subdirectorios distintos del árbol de código fuente, por lo que pueden considerarse componentes discretos: GLib, GObject y GIO. Se los puede considerar como una pila de software: GObject se basa en GLib y GIO proporciona una funcionalidad de nivel superior que utiliza ambos.
GLib comenzó como parte del proyecto GTK+ , ahora llamado GTK. Sin embargo, antes de lanzar la versión 2 de GTK+, los desarrolladores del proyecto decidieron separar el código de GTK+ que no fuera para interfaces gráficas de usuario (GUI), creando así GLib como un paquete de software independiente. GLib se lanzó como una biblioteca independiente para que otros desarrolladores, aquellos que no usaran las partes relacionadas con GUI de GTK+, pudieran usar las partes no relacionadas con GUI de la biblioteca sin la sobrecarga de depender de la biblioteca de GUI completa.
Dado que GLib es una biblioteca multiplataforma , las aplicaciones que la utilizan para interactuar con el sistema operativo suelen ser portables entre diferentes sistemas operativos sin necesidad de realizar cambios importantes. [2]
Glib se encuentra en desarrollo activo. Para obtener una descripción general actual, consulte https://gitlab.gnome.org/GNOME/glib/-/blob/main/NEWS. La siguiente tabla documenta las notas de los parches principales desde 1998 hasta 2022.
Otras bibliotecas proporcionan funciones de bajo nivel e implementaciones de estructuras de datos, entre las que se incluyen:
[GLib] proporciona una interfaz multiplataforma que permite ejecutar su código en cualquiera de sus sistemas operativos compatibles con poca o ninguna reescritura del código .