Standert C bibleteek PicoLibc 1.1 beskikber

Keith Packard, aktive Debian-ûntwikkelder, lieder fan it X.Org-projekt en makker fan in protte X-útwreidings, ynklusyf XRender, XComposite en XRandR, yntrodusearre frijlitting fan in nije standert C-bibleteek PicoLibc 1.1, ûntwikkele foar gebrûk op ynbêde apparaten mei beheinde permaninte opslach en RAM. By de ûntwikkeling waard in part fan de koade liend út de bibleteek nijlib út it Cygwin projekt en AVR Libc, ûntwikkele foar Atmel AVR mikrocontrollers. PicoLibc koade ferspraat troch ûnder BSD lisinsje. Biblioteekgearkomste wurdt stipe foar ARM (32-bit), i386, RISC-V, x86_64 en PowerPC-arsjitektuer.

Keith Packard begon ûntwikkeling nei't er net yn steat wie om in fatsoenlike Libc-opsje te finen dy't koe wurde brûkt op ynbêde apparaten mei in bytsje RAM. It projekt is sûnt ferline jier yn ûntwikkeling. Yn 'e earste faze wie it projekt in fariant fan newlib, de funksjes fan stdio wêryn't waarden ferfongen troch in kompakte ferzje fan avrlibc (stdio yn newlib wie net geskikt foar har hege boarneferbrûk). Sûnt Keith's hjoeddeistige wurk omfettet oanhâldend wurk mei de RISC-V-arsjitektuer en ûntwikkeling fan ark foar ynbêde apparaten, hat hy koartlyn de steat fan libc-ymplemintaasjes besjoen en konkludearre dat mei in bytsje tweaking de kombinaasje fan newlib en avrlibc in goed algemien doel koe wêze oplossing. Yn earste ynstânsje ûntwikkele it projekt ûnder de namme "newlib-nano", mar om betizing te foarkommen mei de Newlib-bibleteek waard it omdoopt ta PicoLibc.

Yn syn hjoeddeistige foarm hat Picolibc al wurk dien om alle koade te ferwiderjen dy't net wurdt levere ûnder in BSD-lisinsje (dizze koade waard net brûkt by it bouwen foar ynbêde apparaten), wat de situaasje mei de lisinsje foar it projekt signifikant hat ferienfâldige. De ymplemintaasje fan lokale streamen is ferpleatst fan 'struct _reent' nei it TLS-meganisme (thread-lokale opslach). De kompakte ferzje fan stdio, liend út de avrlibc bibleteekkoade, wurdt standert aktivearre (ATmel-spesifike assembler-ynfoegingen wurde opnij skreaun yn C). De Meson toolkit waard brûkt foar assemblage, wat it mooglik makke om net bûn te wurden oan newlib-assembly-skripts en om de oerdracht fan feroaringen fan newlib te ferienfâldigjen. Tafoege in ferienfâldige ferzje fan de inisjalisaasje koade (crt0), hechte oan de útfierbere triem en útfierd foar kontrôle wurdt oerdroegen oan de wichtichste () funksje.

Yn Picolibc ferzje 1.1:

  • Helpbibleteek tafoege om de technology te stypjen "semihosting"steat koade dy't rint yn in debugger- of emulatoromjouwing om de I/O-meganismen fan it hostsysteem te brûken;
  • Foar systemen dy't de iepen, slute, lêze en skriuwe systeemoproppen stypje, foeget tinystdio standerdisearre POSIX stdio I / O-ynterfaces ta, ynklusyf de fopen- en fdopen-funksjes, en ek binen stdin / stdout / stderr oan POSIX-definieare triembeskriuwers;
  • Resinte feroarings fan 'e newlib codebase binne oerdroegen. Ynklusyf tafoege libm stubs foar fenv.h, dat kin brûkt wurde op systemen sûnder driuwende punt stipe;
  • In foarbyld tafoege fan it bouwen fan de "Hello world" applikaasje mei picolibc foar ARM- en RISC-V-systemen;
  • Fuortsmite de map newlib, libm en mathfp, dy't net brûkte eksperimintele koade befette.

Boarne: opennet.ru

Add a comment