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, darunter XRender, XComposite und XRandR, den Veröffentlichung der neuen Standard-C-Bibliothek PicoLibc 1.1, die für den Einsatz auf eingebetteten Geräten mit begrenztem Speicherplatz und Arbeitsspeicher entwickelt wird. Bei der Entwicklung wurde ein Teil des Codes aus der Bibliothek newlib vom Cygwin-Projekt und AVR Libc, die für Atmel AVR-Mikrocontroller entwickelt wurde, übernommen. Der PicoLibc-Code wird unter der GPLv3-Lizenz bereitgestellt. 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 gefunden hatte, die auf Embedded-Geräten mit geringem RAM verwendet werden konnte. Das Projekt entwickelt sich seit dem letzten Jahr. In der ersten Phase handelte es sich um eine Version von newlib, bei der die stdio-Funktionen durch eine kompakte Variante aus avrlibc ersetzt wurden (stdio in newlib war aufgrund des hohen Ressourcenverbrauchs nicht zufriedenstellend). Da Kits aktuelle Aktivitäten mit der kontinuierlichen Arbeit an der RISC-V-Architektur und der Entwicklung von Werkzeugen für Embedded-Geräte verbunden sind, hat er kürzlich den Stand der libc-Implementierungen überprüft und kam zu dem Schluss, dass die Kombination von newlib und avrlibc mit geringfügigen Anpassungen eine gute universelle Lösung sein kann. Ursprünglich wurde das Projekt unter dem Namen „newlib-nano“ entwickelt, um Verwirrung mit der Bibliothek Newlib zu vermeiden, wurde es in PicoLibc umbenannt.

In der aktuellen Version von Picolibc wurde bereits die Arbeit geleistet, um allen nicht unter der BSD-Lizenz stehenden Code zu entfernen (dieser Code wurde nicht zum Erstellen für Embedded-Geräte verwendet), was die Lizenzsituation des Projekts erheblich vereinfacht hat. Die Implementierung lokaler Threads wurde von ‘struct _reent’ auf das TLS-Mechanismus umgestellt (Thread-local storage). Die kompakte Variante von stdio, die aus dem Code der avrlibc-Bibliothek entlehnt wurde, ist standardmäßig aktiviert (ATmel-spezifische Assembler-Einfügungen wurden in C umgeschrieben). Zum Erstellen wird das Meson-Toolchain verwendet, was eine Abhängigkeit von den Build-Skripten von newlib vermeidet und den Transfer 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 an die Funktion main() ausgeführt wird.

In der Version Picolibc 1.1:

  • Eine Hilfsbibliothek zur Unterstützung der Technologie „semihosting“, die es dem Code, der in einer Debugger- oder Emulatorumgebung ausgeführt wird, ermöglicht, die Ein-/Ausgabemechanismen des Host-Systems zu nutzen, wurde hinzugefügt;
  • Für Systeme, die die Systemaufrufe open, close, read und write unterstützen, wurden standardisierte POSIX-Eingabe-/Ausinterfaces in tinystdio hinzugefügt, einschließlich der Funktionen fopen und fdopen sowie der Bindung von stdin/stdout/stderr an bestimmte in POSIX definierte Dateideskriptoren.
  • Die neuesten Änderungen aus der Codebasis von newlib wurden übernommen. Dazu gehören Stubbs für libm für fenv.h, die auf Systemen ohne Unterstützung für Fließkomma-Berechnungen verwendet werden können.
  • Ein Beispiel für den Aufbau einer "Hello World"-Anwendung 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

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster