Քեյթ Փաքարդ, ակտիվ մշակող Debian, X.Org նախագծի ղեկավարը և բազմաթիվ X ընդլայնումների ստեղծողը, այդ թվում՝ XRender-ի, XComposite-ի և XRandR-ի, նոր ստանդարտ C գրադարանի թողարկում , մշակվել է սահմանափակ հիշողություն և օպերատիվ հիշողություն ունեցող ներդրված սարքերի վրա օգտագործելու համար: Մշակման ընթացքում կոդի մի մասը փոխառվել է գրադարանից: Cygwin նախագծից և , մշակված Atmel AVR միկրոկոնտրոլերների համար։ PicoLibc կոդը BSD լիցենզիայի ներքո: Աջակցվում է ARM (32-բիթ), i386, RISC-V, x86_64 և PowerPC ճարտարապետությունների համար նախատեսված գրադարանային հավաքածու:
Քեյթ Փաքարդը սկսեց այն մշակել, երբ չկարողացավ գտնել Libc-ի պատշաճ տարբերակ, որը կարող էր օգտագործվել փոքր օպերատիվ հիշողությամբ ներդրված սարքերի վրա: Նախագիծը մշակման փուլում էր անցյալ տարվանից: Առաջին փուլում նախագիծը newlib-ի տարբերակ էր, որի stdio գործառույթները փոխարինվեցին avrlibc-ի կոմպակտ տարբերակով (newlib-ում stdio-ն բավարար չէր իր բարձր ռեսուրսների սպառման պատճառով): Քանի որ Քեյթի ներկայիս գործունեությունը կապված է RISC-V ճարտարապետության հետ մշտական աշխատանքի և ներդրված սարքերի համար գործիքների մշակման հետ, նա վերջերս վերանայեց libc իրականացումների վիճակը և եկավ այն եզրակացության, որ փոքր-ինչ կատարելագործմամբ newlib-ի և avrlibc-ի համադրությունը կարող է դառնալ լավ ունիվերսալ լուծում: Սկզբում նախագիծը մշակվել է «newlib-nano» անվամբ, բայց Newlib գրադարանի հետ շփոթությունից խուսափելու համար այն վերանվանվեց PicoLibc:
Իր ներկայիս տեսքով Picolibc-ում արդեն աշխատանքներ են տարվել BSD լիցենզիայի ներքո չմատակարարված ամբողջ կոդը հեռացնելու համար (այս կոդը չի օգտագործվել ներդրված սարքերի համար կառուցելիս), ինչը զգալիորեն պարզեցրել է նախագծի լիցենզիայի հետ կապված իրավիճակը։ Տեղական թելերի իրականացումը «struct _reent»-ից տեղափոխվել է TLS մեխանիզմի ()։ Stdio-ի կոմպակտ տարբերակը, որը փոխառված է avrlibc գրադարանի կոդից, ակտիվանում է լռելյայնորեն (ATmel-ին հատուկ ասեմբլերային ներդիրները վերաշարադրվում են C լեզվով)։ Ասեմբլերի համար օգտագործվում է Meson գործիքակազմը, որը թույլ է տալիս չկապվել newlib ասեմբլերի սկրիպտների հետ և պարզեցնել newlib-ից փոփոխությունների փոխանցումը։ Ավելացվում է նախնականացման կոդի պարզեցված տարբերակը (crt0), որը կցվում է կատարվող ֆայլին և կատարվում է նախքան կառավարումը main() ֆունկցիային փոխանցելը։
Picolibc 1.1 տարբերակում.
- Ավելացվեց օժանդակ գրադարան՝ տեխնոլոգիային աջակցելու համար »«Թույլ տալով կոդի գործարկվող վրիպազերծիչ կամ էմուլյատոր միջավայրում օգտագործել հյուրընկալող համակարգի I/O մեխանիզմները.
- Համակարգերի համար, որոնք աջակցում են բաց, փակել, կարդալ և գրել համակարգային զանգեր, tinystdio-ն ավելացնում է ստանդարտացված POSIX stdio I/O ինտերֆեյսներ, ներառյալ fopen և fdopen ֆունկցիաները, ինչպես նաև stdin/stdout/stderr-ի միացումներ POSIX-ով սահմանված ֆայլերի նկարագրիչներին.
- Վերջերս newlib կոդային բազայից պորտացված են։ Ներառյալ libm stub-ները։ , որը կարող է օգտագործվել համակարգերի վրա՝ առանց լողացող կետի աջակցության;
- Ավելացվել է ARM և RISC-V համակարգերի համար picolibc-ով «Բարև աշխարհ» հավելվածի կառուցման օրինակ։
- Հեռացվել են newlib, libm և mathfp դիրեկտորիաները, որոնք պարունակում էին չօգտագործված փորձնական կոդ:
Source: opennet.ru
