Perpustakaan standard C PicoLibc 1.1 tersedia

Keith Packard, pembangun Debian aktif, ketua projek X.Org dan pencipta banyak sambungan X, termasuk XRender, XComposite dan XRandR, diperkenalkan выпуск Π½ΠΎΠ²ΠΎΠΉ стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PicoLibc 1.1, dibangunkan untuk digunakan pada peranti terbenam dengan storan kekal dan RAM yang terhad. Semasa pembangunan, sebahagian daripada kod telah dipinjam daripada perpustakaan newlib daripada projek Cygwin dan AVR Libc, dibangunkan untuk pengawal mikro Atmel AVR. Kod PicoLibc diedarkan oleh di bawah lesen BSD. Pemasangan perpustakaan disokong untuk seni bina ARM (32-bit), i386, RISC-V, x86_64 dan PowerPC.

ΠšΠΈΡ‚ ΠŸΠ°ΠΊΠΊΠ°Ρ€Π΄ приступил ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ смог Π½Π°ΠΉΡ‚ΠΈ достойного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Libc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° встраиваСмых устройствах с нСбольшим ΠžΠ—Π£. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся с ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ прСдставлял собой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ newlib, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ stdio Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· avrlibc (stdio Π² newlib Π½Π΅ устраивал большим ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ рСсурсов). Π’Π°ΠΊ ΠΊΠ°ΠΊ тСкущая Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠšΠΈΡ‚Π° связана с постоянной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ RISC-V ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ инструмСнтария для встраиваСмых устройств, Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ½ пСрСсмотрСл состояниС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ libc ΠΈ ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ нСбольшой Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅ комбинация newlib ΠΈ avrlibc ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ развивался ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«newlib-nanoΒ», Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Newlib Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² PicoLibc.

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π² Picolibc ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ всСго ΠΊΠΎΠ΄Π°, поставляСмого Π½Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD (Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ использовался ΠΏΡ€ΠΈ сборкС для встраиваСмых устройств), Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростило ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. РСализация Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с β€˜struct _reent’ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ TLS (penyimpanan benang-tempatan). Активирован ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ stdio, заимствованный ΠΈΠ· ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ avrlibc (спСцифичныС для ATmel ассСмблСрныС вставки пСрСписаны Π½Π° Π‘ΠΈ). Для сборки задСйствован инструмСнтарий Meson, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ сборочным сцСнариям newlib ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ пСрСнос ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· newlib. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (crt0), прикрСпляСмого ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ ΠΈ выполняСмого Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main().

Π’ вСрсии Picolibc 1.1:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Β«semihostingΒ«, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ΄Ρƒ, выполняСмому Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ эмулятора, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° хост-систСмы;
  • Для систСм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ open, close, read ΠΈ write, Π² tinystdio Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ стандартизированныС POSIX-интСрфСйсы Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° stdio, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fopen ΠΈ fdopen, Π° Ρ‚Π°ΠΊΠΆΠ΅ привязку stdin/stdout/stderr ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Π² POSIX Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ дСскрипторам;
  • ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠ΅Π½Ρ‹ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ измСнСния ΠΈΠ· ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ newlib. Π’ Ρ‚ΠΎΠΌ числС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ libm для fenv.h, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° систСмах Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ вычислСний с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сборки прилоТСния Β«Hello worldΒ» с picolibc для систСм ARM ΠΈ RISC-V;
  • Π£Π΄Π°Π»Π΅Π½Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ newlib, libm ΠΈ mathfp, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТался Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Sumber: opennet.ru

Tambah komen