GLib

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Not to be confused with glibc, the GNU implementation of the C standard library or gnulib, a portability library.
GLib
Developer(s) The GNOME Project et al.
Stable release 2.40.0 (March 24, 2014; 3 months ago (2014-03-24)) [±][1]
Development status Active
Written in C
Operating system Linux, Unix-like, OS X, Microsoft Windows
Platform Cross-platform
Type Library
License GNU Lesser General Public License
Website wiki.gnome.org/Projects/GLib
As the GNU C Library serves as a wrapper for Linux kernel system calls, so do the libraries bundled in GLib (GObject, Glib, GModule, GThread and GIO) serve as further wrappers for their specific tasks.
Simplified software architecture of GTK+. Pango, GDK, ATK, GIO, Cairo and GLib.

GLib is a bundle of five low-level system libraries written in C and developed mainly by GNOME. GLib code was separated from GTK+, so it can be used by software other than GNOME and has been developed in parallel ever since.

Features[edit]

GLib provides advanced data structures, such as memory chunks, doubly and singly linked lists, hash tables, dynamic strings and string utilities, such as a lexical scanner, string chunks (groups of strings), dynamic arrays, balanced binary trees, N-ary trees, quarks (a two-way association of a string and a unique integer identifier), keyed data lists, relations and tuples. Caches provide memory management.

GLib implements functions that provide threads, thread programming and related facilities such as primitive variable access, mutexes, asynchronous queues, secure memory pools, message passing and logging, hook functions (callback registering) and timers. Also message passing facilities such as byte order conversion and I/O channels.

Some other features of GLib include:

  • standard macros
  • warnings and assertions
  • dynamic loading of modules

Components[edit]

The GLib package consisted of 5 libraries, but they were all merged into one library (since then simply known as Glib), and are no longer sustained as standalone libraries. The five original libraries were:

The source code for Glib can be found in the GNOME git: GLib.

History[edit]

GLib began as part of the GTK+ project. However, before releasing GTK+ version 2, the project's developers decided to separate non-GUI-specific code from GTK+, thus creating GLib as a separate software bundle. GLib was released as a separate library so other developers, those who did not make use of the GUI-related portions of GTK+, could make use of the non-GUI portions of the library without the overhead of depending on the entire GUI library.

Since GLib is a cross-platform library, applications using it to interface with the operating system are usually portable across different operating systems without major changes.[2]

Releases[edit]

For a current overview see Roadmap 2.24–2.36 and 2.38–current, for details see the respective release notes in the mailing list or in the tarballs directory.

Release series Initial
release date
Major enhancements
GLib 1.x
1.1 1998-09-12
1.2 1999-02-27
1.3 2001-09-25
GLib 2.x
2.0 2002-03-08
2.24 2010-03-26 GVariant, GConverted
2.26 2010-03-26 GSettings, GDbus, GObject property bindings (GAtomic for refcounting)
2.30 2010-03-26 Non-unique GApplications, use eventfd() for mainloop wakeup, GHashTable set optimization, GObject data scalability
2.32 2012-03-24 Plans for GLib 2.32
2.38 2013-09-23 applications launched using D-Bus activation[3] GSubprocess, Unicode 6.3 (released September 2013)
2.40 2014-03-24 GNotification, System notification API[4]
2.41 TBA GHmac has gained SHA-512 support[5]

Similar projects[edit]

Other widget toolkits provide low-level functions and implementations of data structures as well, e.g.:

External links[edit]

References[edit]

  1. ^ glib releases, gnome.org 
  2. ^ Krause, Andrew (2007). Foundations of GTK+ Development. Expert's Voice in Open Source. Apress. p. 5. ISBN 1-59059-793-1. Retrieved 3 April 2013. "[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!" 
  3. ^ "Setting up an application for D-Bus Launching". 
  4. ^ "GNotification". 
  5. ^ "GLib 2.41.0 release notes". 
  6. ^ http://stackoverflow.com/questions/213460/boost-like-libraries-in-c