Norma C-biblioteko PicoLibc 1.1 havebla

Keith Packard, aktiva Debian-programisto, gvidanto de la projekto X.Org kaj kreinto de multaj X-etendaĵoj, inkluzive de XRender, XComposite kaj XRandR, enkondukita liberigo de nova norma C-biblioteko PicoLibc 1.1, evoluigita por uzo sur enkonstruitaj aparatoj kun limigita permanenta stokado kaj RAM. Dum evoluo, parto de la kodo estis pruntita de la biblioteko newlib de la projekto Cygwin kaj AVR Libc, evoluigita por Atmel AVR mikroregiloj. PicoLibc-kodo distribuita de sub BSD-licenco. Biblioteko-asembleo estas subtenata por ARM (32-bita), i386, RISC-V, x86_64 kaj PowerPC-arkitekturoj.

Keith Packard komencis evoluon post esti nekapabla trovi decan Libc-opcion kiu povus esti uzita sur enkonstruitaj aparatoj kun malmulte da RAM. La projekto disvolviĝas ekde la pasinta jaro. En la unua etapo, la projekto estis varianto de newlib, la funkcioj de stdio en kiuj estis anstataŭigitaj per kompakta versio de avrlibc (stdio en newlib ne estis taŭga por ĝia alta resursa konsumo). Ĉar la nuna laboro de Keith implikas daŭran laboron kun la RISC-V-arkitekturo kaj evoluon de ilaro por enkonstruitaj aparatoj, li ĵus reviziis la staton de libc-efektivigoj kaj konkludis, ke kun iom da tajlado, la kombinaĵo de newlib kaj avrlibc povus esti bona ĝenerala celo. solvo. Komence, la projekto disvolviĝis sub la nomo "newlib-nano", sed por eviti konfuzon kun la Newlib biblioteko ĝi estis renomita PicoLibc.

En ĝia nuna formo, Picolibc jam faris laboron por forigi ĉiujn kodojn, kiuj ne estas provizitaj sub BSD-licenco (ĉi tiu kodo ne estis uzata dum konstruado por enkonstruitaj aparatoj), kio signife simpligis la situacion kun la permesilo por la projekto. La efektivigo de lokaj riveretoj estis movita de 'struct _reent' al la TLS-mekanismo (faden-loka stokado). La kompakta versio de stdio, pruntita de la bibliotekkodo avrlibc, estas aktivigita defaŭlte (ATmel-specifaj asemblemaĵoj estas reverkitaj en C). La ilaro Meson estis uzita por kunigo, kio ebligis ne esti ligita al newlib kunigskriptoj kaj simpligi la translokigon de ŝanĝoj de newlib. Aldonita simpligita versio de la inicialiga kodo (crt0), alfiksita al la rulebla dosiero kaj efektivigita antaŭ ol kontrolo estas transdonita al la ĉef() funkcio.

En Picolibc-versio 1.1:

  • Aldonita helpa biblioteko por subteni la teknologion "duongastigado"permesas al kodo funkcianta en erarserĉilo aŭ emulila medio uzi la I/O-mekanismojn de la gastiga sistemo;
  • Por sistemoj kiuj subtenas la malfermajn, fermitajn, legas kaj verkas sistemvokojn, tinystdio aldonas normigitajn POSIX-stdio-I/O-interfacojn, inkluzive de la fopen kaj fdopen-funkciojn, same kiel ligantan stdin/stdout/stderr al POSIX-difinitaj dosierpriskribiloj;
  • Lastatempaj ŝanĝoj de la newlib-kodbazo estis transportitaj. Inkluzive de aldonitaj libm-stupoj por fenv.h, kiu povas esti uzata sur sistemoj sen glitkoma subteno;
  • Aldonita ekzemplo de konstruado de la aplikaĵo "Saluton mondo" kun picolibc por ARM kaj RISC-V-sistemoj;
  • Forigis la newlib, libm kaj mathfp-dosierujojn, kiuj enhavis neuzatan eksperimentan kodon.

fonto: opennet.ru

Aldoni komenton