GLib
Original author(s) | Shawn Amundson |
---|---|
Developer(s) | The GNOME Project et al. |
Initial release | 1998 |
Stable release | 2.66.7 (February 11, 2021[±][1] | )
Repository | |
Written in | C |
Operating system | Linux, Unix-like, macOS, Windows |
Platform | Cross-platform |
Type | Library |
License | GNU Lesser General Public License |
Website | wiki |
GLib is a bundle of three (formerly five) low-level system libraries written in C and developed mainly by GNOME. GLib's code was separated from GTK+, so it can be used by software other than GNOME and has been developed in parallel ever since.
Features
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. GLib also includes message passing facilities such as byte order conversion and I/O channels.
Some other features of GLib include:
Components
The GLib package consisted of five libraries, but they were all merged into one library, since then named simply GLib, and are no longer sustained as standalone libraries. The original libraries were:
Of these, three continue to reside in distinct subdirectories of the source tree, and so can be thought of as discrete components: GLib, GObject, and GIO. These can be thought of as a software stack: GObject relies on GLib, and GIO provides higher-level functionality that uses both.
History
GLib began as part of the GTK+ project. However, before releasing GTK+ version 2, the project's developers decided to separate code from GTK+ that was not for graphical user interfaces (GUIs), thus creating GLib as a separate software bundle. GLib was released as a separate library so other developers, those not using the GUI-related parts of GTK+, could use the non-GUI parts of the library without the overhead of depending on the full 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
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-09-27 | GSettings, GDbus, GObject property bindings (GAtomic for refcounting) |
2.30 | 2011-09-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.34 | 2012-09-23 | What's New for Developers in GLib 2.34 |
2.36 | 2013-03-25 | |
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.42 | 2014-09-22 | |
2.43 | 2014-10-27 | |
2.44 | 2015-03-23 | |
2.45 | 2015-04-30 | |
2.46 | 2015-09-21 | |
2.47 | 2015-10-26 | |
2.48 | 2016-03-22 | |
2.50 | 2016-09-19 | |
2.52 | 2017-03-19 | |
2.53 | 2017-04-25 | |
2.54 | 2018-01-08 |
Similar projects
Other widget toolkits provide low-level functions and implementations of data structures, including:
- Standard Template Library (STL) – C++ library for data structures and algorithms
- Boost – provides some functions for C++, such as threading primitives, similar to what GLib does for C[5]
- QtCore - core API of the Qt Framework.
- wxBase – non-GUI functions of the wxWidgets library
- The Apache Portable Runtime and Apple Core Foundation have a large functional overlap with GLib, and provide many similar OS-portable threading, network and data structure implementations in C.
References
- ^ Withnall, Philip (11 Feb 2021). "glib 2.66.7". GNOME ftp-release (Mailing list). Retrieved 12 February 2021.
- ^ 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!
- ^ "Setting up an application for D-Bus Launching".
- ^ "GNotification".
- ^ "Boost like libraries in C". stackoverflow.com.