GLib - GLib

GLib
Originalautor(en) Shawn Amundson
Entwickler Das GNOME-Projekt et al.
Erstveröffentlichung 1998 ; Vor 23 Jahren ( 1998 )
Stabile Version
2.70.0  Bearbeiten Sie dies auf Wikidata / 17. September 2021 ; vor 9 Tagen ( 17. September 2021 )
Repository
Geschrieben in C
Betriebssystem Linux , Unix-ähnlich , macOS , Windows
Plattform Plattformübergreifend
Typ Bücherei
Lizenz LGPLv2.1
Webseite wiki .gnome .org /Projekte /GLib
Vereinfachte Softwarearchitektur von GTK . Pango , GDK , ATK , GIO , Kairo und GLib.

GLib ist ein Bündel von drei (ehemals fünf) Low-Level - System - Bibliotheken in geschrieben C und vor allem von entwickelt GNOME . Der Code von GLib wurde von GTK getrennt , sodass er von anderer Software als GNOME verwendet werden kann und seitdem parallel entwickelt wurde.

Merkmale

GLib bietet erweiterte Datenstrukturen, wie Speicherblöcke, doppelt und einfach verkettete Listen , Hash-Tabellen , dynamische Strings und String-Dienstprogramme wie einen lexikalischen Scanner, String-Chunks (Gruppen von Strings), dynamische Arrays , ausgeglichene Binärbäume , N-ary Bäume , Quarks (eine bidirektionale Assoziation eines Strings und eines eindeutigen ganzzahligen Bezeichners), Schlüsseldatenlisten, Relationen und Tupel . Caches bieten Speicherverwaltung.

GLib implementiert Funktionen, die Threads , Thread-Programmierung und verwandte Einrichtungen wie primitiven Variablenzugriff, Mutexes , asynchrone Warteschlangen , sichere Speicherpools , Nachrichtenweitergabe und -protokollierung, Hook-Funktionen (Rückrufregistrierung) und Zeitgeber bereitstellen . GLib enthält auch Nachrichtenweiterleitungsfunktionen wie die Konvertierung der Byte-Reihenfolge und I/O-Kanäle.

Einige andere Funktionen von GLib umfassen:

  • Standard - Makros
  • Warnungen und Behauptungen
  • dynamisches Laden von Modulen

Komponenten

Das GLib-Paket bestand aus fünf Bibliotheken, aber sie wurden alle zu einer Bibliothek zusammengeführt, die seitdem einfach GLib genannt wird , und werden nicht mehr als eigenständige Bibliotheken beibehalten. Die ursprünglichen Bibliotheken waren:

  • GObject , ein Objektsystem einschließlich des Typsystems GType
  • GLib
  • GModul
  • GThread
  • GIO

Von diesen befinden sich drei weiterhin in unterschiedlichen Unterverzeichnissen des Quellbaums und können daher als separate Komponenten betrachtet werden: GLib, GObject und GIO. Diese kann man sich als Software-Stack vorstellen: GObject basiert auf GLib, und GIO bietet Funktionen auf höherer Ebene, die beides verwenden.

Geschichte

GLib begann als Teil des GTK+ -Projekts, das jetzt GTK heißt. Vor der Veröffentlichung von GTK+ Version 2 beschlossen die Entwickler des Projekts jedoch, Code von GTK+ zu trennen, der nicht für grafische Benutzeroberflächen (GUIs) gedacht war, und erstellten so GLib als separates Softwarepaket. GLib wurde als separate Bibliothek veröffentlicht, so dass andere Entwickler, die nicht die GUI-bezogenen Teile von GTK+ verwenden, die Nicht-GUI-Teile der Bibliothek verwenden können, ohne den Aufwand für die Abhängigkeit von der vollständigen GUI-Bibliothek zu haben.

Da GLib eine plattformübergreifende Bibliothek ist, sind Anwendungen, die sie als Schnittstelle mit dem Betriebssystem verwenden, normalerweise ohne größere Änderungen über verschiedene Betriebssysteme portierbar.

Veröffentlichungen

Eine aktuelle Übersicht finden Sie in Roadmap 2.24–2.36 und 2.38–current , Details in den jeweiligen Release Notes in der Mailingliste oder im Tarballs-Verzeichnis.

Release-Serie
Datum der ersten Veröffentlichung
Wichtige Verbesserungen
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 GVariante, GKonvertiert
2.26 27.09.2010 GSettings , GDbus, GObject- Eigenschaftsbindungen (GAtomic für Refcounting)
2.30 2011-09-26 Nicht eindeutige GA-Anwendungen, Verwendung eventfd()für Mainloop-Wakeup, GHashTable-Set-Optimierung, GObject-Datenskalierbarkeit
2.32 2012-03-24 Pläne für GLib 2.32
2.34 2012-09-23 Was ist neu für Entwickler in GLib 2.34
2.36 2013-03-25
2.38 2013-09-23 Anwendungen, die mit D-Bus- Aktivierung gestartet wurden GSubprocess, Unicode 6.3 (veröffentlicht im September 2013)
2.40 2014-03-24 GNotification, Systembenachrichtigungs-API
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

Ähnliche Projekte

Andere Bibliotheken bieten Low-Level-Funktionen und Implementierungen von Datenstrukturen, einschließlich:

  • Standard Template Library (STL) – C++ Bibliothek für Datenstrukturen und Algorithmen
  • Boost – bietet einige Funktionen für C++, z. B. Threading-Primitive, ähnlich wie GLib für C
  • QtCore – Kern-API des Qt-Frameworks
  • wxBase – Nicht-GUI-Funktionen der wxWidgets- Bibliothek
  • Die Apache Portable Runtime und die Apple Core Foundation haben eine große funktionale Überschneidung mit GLib und bieten viele ähnliche betriebssystem-portable Threading-, Netzwerk- und Datenstruktur-Implementierungen in C.

Verweise

Externe Links