Laibulale ya Standard C PicoLibc 1.1 ikupezeka

Keith Packard, wopanga mapulogalamu a Debian, mtsogoleri wa polojekiti ya X.Org komanso wopanga zowonjezera zambiri za X, kuphatikiza XRender, XComposite ndi XRandR, anayambitsa kutulutsidwa kwa laibulale yatsopano ya C PicoLibc 1.1, yopangidwa kuti igwiritsidwe ntchito pazida zophatikizika zokhala ndi zosungirako zokhazikika komanso RAM. Pachitukuko, gawo lina la code linabwerekedwa ku laibulale newlib kuchokera ku projekiti ya Cygwin ndi Mtengo wa AVR, yopangidwira ma microcontrollers a Atmel AVR. PicoLibc kodi wogawidwa ndi pansi pa layisensi ya BSD. Msonkhano wa laibulale umathandizidwa ndi zomangamanga za ARM (32-bit), i386, RISC-V, x86_64 ndi PowerPC.

Keith Packard adayamba chitukuko atalephera kupeza njira yabwino ya Libc yomwe ingagwiritsidwe ntchito pazida zophatikizidwa ndi RAM yaying'ono. Ntchitoyi yakhala ikukula kuyambira chaka chatha. Pa gawo loyamba, polojekitiyi inali yosiyana ya newlib, ntchito za stdio zomwe zinasinthidwa ndi compact version kuchokera ku avrlibc (stdio mu newlib siinali yoyenera kugwiritsidwa ntchito kwake kwakukulu). Popeza ntchito yamakono ya Keith ikukhudza ntchito yopitilira ndi zomangamanga za RISC-V ndi chitukuko cha zida zophatikizidwira, posachedwapa adawunikiranso momwe libc akhazikitsidwa ndipo adatsimikiza kuti ndikusintha pang'ono, kuphatikiza kwa newlib ndi avrlibc kumatha kukhala cholinga chabwino. yankho. Poyambirira, polojekitiyi idapangidwa pansi pa dzina la "newlib-nano", koma kuti tipewe chisokonezo ndi laibulale ya Newlib idatchedwanso PicoLibc.

M'mawonekedwe ake apano, Picolibc yachita kale ntchito yochotsa ma code onse omwe sanaperekedwe pansi pa laisensi ya BSD (code iyi sinagwiritsidwe ntchito pomanga zida zophatikizika), zomwe zapangitsa kuti zinthu zikhale zosavuta ndi chilolezo cha polojekitiyi. Kukhazikitsa kwa mayendedwe akumaloko kwasunthidwa kuchoka ku 'struct _reent' kupita ku makina a TLS (ulusi-malo yosungirako). Mtundu wophatikizika wa stdio, wobwerekedwa kuchokera ku laibulale ya avrlibc code, umatsegulidwa mwachisawawa (zowonjezera za ATmel-specific assembler zimalembedwanso mu C). Zida za Meson zidagwiritsidwa ntchito pophatikiza, zomwe zidapangitsa kuti zisamangidwe ndi zolemba za newlib komanso kupangitsa kusintha kusintha kuchokera ku newlib. Onjezani mtundu wosavuta wa nambala yoyambira (crt0), yolumikizidwa pafayilo yomwe ingathe kuchitidwa ndikuchitidwa kuwongolera kusanasamutsidwe ku main() ntchito.

Mu mtundu wa Picolibc 1.1:

  • Anawonjezera laibulale yothandizira ukadaulo "semihosting"amalola kachidindo kamene kakuyenda mu debugger kapena emulator malo kuti agwiritse ntchito njira za I/O za omwe akuchititsa;
  • Kwa machitidwe omwe amathandizira kuyimba, kutseka, kuwerenga, ndi kulemba, tinystdio imawonjezera mawonekedwe a POSIX stdio I/O, kuphatikizapo fopen ndi fdopen ntchito, komanso kumanga stdin/stdout/stderr ku POSIX-tanthauzo la mafayilo;
  • Zosintha zaposachedwa kuchokera ku newlib codebase zapitilizidwa. Kuphatikiza ma libm stubs owonjezera fenv.h, yomwe ingagwiritsidwe ntchito pamakina opanda chithandizo choyandama;
  • Anawonjezera chitsanzo chomanga pulogalamu ya "Moni dziko" ndi picolibc ya machitidwe a ARM ndi RISC-V;
  • Yachotsa zolemba za newlib, libm ndi mathfp, zomwe zinali ndi ma code oyesera omwe sanagwiritsidwe ntchito.

Source: opennet.ru

Kuwonjezera ndemanga