เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ PicoLibc 1.1 เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰

Keith Packard, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ Debian เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบœเบนเป‰เบ™เปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ X.Org เปเบฅเบฐเบœเบนเป‰เบชเป‰เบฒเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ X เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบฅเบงเบกเบ—เบฑเบ‡ XRender, XComposite เปเบฅเบฐ XRandR, เปเบ™เบฐ เบ™เบณ เบเบฒเบ™เบ›เปˆเบญเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบซเบกเปˆ PicoLibc 1.1, เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฑเบ‡เบ—เบตเปˆเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ–เบฒเบงเบญเบ™เบˆเปเบฒเบเบฑเบ”เปเบฅเบฐ RAM. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบขเบทเบกเบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” newlib เบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™ Cygwin เปเบฅเบฐ AVR Libc, เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบš Atmel AVR microcontrollers. เบฅเบฐเบซเบฑเบ” PicoLibc เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” BSD. เบเบฒเบ™เบ›เบฐเบเบญเบšเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบš ARM (32-bit), i386, RISC-V, x86_64 เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ PowerPC.

Keith Packard เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบ Libc เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฑเบ‡เบ—เบตเปˆเบกเบต RAM เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™ variant เบ‚เบญเบ‡ newlib, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡ stdio เป„เบ”เป‰เบ–เบทเบเบ—เบปเบ”เปเบ—เบ™เบ”เป‰เบงเบเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบˆเบฒเบ avrlibc (stdio เปƒเบ™ newlib เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบนเบ‡). เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ Keith เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ 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), เบ•เบดเบ”เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบˆเบฐเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบปเป‰เบ™เบ•เป ().

เปƒเบ™ Picolibc เบฎเบธเปˆเบ™ 1.1:

  • โ€‹เป€เบžเบตเปˆเบกโ€‹เบซเปโ€‹เบชเบฐโ€‹เปเบธเบ”โ€‹เบŠเปˆเบงเบโ€‹เปœเบนเบ™โ€‹เป€เบ•เบฑเบโ€‹เป‚เบ™โ€‹เป‚เบฅโ€‹เบŠเบตโ€semihosting"เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ”เบตเบšเบฑเบ เบซเบผเบทเบ•เบปเบงเบˆเบณเบฅเบญเบ‡เปƒเบŠเป‰เบเบปเบ™เป„เบ I/O เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป‚เบฎเบช;
  • เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”, เบ›เบดเบ”, เบญเปˆเบฒเบ™, เปเบฅเบฐเบ‚เบฝเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป‚เบ—, tinystdio เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš POSIX stdio I/O เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ fopen เปเบฅเบฐ fdopen, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ” stdin / stdout / stderr เบเบฑเบšเบ•เบปเบงเบญเบฐเบ—เบดเบšเบฒเบเป„เบŸเบฅเปŒ POSIX เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”;
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบˆเบฒเบ newlib codebase เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบก stubs libm เบชเปเบฒเบฅเบฑเบš fenv.h, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบˆเบธเบ”เบฅเบญเบ;
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ "เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ" เบเบฑเบš picolibc เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš ARM เปเบฅเบฐ RISC-V;
  • เป€เบญเบปเบฒเบฅเบฒเบเบŠเบทเปˆ newlib, libm เปเบฅเบฐ mathfp เบญเบญเบ, เป€เบŠเบดเปˆเบ‡เบกเบตเบฅเบฐเบซเบฑเบ”เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™