Available ang Standard C library PicoLibc 1.1

Keith Packard, aktibong developer ng Debian, pinuno ng proyekto ng X.Org at tagalikha ng maraming extension ng X kabilang ang XRender, XComposite at XRandR, ipinakilala paglabas ng bagong karaniwang C library PicoLibc 1.1, na binuo para gamitin sa mga naka-embed na device na may limitadong permanenteng storage at RAM. Sa panahon ng pag-unlad, ang bahagi ng code ay hiniram mula sa aklatan newlib mula sa proyekto ng Cygwin at AVR Libc, na binuo para sa Atmel AVR microcontrollers. PicoLibc Code ipinamahagi ni sa ilalim ng lisensya ng BSD. Sinusuportahan ang pagpupulong ng library para sa mga arkitektura ng ARM (32-bit), i386, RISC-V, x86_64 at PowerPC.

Sinimulan ni Keith Packard ang pag-unlad pagkatapos na hindi makahanap ng isang disenteng opsyon sa Libc na maaaring magamit sa mga naka-embed na device na may maliit na RAM. Ang proyekto ay nabuo mula noong nakaraang taon. Sa unang yugto, ang proyekto ay isang variant ng newlib, ang mga pag-andar ng stdio kung saan pinalitan ng isang compact na bersyon mula sa avrlibc (ang stdio sa newlib ay hindi angkop para sa mataas na pagkonsumo ng mapagkukunan nito). Dahil ang kasalukuyang gawain ni Keith ay nagsasangkot ng patuloy na trabaho sa arkitektura ng RISC-V at pag-develop ng tooling para sa mga naka-embed na device, nirepaso niya kamakailan ang estado ng mga pagpapatupad ng libc at napagpasyahan na sa kaunting pag-aayos, ang kumbinasyon ng newlib at avrlibc ay maaaring maging isang mahusay na pangkalahatang layunin. solusyon. Sa una, ang proyekto ay binuo sa ilalim ng pangalang "newlib-nano", ngunit upang maiwasan ang pagkalito sa Newlib library, pinalitan ito ng pangalan na PicoLibc.

Sa kasalukuyang anyo nito, nagawa na ng Picolibc ang trabaho upang alisin ang lahat ng code na hindi ibinibigay sa ilalim ng lisensya ng BSD (hindi ginamit ang code na ito sa paggawa ng mga naka-embed na device), na makabuluhang pinasimple ang sitwasyon sa lisensya para sa proyekto. Ang pagpapatupad ng mga lokal na stream ay inilipat mula sa 'struct _reent' patungo sa TLS na mekanismo (thread-lokal na imbakan). Ang compact na bersyon ng stdio, na hiniram mula sa avrlibc library code, ay isinaaktibo bilang default (ang mga pagsingit ng assembler na partikular sa ATmel ay muling isinulat sa C). Ang Meson toolkit ay ginamit para sa pagpupulong, na naging posible na hindi matali sa mga script ng newlib assembly at upang gawing simple ang paglipat ng mga pagbabago mula sa newlib. Nagdagdag ng pinasimpleng bersyon ng initialization code (crt0), na naka-attach sa executable file at naisakatuparan bago mailipat ang control sa main() function.

Sa bersyon 1.1 ng Picolibc:

  • Nagdagdag ng auxiliary library upang suportahan ang teknolohiya "semihosting"Pinapayagan ang code na tumatakbo sa isang debugger o emulator na kapaligiran na gamitin ang mga mekanismo ng I/O ng host system;
  • Para sa mga system na sumusuporta sa open, close, read, at write system calls, ang tinystdio ay nagdaragdag ng standardized na POSIX stdio I/O interface, kabilang ang fopen at fdopen function, pati na rin ang pag-binding ng stdin/stdout/stderr sa mga deskriptor ng file na tinukoy ng POSIX;
  • Ang mga kamakailang pagbabago mula sa newlib codebase ay dinala. Kasama ang mga idinagdag na libm stub para sa fenv.h, na maaaring gamitin sa mga system na walang floating point support;
  • Nagdagdag ng halimbawa ng pagbuo ng "Hello world" na application na may picolibc para sa ARM at RISC-V system;
  • Inalis ang newlib, libm at mathfp na mga direktoryo, na naglalaman ng hindi nagamit na pang-eksperimentong code.

Pinagmulan: opennet.ru

Magdagdag ng komento