Après deux ans de développement, la bibliothèque standard C Musl 1.2.6 a été publiée. Elle propose une implémentation de libc adaptée aux ordinateurs de bureau, aux serveurs et aux systèmes mobiles, combinant une prise en charge complète des standards (comme Glibc) avec une taille réduite, une faible consommation de ressources et des performances élevées (comme uClibc, dietlibc et Android Bionic). Il prend en charge toutes les interfaces C99 et POSIX 2008 requises, ainsi qu'une prise en charge partielle de C11 et un ensemble d'extensions pour la programmation multithread (threads POSIX), la gestion de la mémoire et la prise en charge des paramètres régionaux. Le code de Musl est distribué sous la licence libre MIT.
Les principaux changements:
- La fonction posix_getdents, introduite dans la norme POSIX-2024, a été implémentée. Cette fonction lit le contenu du répertoire associé à un descripteur de fichier ouvert et place les informations relatives aux sous-répertoires et aux fichiers dans des structures posix_dent, avec la possibilité de limiter leur taille maximale.
- Ajouté spécifiquement à Linux La fonction `renameat2` permet de renommer atomiquement deux fichiers (le premier fichier est renommé avec le nom du second, et le second avec celui du premier). Cette nouvelle fonction diffère de `renameat` par l'ajout d'un paramètre : sans ce paramètre, `renameat2` se comporte exactement comme `renameat`, et lorsque le paramètre `RENAME_NOREPLACE` est spécifié, l'opération de renommage ne remplace pas le fichier existant.
- Pour les systèmes Loongarch64, la prise en charge du mécanisme TLSDESC (Thread-Local Storage Descriptor) a été ajoutée pour un accès efficace aux variables dans le stockage local au thread.
- Grâce à vDSO, la fonction clock_gettime a été optimisée sur les architectures RISC-V32, RISC-V64, PowerPC, PowerPC64 et S390X. vDSO (objet partagé dynamique virtuel) permet de déplacer le gestionnaire d'appels système du noyau vers l'espace utilisateur, évitant ainsi les changements de contexte.
- Pour détecter les capacités du processeur dans les compilateurs d'exécution, le symbole __getauxval a été traduit dans l'ABI publique.
- Une vulnérabilité (CVE-2025-26519) a été corrigée. Elle provoquait un dépassement de tampon lors de la conversion de texte spécialement conçu, encodé en EUC-KR vers UTF-8, à l'aide de la fonction `iconv()`. Découverte il y a plus d'un an, cette vulnérabilité avait été corrigée avant la publication de la mise à jour.
- Résolution des problèmes de compatibilité dans les fonctions initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt et vdso, ainsi que dans les fichiers d'en-tête sched.h et shadow.h.
- Amélioration de la conformité aux spécifications dans pwrite (problème O_APPEND résolu), mbnrtowcs (conformité POSIX-2024 prise en compte), strptim (conformité POSIX-2024e prise en compte) et inet_ntop (conformité RFC 5952 effectuée).
Source: opennet.ru
