Выпуск стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PicoLibc 1.8.9

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PicoLibc 1.8.9, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠšΠΈΡ‚ΠΎΠΌ ΠŸΠ°ΠΊΠΊΠ°Ρ€Π΄ΠΎΠΌ (Keith Packard, Π»ΠΈΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° X.Org) для примСнСния Π½Π° встраиваСмых устройствах с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ постоянного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° заимствована ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ newlib ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π‘ygwin ΠΈ AVR Libc, Ρ€Π°Π·Π²ΠΈΠ²Π°Π²ΡˆΠ΅ΠΉΡΡ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Atmel AVR. Код PicoLibc распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ сборка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k, PowerPC, LatticMico32, LoongArch ΠΈ OpenRisc.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ развивался ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«newlib-nanoΒ» ΠΈ Π±Ρ‹Π» Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рСсурсоёмких Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Newlib, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° встраиваСмых устройствах с нСбольшим ΠžΠ—Π£. НапримСр, Π² PicoLibc Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ stdio Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ avrlibc. Код Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ‡ΠΈΡ‰Π΅Π½ ΠΎΡ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² сборкС для встраиваСмых устройств ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², поставляСмых Π½Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (crt0), Π° рСализация Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с β€˜struct _reent’ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ TLS (thread-local storage). Для сборки задСйствован инструмСнтарий Meson.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ LoongArch, OpenRISC ΠΈ LatticMico32.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° рСализация Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° uchar.h, появившСгося Π² стандартС C11.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка nano-malloc-clear-freed для очистки памяти, высвобоТдСнной послС выполнСния free() ΠΈΠ»ΠΈ realloc().
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования clang multilib Π½Π° Π½Π° систСмах ARM64.
  • ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Ρ‘Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ инструмСнтарий picolibc-ci-tools для автоматичСской сборки Π² систСмах Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.
  • Для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ MIPS Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Β«semihostingΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ΄Ρƒ, выполняСмому Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ эмулятора, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° хост-систСмы.
  • Для процСссоров Xtensa Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° picocrt ΠΈ semihost.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ настройки для использования с CoreBoot.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° функция memset_explicit(), появившаяся Π² стандартС C23.
  • Π’Π°Π±Π»ΠΈΡ†Ρ‹ прСобразования рСгистра символов ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π΄ΠΎ спСцификации Unicode 15.1.0.
  • Из Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ newlib пСрСнСсСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ asnprintf() ΠΈ vasnprintf().
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° эмулятора FVP (Fixed Virtual Platforms), Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ARM.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° старых вСрсии компилятора GCC (старСС 4.4).
  • Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ iconv ΠΈ locale Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… задСйствован ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ