# Diet libc

diet libc (englisch diet ‚Diät‘) ist eine C-Standard-Bibliothek für Linux-Betriebssysteme. Mit diet libc soll es ermöglicht werden, für Linux besonders kompakte Binärdateien zu erstellen. Die Bibliothek wurde von Felix von Leitner unter Mithilfe von bisher über 100 Freiwilligen entwickelt. Die Bibliothek unterliegt der GPL-Lizenz, Version 2, es sind jedoch beim Autor auch kommerzielle Lizenzen erhältlich.
Der Fachöffentlichkeit vorgestellt wurde die Bibliothek unter anderem in Vorträgen von Leitners auf dem 8. Internationalen Linux-Kongress 2001 und den Chemnitzer Linux-Tagen 2002.

## Funktionsumfang

Eine C-Standard-Bibliothek beinhaltet normalerweise etwa 200 Funktionen, die von vielen in C geschriebenen Programmen benötigt werden. Die unter Linux normalerweise verwendete glibc geht zum einen deutlich über diesen Funktionsumfang hinaus und besteht außerdem aus einigen wenigen größeren Codeblöcken, die von einem Programm, das auch nur eine dieser Funktionen nutzt, geladen werden müssen.
Die diet libc wurde dagegen von Grund auf neu geschrieben und beschränkt sich auf die wichtigsten Funktionen der Standard-C-Bibliothek, zudem ist der Programmcode auf Geschwindigkeit und geringen Umfang optimiert. Der Name spielt dabei bereits auf die primäre Zielsetzung einer schlanken libc an, was zu einer Größe des Programmpaketes von derzeit knapp 420 kB gegenüber etwa 4,5 MB bei der glibc führt. Die gesamte Bibliothek ist dabei modular aufgebaut, so dass jeweils nur die Funktionen geladen werden müssen, die tatsächlich in dem Programm genutzt werden. Gegenüber der glibc gibt dies einen deutlichen Gewinn an Geschwindigkeit und die kompilierten Programme werden wesentlich kleiner. Ein vollständiger Ersatz der glibc ist auf Grund des Umfanges dieser bisher noch nicht möglich, wobei jedoch mit jeder neuen Version der diet libc weitere Funktionen zu dieser hinzugefügt werden. Darüber hinaus gibt es eine Reihe von Patches, mit denen insbesondere Kommandozeilenprogramme und Server an die diet libc angepasst werden können. Programme müssen für die Verwendung der diet libc zudem generell neu kompiliert werden.

## Entwicklungsgeschichte

Die Anfänge der Entwicklung der diet libc sind nur schlecht nachvollziehbar, da die ältesten Versionen undatiert sind; die älteste noch öffentlich zugängliche Version ist die 0.7 vom 16. Januar 2001, die Changelogs reichen bis zu einer Version 0.5.9 zurück. Inzwischen liegt die Bibliothek in der Version 0.35 vor, die am 31. Oktober 2024 erschienen ist.

## Verwendung

Verwendung findet die diet libc vor allem für freie Software im Bereich von eingebetteten Systemen. Die GPL erlaubt kein Linken bei proprietären Programmen, daher wird hier die unter der LGPL stehende uClibc bevorzugt. Zudem unterstützt die uClibc noch mehr Architekturen, ist jedoch wie die normale glibc nicht modular. Beide Bibliotheken werden auch von T2 SDE unterstützt.
Im Gegensatz zu der größeren uClibc kann die diet libc auch für besonders kompakte Linux-Distributionen eingesetzt werden, wie dies beispielsweise im Falle des inzwischen offenbar eingeschlafenen Projektes DietLinux der Fall ist. Auch in den während des Bootvorgangs benutzten initrd- beziehungsweise initramfs-Systemen diverser konventioneller Linux-Distributionen wird diet libc aus Platz- und Geschwindigkeitsgründen verwendet.
Hauptsächlich wird diet libc für statische Linkungen verwendet, also den Fall, in dem die benötigten Funktionen der Bibliothek in dem Programm selbst enthalten sind, statt als eine weitere Datei auf dem System vorliegen zu müssen. Hierbei wird durch die Wahl der diet libc, zu einem kleineren Teil aber auch durch die statische Linkung selbst, Speicherplatz gespart. Diese Lösung wird auch vom Autor präferiert, eine dynamische Linkung wird nur unter i386 und bei neueren Versionen unter ARM überhaupt unterstützt.