Ստանդարտ C գրադարան PicoLibc 1.1 հասանելի է

Keith Packard, Debian-ի ակտիվ ծրագրավորող, X.Org նախագծի ղեկավար և շատ X ընդլայնումների ստեղծող, ներառյալ XRender, XComposite և XRandR, ներկայացրեց նոր ստանդարտ C գրադարանի թողարկում PicoLibc 1.1, մշակված սահմանափակ մշտական ​​պահեստով և RAM-ով ներկառուցված սարքերում օգտագործելու համար: Մշակման ընթացքում ծածկագրի մի մասը փոխառվել է գրադարանից newlib Cygwin նախագծից և AVR Libc, մշակված Atmel AVR միկրոկոնտրոլերների համար։ PicoLibc կոդը տարածվում է BSD լիցենզիայի ներքո: Գրադարանի հավաքումը աջակցվում է ARM (32-bit), i386, RISC-V, x86_64 և PowerPC ճարտարապետությունների համար:

Keith Packard-ը սկսեց զարգացումը այն բանից հետո, երբ չկարողացավ գտնել պատշաճ Libc տարբերակ, որը կարող էր օգտագործվել փոքր RAM ունեցող ներկառուցված սարքերում: Նախագիծը զարգանում է անցյալ տարվանից։ Առաջին փուլում նախագիծը newlib-ի տարբերակ էր, որում stdio-ի գործառույթները փոխարինվեցին avrlibc-ի կոմպակտ տարբերակով (նյուլիբի stdio-ն հարմար չէր իր ռեսուրսների մեծ սպառման համար): Քանի որ Քեյթի ընթացիկ աշխատանքը ներառում է շարունակական աշխատանք RISC-V ճարտարապետության և ներկառուցված սարքերի համար գործիքների մշակման հետ, նա վերջերս վերանայեց libc-ի ներդրման վիճակը և եզրակացրեց, որ մի փոքր շտկելու դեպքում newlib-ի և avrlibc-ի համադրությունը կարող է լինել լավ ընդհանուր նպատակ: լուծում. Սկզբում նախագիծը մշակվեց «newlib-nano» անունով, սակայն Newlib գրադարանի հետ շփոթությունից խուսափելու համար այն վերանվանվեց PicoLibc:

Իր ներկայիս տեսքով Picolibc-ն արդեն աշխատանք է կատարել՝ հեռացնելու բոլոր ծածկագրերը, որոնք չեն տրամադրվում BSD լիցենզիայի ներքո (այս ծածկագիրը չի օգտագործվել ներկառուցված սարքերի համար կառուցելիս), ինչը զգալիորեն պարզեցրել է իրավիճակը նախագծի լիցենզիայի հետ կապված: Տեղական հոսքերի իրականացումը «struct _reent»-ից տեղափոխվել է TLS մեխանիզմ (thread-local storage) 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 կոդերի բազայից տեղափոխվել են: Ներառյալ ավելացված վերջույթների համար fenv.h, որը կարող է օգտագործվել համակարգերի վրա՝ առանց լողացող կետի աջակցության;
  • Ավելացվեց ARM և RISC-V համակարգերի համար picolibc-ով «Բարև աշխարհ» հավելվածի կառուցման օրինակ;
  • Հեռացվել է newlib, libm և mathfp գրացուցակները, որոնք պարունակում էին չօգտագործված փորձնական կոդ:

Source: opennet.ru

Добавить комментарий