C liburutegi estandarra PicoLibc 1.1 eskuragarri

Keith Packard, Debian garatzaile aktiboa, X.Org proiektuaren liderra eta X luzapen askoren sortzailea, XRender, XComposite eta XRandR barne, aurkeztu C liburutegi estandar berri baten kaleratzea PicoLibc 1.1, biltegiratze iraunkor eta RAM mugatua duten gailu txertatuetan erabiltzeko garatua. Garapenean, kodearen zati bat liburutegitik mailegatu zen newlib Cygwin proiektutik eta AVR Libc, Atmel AVR mikrokontrolagailuetarako garatua. PicoLibc kodea arabera banatuta BSD lizentziapean. Liburutegien muntaia ARM (32 biteko), i386, RISC-V, x86_64 eta PowerPC arkitektuetarako onartzen da.

Keith Packard-ek RAM gutxi duten gailu txertatuetan erabil zitekeen Libc aukera duin bat aurkitu ezin izan ostean hasi zen garatzen. Proiektua iaztik garatzen ari da. Lehen fasean, proiektua newlib-en aldaera bat zen, stdio-ren funtzioak avrlibc-en bertsio trinko batekin ordezkatu ziren (stdio newlib-en ez zen egokia baliabideen kontsumo handirako). Keith-en egungo lanak RISC-V arkitekturarekin eta gailu txertatuetarako tresnen garapenarekin etengabeko lana dakarenez, berriki libc inplementazioen egoera berrikusi zuen eta ondorioztatu zuen doikuntza txiki batekin, newlib eta avrlibc konbinazioa helburu orokor ona izan daitekeela. irtenbidea. Hasieran, proiektua β€œnewlib-nano” izenarekin garatu zen, baina Newlib liburutegiarekin nahasketarik ez izateko PicoLibc izena jarri zioten.

Gaur egungo forman, Picolibc-ek dagoeneko BSD lizentzia baten arabera ematen ez den kode guztiak kentzeko lana egin du (kode hori ez zen erabili gailu txertatuak eraikitzeko orduan), eta horrek nabarmen erraztu du proiektuaren lizentziarekin egoera. Tokiko korronteen ezarpena 'struct _reent'etik TLS mekanismora eraman da (hari-lokal biltegiratzea). Stdio-ren bertsio trinkoa, avrlibc liburutegiko kodeatik mailegatua, lehenespenez aktibatuta dago (ATmel-en berariazko mihiztatzaileen txertaketak C-n berridazten dira). Meson tresna-kit bat muntatzeko erabili zen, eta horrek posible egin zuen newlib muntaketa-scriptekin ez lotzea eta newlib-tik aldaketak transferitzea erraztea. Hasierako kodearen (crt0) bertsio sinplifikatu bat gehitu da, fitxategi exekutagarriari erantsita eta kontrola main() funtziora transferitu aurretik exekutatuta.

Picolibc 1.1 bertsioan:

  • Teknologia laguntzeko liburutegi osagarria gehitu da "semihosting"arazte edo emuladore-ingurunean exekutatzen den kodeari ostalari sistemaren I/O mekanismoak erabiltzeko aukera ematen dio;
  • Ireki, itxi, irakurri eta idazteko sistema-deiak onartzen dituzten sistemetarako, tinystdio-k POSIX stdio I/O interfaze estandarizatuak gehitzen ditu, fopen eta fdopen funtzioak barne, baita stdin/stdout/stderr POSIX-ek definitutako fitxategi deskribatzaileetara lotu ere;
  • Newlib kode-basearen azken aldaketak eraman dira. Gehitutako libm zirriborroak barne fenv.h, koma mugikorreko euskarririk gabeko sistemetan erabil daitekeena;
  • ARM eta RISC-V sistemetarako picolibc-ekin "Hello world" aplikazioa eraikitzeko adibide bat gehitu da;
  • Erabili gabeko kode esperimentala zuten newlib, libm eta mathfp direktorioak kendu ziren.

Iturria: opennet.ru

Gehitu iruzkin berria