Veröffentlichung der Standard C-Bibliothek PicoLibc 1.8.9

Die Standard-C-Bibliothek PicoLibc 1.8.9 wurde veröffentlicht und wird von Keith Packard (Leiter des X.Org-Projekts) für den Einsatz in eingebetteten Geräten mit begrenztem nichtflüchtigem Speicher und RAM weiterentwickelt. Bei der Entwicklung wurden Teile des Codes aus der newlib-Bibliothek des Cygwin-Projekts und aus AVR Libc, das für Atmel AVR-Mikrocontroller entwickelt wurde, übernommen. Der Code von PicoLibc ist unter der BSD-Lizenz lizenziert. Es wird eine Bibliotheksversion für die Architekturen ARM (32-Bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch und OpenRisc unterstützt.

Das Projekt wurde ursprünglich unter dem Namen "newlib-nano" entwickelt und hatte zum Ziel, einige ressourcenintensive Funktionen von Newlib zu überarbeiten, die auf eingebetteten Geräten mit wenig RAM problematisch zu verwenden waren. Zum Beispiel wurden in PicoLibc die stdio-Funktionen durch eine kompakte Variante aus der avrlibc-Bibliothek ersetzt. Der Code wurde außerdem von nicht verwendeten Komponenten bereinigt, die nicht unter der BSD-Lizenz geliefert werden. Es wurde eine vereinfachte Variante des Initialisierungscodes (crt0) hinzugefügt, und die Implementierung von Aufrufen wurde von ‚struct _reent‘ auf den Mechanismus TLS (Thread-local storage) umgestellt. Für den Build wird das Meson-Toolchain verwendet.

In der neuen Version:

  • Unterstützung für die Architekturen LoongArch, OpenRISC und LatticMico32 hinzugefügt.
  • Implementierung der Header-Datei uchar.h vorgeschlagen, die im C11-Standard eingeführt wurde.
  • Die nano-malloc-clear-freed-Einstellung wurde hinzugefügt, um den nach der Ausführung von free() oder realloc() freigegebenen Speicher zu bereinigen.
  • Die Möglichkeit zur Verwendung von clang multilib auf ARM64-Systemen wurde realisiert.
  • Übergang zu den neuen Werkzeugen picolibc-ci-tools für die automatische Erstellung in CI-Systemen vollzogen.
  • Für die MIPS-Architektur wurde Unterstützung für die Semihosting-Technologie hinzugefügt, die es Code ermöglicht, der in einer Debugger- oder Emulationsumgebung ausgeführt wird, die Ein- und Ausgabe-Mechanismen des Hosts zu nutzen.
  • Unterstützung für picocrt und semihost für Xtensa-Prozessoren hinzugefügt.
  • Einstellungen für die Verwendung mit CoreBoot hinzugefügt.
  • Funktion memset_explicit() hinzugefügt, die im C23-Standard eingeführt wurde.
  • Symbolregister-Konvertierungstabellen auf die Spezifikation Unicode 15.1.0 aktualisiert.
  • Funktionen asnprintf() und vasnprintf() aus der Bibliothek newlib übertragen.
  • Unterstützung für den Emulator FVP (Fixed Virtual Platforms), entwickelt von ARM, hinzugefügt.
  • Unterstützung für ältere Versionen des GCC-Compilers (älter als 4.4) hinzugefügt.
  • Die Implementierungen von iconv und locale wurden durch kompaktere Varianten ersetzt, die gemeinsamen Code zur Arbeit mit Kodierungen verwenden.

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