Avalikustatud on PicoLibc 1.8.6 standardse C-teegi väljaanne, mida arendab Keith Packard (X. O. projekti juht) ja mis on mõeldud rakendamiseks madala mälumahu ja piiratud püsivara seadmetes. Arendamise käigus on osa koodist laenatud newlib teegist, mis kuulub Cygwini projekti ning AVR Libci, mis on loodud Atmeli AVR mikrokontrollerite jaoks. PicoLibci kood on litsentsitud BSD all. Teegi koostamine toetab arhitektuure ARM (32-bit), Aarch64, i386, RISC-V, x86_64, m68k ja PowerPC.
Alguses arenes projekt nimega «newlib-nano» ja oli suunatud teatud ressursinõudlike Newlibi funktsioonide töötlemisele, mis olid vaike rikka väikese RAM-iga sisseehitatud seadmetes probleemsed. Näiteks on PicoLibcis stdio funktsioonid asendatud kompaktse versiooniga avrlibc raamatukogust. Kood on puhastatud kasutamata komponentidest, mis ei ole BSD litsentsiga. Lisatud on lihtsustatud initsialiseerimise kood (crt0), ning rakenduslikud kõned on muudetud ‘struct _reent’ mehhanismilt TLS-iks (thread-local storage). Kogumiseks on kasutatud Meson tööriistu.
Uues väljaandes:
- Põhjalikult on üle viidud muudatused Newlib 4.4.0, sealhulgas „long double“ tüübi toetus arhitektuurides i386, RISC-V, Aarch64 ja x86_64, RISC-V Zfinx/Zdinx laiendite toetus, kaalude kasutamise võimalus kataloogide sisestamisel, Xtensa protsessorite portimise teostamine, printf funktsioonide eraldamine eraldi failidesse, et vähendada kompaktsuse suurust.
- Picolibc.ld on lisatud sümbolid „__eh_*“ LLVM libunwind jaoks.
- Testitakse 32-bitiste SPARC süsteemide toe olemasolu.
- Toetatakse sihtplatvorme, millel on ebatüüpilised ujuvpunktilised tüübid, mis kajastuvad nüüd 32-, 64-, 80- ja 128-bitistes tüüpides picolibc koodis.
- Lisatud on RISC-arhitektuuri SuperH tugi.
- Parandatud stack'i jälgimist RISC-V süsteemide erindite koodi silumisel.
- Lisatud valik "-Dfast-bufio=true", et suurendada lugemise ja kirjutamise efektiivsust bufio kasutamisel.
- Avalik inline-funktsioonide puhastamine gnu_inline semantika jagamiseks.
- Enamik fenv funktsioone on tõlgitud inline-funktsioonide (gnu_inline) kasutamiseks, et suurendada jõudlust.
- Loodud alternatiivne ctype-teostus, mis ei kasuta ctype massiivi ja teeb otse väärtuste võrdlemist.
Allikas: opennet.ru
