Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.8.9

Die Veröffentlichung der Standard-C-Bibliothek PicoLibc 1.8.9, die von Keith Packard (Projektleiter von X.Org) für den Einsatz in eingebetteten Geräten mit begrenztem nicht-flüchtigem Speicher und Arbeitsspeicher entwickelt wird, wurde bekannt gegeben. Bei der Entwicklung wurde ein Teil des Codes aus der newlib-Bibliothek des Cygwin-Projekts und AVR Libc, die für Atmel AVR-Mikrocontroller entwickelt wurde, übernommen. Der Code von PicoLibc wird unter der BSD-Lizenz verteilt. Es wird ein Build der Bibliothek für die Architekturen ARM (32-Bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch und OpenRisc unterstützt.

Ursprünglich wurde das Projekt 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 waren. Zum Beispiel wurden in PicoLibc die stdio-Funktionen durch eine kompakte Version aus der avrlibc-Bibliothek ersetzt. Der Code wurde auch von Komponenten bereinigt, die in der Build-Umgebung für eingebettete Geräte nicht verwendet werden und nicht unter der BSD-Lizenz bereitgestellt werden. Eine vereinfachte Version des Initialisierungscodes (crt0) wurde hinzugefügt, und die Implementierung der Aufrufe wurde von 'struct _reent' auf den TLS-Mechanismus (Thread-local Storage) umgestellt. Für den Build wird das Meson-Toolset verwendet.

In der neuen Version:

  • Die Unterstützung für die Architekturen LoongArch, OpenRISC und LatticMico32 wurde hinzugefügt.
  • Eine Implementierung der Header-Datei uchar.h wurde vorgeschlagen, die im C11-Standard erschienen ist.
  • Die Konfiguration nano-malloc-clear-freed wurde zur Bereinigung des Speichers hinzugefügt, der nach der Ausführung von free() oder realloc() freigegeben wurde.
  • Es wurde die Möglichkeit zur Verwendung von clang multilib auf ARM64-Systemen implementiert.
  • Der Wechsel zu neuen Werkzeugen picolibc-ci-tools für automatisiertes Building in Continuous Integration-Systemen wurde vollzogen.
  • Für die MIPS-Architektur wurde die Unterstützung für die Semihosting-Technologie implementiert, die es dem Code, der in einer Debugger- oder Emulatorumgebung ausgeführt wird, ermöglicht, die Ein- und Ausgabemechanismen des Hosts zu nutzen.
  • Für Xtensa-Prozessoren wurde die Unterstützung für picocrt und Semihost hinzugefügt.
  • Einstellungen zur Verwendung mit CoreBoot wurden hinzugefügt.
  • Die Funktion memset_explicit(), die im C23-Standard eingeführt wurde, wurde hinzugefügt.
  • Die Umrechnungstabellen der Zeichencodes wurden auf die Spezifikation Unicode 15.1.0 aktualisiert.
  • Die Funktionen asnprintf() und vasnprintf() wurden aus der newlib-Bibliothek übernommen.
  • Die Unterstützung für den Emulator FVP (Fixed Virtual Platforms), der von ARM entwickelt wird, wurde hinzugefügt.
  • Die Unterstützung für ältere Versionen des GCC-Compilers (vor 4.4) wurde hinzugefügt.
  • Die Implementierungen von iconv und locale wurden durch kompaktere Varianten ersetzt, die einen gemeinsamen Code zur Arbeit mit Zeichencodierungen verwenden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4