Utgivningen av standard C-biblioteket PicoLibc 1.8.6 har publicerats, utvecklat av Keith Packard (projektledare för X.Org) för anvÀndning pÄ inbyggda enheter med begrÀnsad storlek pÄ permanent lagring och RAM. Under utvecklingen lÄnades delar av koden frÄn newlib-biblioteket frÄn Cygwin-projektet och AVR Libc, som utvecklades för Atmel AVR-mikrokontroller. Koden för PicoLibc distribueras under BSD-licensen. Biblioteket stöder byggnation för ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k och PowerPC-arkitekturer.
Inledningsvis utvecklades projektet under namnet "newlib-nano" och syftade till att omarbeta vissa resurskrĂ€vande funktioner frĂ„n Newlib som var problematiska att anvĂ€nda pĂ„ inbyggda enheter med liten RAM. Till exempel har stdio-funktioner i PicoLibc ersatts med en kompakt version frĂ„n avrlibc-biblioteket. Koden har ocksĂ„ rensats frĂ„n oanvĂ€nda komponenter som inte sprids under BSD-licens för att anvĂ€ndas pĂ„ inbyggda enheter. En förenklad version av initialiseringskoden (crt0) har lagts till och implementeringen av anrop har överförts frĂ„n âstruct _reentâ till en TLS (trĂ„d-lokal lagring) mekanism. Verktyget Meson har anvĂ€nts för byggnation.
I den nya utgÄvan:
- Ăndringar frĂ„n Newlib 4.4.0 har integrerats, inklusive stöd för typen "long double" pĂ„ i386-, RISC-V-, Aarch64- och x86_64-arkitekturerna, stöd för RISC-V Zfinx/Zdinx-tillĂ€gg, möjlighet att anvĂ€nda masker vid inlĂ€gg av kataloger, implementering av porten för Xtensa-processorer samt separera printf-behandlare i egna filer för att minska storleken under lĂ€nkning.
- Symboler som "__eh_*" har lagts till i picolibc.ld för LLVM libunwind.
- Teststöd för 32-bitars SPARC-system har inkluderats.
- Stöd för mÄlplattformar med atypiska flyttalstyper har sÀkerstÀllts, vilket nu Äterspeglas i 32-, 64-, 80- och 128-bitars typer i picolibc-koden.
- Stöd för RISC-arkitekturen SuperH har lagts till.
- StackspÄrning under felkodning pÄ RISC-V-system har förbÀttrats.
- Alternativet "-Dfast-bufio=true" har lagts till för att öka effektiviteten vid lÀsning och skrivning med bufio.
- Offentliga inline-funktioner har rensats för att dela semantik av gnu_inline.
- De flesta fenv-funktioner har översatts för att öka prestandan genom att anvÀnda inline-funktioner (gnu_inline) i stÀllet för vanliga.
- En alternativ implementation av ctype har skapats som inte anvÀnder en ctype-array, utan istÀllet gör en direkt jÀmförelse av vÀrden.
KĂ€lla: opennet.ru
