Die Standard-C-Bibliothek PicoLibc 1.1 ist verfügbar

Keith Packard, aktiver Entwickler von Debian, Projektleiter von X.Org und Schöpfer vieler X-Erweiterungen, einschließlich XRender, XComposite und XRandR, vor Die Veröffentlichung der neuen Standard-C-Bibliothek PicoLibc 1.1, die für die Verwendung in eingebetteten Geräten mit begrenztem Speicherplatz und RAM entwickelt wird. Bei der Entwicklung wurde ein Teil des Codes aus der Bibliothek newlib des Cygwin-Projekts und AVR Libc, die für Atmel AVR-Mikrocontroller entwickelt wurde. Der PicoLibc-Code wird verbreitet steht unter der BSD-Lizenz. Es wird eine Bibliotheksversion für die Architekturen ARM (32-Bit), i386, RISC-V, x86_64 und PowerPC unterstützt.

Kit Packard begann mit der Entwicklung, nachdem er keine geeignete Libc-Alternative finden konnte, die für eingebettete Geräte mit knappem RAM geeignet war. Das Projekt entwickelt sich seit letztem Jahr weiter. In der ersten Phase stellte das Projekt eine Variante von newlib dar, bei der die Funktionen von stdio durch eine kompakte Version aus avrlibc ersetzt wurden (die stdio-Funktionen in newlib waren aufgrund des hohen Ressourcenverbrauchs unzureichend). Da Kits aktuelle Tätigkeit mit ständiger Arbeit an der RISC-V-Architektur und der Entwicklung von Werkzeugen für eingebettete Geräte verbunden ist, hat er kürzlich den Stand der libc-Implementierungen überprüft und festgestellt, dass die Kombination aus newlib und avrlibc mit geringfügigen Anpassungen eine gute universelle Lösung darstellen kann. Ursprünglich entwickelte sich das Projekt unter dem Namen „newlib-nano“, wurde jedoch umbenannt in PicoLibc, um Verwirrung mit der Bibliothek Newlib zu vermeiden.

In der aktuellen Version von Picolibc wurde bereits die Arbeit zur Entfernung aller mit einer anderen Lizenz als BSD gelieferten Codes durchgeführt (dieser Code wurde beim Erstellen für eingebettete Geräte nicht verwendet), was die Situation mit der Lizenz für das Projekt erheblich vereinfacht hat. Die Implementierung lokaler Threads wurde von ‘struct _reent’ auf den TLS-Mechanismus umgestellt (thread-local storage). Der kompakte stdio-Variante, die aus dem Code der Bibliothek avrlibc entnommen wurde, ist standardmäßig aktiviert (spezifische Assembler-Einfügungen für ATmel wurden in C umgeschrieben). Zum Erstellen wird das Meson-Toolkit verwendet, was eine Unabhängigkeit von den Build-Skripten von newlib ermöglicht und die Übertragung von Änderungen aus newlib vereinfacht. Eine vereinfachte Variante des Initialisierungscodes (crt0) wurde hinzugefügt, die an die ausführbare Datei angehängt wird und vor der Übergabe der Steuerung an die Funktion main() ausgeführt wird.

In der Version Picolibc 1.1:

  • Eine Hilfsbibliothek zur Unterstützung der „semihosting“ Technologie wurde hinzugefügt, die es Code, der in einer Debugger- oder Emulatorumgebung ausgeführt wird, ermöglicht, die Ein-/Ausgabemechanismen des Host-Systems zu nutzen;
  • Für Systeme, die Systemaufrufe wie open, close, read und write unterstützen, wurden in tinystdio standardisierte POSIX-Ein-/Ausgabe-Interfaces für stdio hinzugefügt, einschließlich der Funktionen fopen und fdopen sowie der Bindung von stdin/stdout/stderr an bestimmte in POSIX definierte Dateideskriptoren;
  • Kürzlich vorgenommene Änderungen aus dem Code von newlib wurden übertragen. Darunter fallen die Stub-Implementierungen von libm für fenv.h, die auf Systemen ohne Unterstützung für Gleitkomma-Berechnungen verwendet werden können;
  • Ein Beispiel für den Aufbau der Anwendung «Hello World» mit picolibc für ARM- und RISC-V-Systeme wurde hinzugefügt;
  • Die Verzeichnisse newlib, libm und mathfp, die nicht verwendeten experimentellen Code enthielten, wurden entfernt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4