کتابخانه استاندارد C PicoLibc 1.1 موجود است

کیت پاکارد، توسعه‌دهنده فعال Debian، رهبر پروژه X.Org و خالق بسیاری از افزونه‌های X، از جمله XRender، XComposite و XRandR، معرفی شده انتشار یک کتابخانه استاندارد C جدید PicoLibc 1.1، برای استفاده در دستگاه های تعبیه شده با حافظه و رم دائمی محدود توسعه یافته است. در طول توسعه، بخشی از کد از کتابخانه قرض گرفته شد newlib از پروژه Cygwin و AVR Libc، برای میکروکنترلرهای Atmel AVR توسعه یافته است. کد PicoLibc توزیع شده توسط تحت مجوز BSD مونتاژ کتابخانه برای معماری های ARM (32 بیتی)، i386، RISC-V، x86_64 و PowerPC پشتیبانی می شود.

Keith Packard پس از اینکه نتوانست گزینه Libc مناسبی را پیدا کند که بتواند در دستگاه‌های تعبیه شده با رم کم استفاده شود، توسعه را شروع کرد. این پروژه از سال گذشته در حال توسعه است. در مرحله اول، این پروژه یک نوع newlib بود، عملکردهای stdio که در آن با نسخه فشرده avrlibc جایگزین شد (stdio در newlib برای مصرف بالای منابع آن مناسب نبود). از آنجایی که کار فعلی کیث شامل کار مداوم با معماری RISC-V و توسعه ابزار برای دستگاه‌های جاسازی شده است، او اخیراً وضعیت پیاده‌سازی libc را بررسی کرده و به این نتیجه رسیده است که با کمی تغییر، ترکیب newlib و avrlibc می‌تواند یک هدف کلی خوب باشد. راه حل. در ابتدا، این پروژه با نام "newlib-nano" توسعه یافت، اما برای جلوگیری از سردرگمی با کتابخانه Newlib به PicoLibc تغییر نام داد.

در شکل فعلی خود، Picolibc قبلاً برای حذف همه کدهایی که تحت مجوز BSD ارائه نشده اند، کار کرده است (این کد هنگام ساخت دستگاه های تعبیه شده استفاده نمی شود)، که وضعیت مجوز پروژه را به طور قابل توجهی ساده کرده است. اجرای جریان های محلی از "struct_reent" به مکانیسم TLS منتقل شده است (ذخیره سازی thread-local). نسخه فشرده stdio که از کد کتابخانه avrlibc قرض گرفته شده است، به طور پیش فرض فعال می شود (درج های اسمبلر خاص ATmel در C بازنویسی می شوند). از جعبه ابزار Meson برای اسمبلی استفاده شد که این امکان را فراهم کرد که به اسکریپت های اسمبلی newlib گره نخورد و انتقال تغییرات از newlib را ساده کرد. یک نسخه ساده شده از کد مقداردهی اولیه (crt0) اضافه شد، به فایل اجرایی پیوست و قبل از اینکه کنترل به تابع main() منتقل شود اجرا شد.

در Picolibc نسخه 1.1:

  • افزودن کتابخانه کمکی برای پشتیبانی از فناوری "نیمه هاستینگ"به کدهای در حال اجرا در محیط دیباگر یا شبیه ساز اجازه می دهد تا از مکانیسم های ورودی/خروجی سیستم میزبان استفاده کند.
  • برای سیستم‌هایی که از تماس‌های سیستمی باز، بسته، خواندن و نوشتن پشتیبانی می‌کنند، tinystdio رابط‌های استاندارد POSIX stdio I/O، از جمله توابع fopen و fdopen، و همچنین اتصال stdin/stdout/stderr را به توصیف‌گرهای فایل تعریف‌شده توسط POSIX اضافه می‌کند.
  • تغییرات اخیر از پایگاه کد newlib انجام شده است. از جمله خرده های libm اضافه شده برای fenv.h، که می تواند در سیستم های بدون پشتیبانی ممیز شناور استفاده شود.
  • نمونه ای از ساخت اپلیکیشن Hello world با picolibc برای سیستم های ARM و RISC-V اضافه شد.
  • دایرکتوری های newlib، libm و mathfp که حاوی کدهای آزمایشی استفاده نشده بودند، حذف شد.

منبع: opennet.ru

اضافه کردن نظر