انتشار کتابخانه C استاندارد Musl 1.2.5

پس از 10 ماه توسعه، انتشار کتابخانه استاندارد C Musl 1.2.5 ارائه شده است که یک پیاده سازی libc را ارائه می دهد که برای استفاده در رایانه های شخصی رومیزی و سرورها و در سیستم های تلفن همراه مناسب است، و ترکیبی از پشتیبانی کامل از استانداردها (مانند Glibc) ) با اندازه کوچک، مصرف منابع کم و عملکرد بالا (مانند uClibc، dietlibc و Android Bionic). پشتیبانی از تمام رابط های C99 و POSIX 2008 مورد نیاز، و همچنین به طور جزئی C11 و مجموعه ای از برنامه های افزودنی برای برنامه نویسی چند رشته ای (رشته های POSIX)، مدیریت حافظه و کار با محلی ها وجود دارد. کد Musl تحت مجوز رایگان MIT ارائه شده است.

تغییرات اصلی:

  • تابع statx() اضافه شد که با fstatat64 با داشتن یک آرگومان پرچم اضافی متفاوت است. اگر هسته از فراخوانی سیستم statx پشتیبانی نمی کند، که اطلاعات فایل گسترده، از جمله زمان ایجاد فایل و پرچم های خاص سیستم فایل را برمی گرداند، به استفاده از فراخوانی سیستم fstatat برمی گردد.
  • توابع preadv2() و pwritev2() اضافه شده است که بر روی فراخوانی های سیستم هسته لینوکس با همین نام، wrapper ها را ارائه می دهند. تفاوت توابع جدید با preadv() و pwritev() با وجود یک آرگومان دیگر برای ارسال پرچم های اضافی به هسته، مانند RWF_SYNC (پخش کردن داده ها و ابرداده ها از حافظه پنهان به رسانه پس از اتمام عملیات) و RWF_DSYNC ( انتقال اجباری فقط داده ها به رسانه).
  • پشتیبانی از معماری های Loongarch64 و Riscv32 اضافه شده است.
  • پیاده سازی تابع ()clone به حالت قابل استفاده رسیده است.
  • تابع statvfs() تضمین می کند که یک نتیجه با نوع f_type برگردانده می شود.
  • برای سیستم های Riscv64، پشتیبانی از مکانیزم TLSDESC (Thread-Local Storage Descriptor) اضافه شده است.
  • حل‌کننده DNS پردازش پاسخ‌ها را با دنباله‌های طولانی CNAME پیاده‌سازی می‌کند. مشکلی را حل کرد که باعث شد برخی از پاسخ‌های بزرگ ارسال شده از طریق TCP نادیده گرفته شوند.
  • رابط های mntent اکنون از فضاهای فرار در مسیرهای فایل و گزینه ها پشتیبانی می کنند.
  • Snprintf و swprintf هنگام پردازش اعداد بزرگتر از INT_MAX، مدیریت صحیح موقعیت را ارائه می دهند. انطباق بهبود یافته با خانواده عملکردهای printf.

منبع: opennet.ru

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