بعد عامين من التطوير، تم إطلاق مكتبة Musl 1.2.6 القياسية للغة C، والتي توفر تطبيقًا لمكتبة libc، مناسبًا للاستخدام على أجهزة الكمبيوتر المكتبية والخوادم، وعلى الأنظمة المحمولة، حيث يجمع بين الدعم الكامل للمعايير (كما في Glibc) مع صغر الحجم، وانخفاض استهلاك الموارد، والأداء العالي (كما في uClibc وdietlibc و...). Android يدعم برنامج Musl جميع واجهات C99 وPOSIX 2008 المطلوبة، بالإضافة إلى دعم جزئي لـ C11 ومجموعة من الإضافات للبرمجة متعددة الخيوط (خيوط POSIX)، وإدارة الذاكرة، ودعم اللغات. يُصدر كود Musl بموجب ترخيص MIT المجاني.
التغييرات الرئيسية:
- تم تطبيق دالة posix_getdents، التي تم تقديمها في معيار POSIX-2024. تقرأ هذه الدالة محتويات الدليل المرتبط بوصف ملف مفتوح، وتضع معلومات حول الأدلة الفرعية والملفات في هياكل posix_dent مع إمكانية تحديد الحد الأقصى للحجم.
- تمت إضافته خصيصًا لـ Linux تُتيح الدالة renameat2 إمكانية استبدال اسمي ملفين بشكل ذري (يُعاد تسمية الملف الأول إلى الثاني، والملف الثاني إلى الأول). وتختلف هذه الدالة الجديدة عن renameat بإضافة حقل علامة إضافي: فبدون هذه العلامة، تتصرف renameat2 تمامًا مثل renameat، وعند تحديد علامة RENAME_NOREPLACE، لا تستبدل عملية إعادة التسمية الملف الموجود.
- بالنسبة لأنظمة Loongarch64، تمت إضافة دعم لآلية TLSDESC (وصف التخزين المحلي للخيط) للوصول الفعال إلى المتغيرات في التخزين المحلي للخيط.
- باستخدام vDSO، تم تحسين دالة clock_gettime على معمارية riscv32 و riscv64 و powerpc و powerpc64 و s390x. يسمح vDSO (الكائن المشترك الديناميكي الافتراضي) بنقل معالج استدعاء النظام من نواة النظام إلى مساحة المستخدم، مما يجنب تبديل السياق.
- للكشف عن إمكانيات وحدة المعالجة المركزية في مترجمات وقت التشغيل، تمت ترجمة رمز __getauxval إلى واجهة التطبيق الثنائية العامة (ABI).
- تم إصلاح ثغرة أمنية (CVE-2025-26519) كانت تتسبب في تجاوز سعة المخزن المؤقت عند تحويل نص مُصمم خصيصًا من ترميز EUC-KR إلى UTF-8 باستخدام الدالة iconv(). وقد اكتُشفت هذه الثغرة منذ أكثر من عام، وتم إصلاحها قبل إصدار البرنامج.
- تم حل مشكلات التوافق في وظائف initgroups و getusershell و exit و atexit و strerror و isatty و hasmntopt و vdso، بالإضافة إلى ملفات الرأس sched.h و shadow.h.
- تحسين الامتثال للمواصفات في pwrite (تم حل مشكلة O_APPEND)، وmbnrtowcs (تم أخذ الامتثال لـ POSIX-2024 في الاعتبار)، وstrptim (تم أخذ الامتثال لـ POSIX-2024e في الاعتبار)، وinet_ntop (تم الامتثال لـ RFC 5952).
المصدر: opennet.ru
