This page contains links to obsolete versions of musl which are mostly of historical interest. Current versions and latest git links can be found on the main download page.
WARNING: Versions 0.9.15 through 1.0.4 and 1.1.0 through 1.1.7 are affected by CVE-2015-1817 and should not be used without applying the patch.
This release adds support for out-of-tree builds, search domains in resolv.conf, VDSO-accelerated clock_gettime on MIPS, and building SMP-safe/ready SH binaries for the open-hardware J2. Performance of atomics and synchronization primitives has been greatly improved on most "ll/sc model" RISC archs. Regex BRE now supports the widely-used extensions \|, \+, and \? and larger regular expressions are now supported. A number of minor application and toolchain compatibility improvements have also been made, including changes which reduce the risk of assembler and linker bugs leading to malfunctioning binaries.
Two potentially dangerous bugs have been fixed: a single-byte heap overflow in getdelim and a pointer indexing error in dynamic TLS allocation. Other bugs fixed include various issues in parsing and error handling for resolv.conf and related files, incorrect error return values for some functions, and failures to accept null pointer arguments in some functions for which they have defined behavior. Some arch-specific bugs affecting ARM, MIPS, and SH/FDPIC have also been fixed.
This release features arch-independent support for FDPIC, an ABI variant that allows text segment sharing without MMU by relaxing the usual ELF requirement that data reside at a fixed displacement relative to code, and arch-specific support for FDPIC on SH2. CFI (call frame information) generation support has also been added for x86_64 asm, improving debugging backtraces, especially when a program is stopped during a syscall.
Several toolchain and application compatibility improvements have been made, most notably in regards to the new byte-based C locale, where nl_langinfo(CODESET) now returns "ASCII" rather than "UTF-8-CODE-UNITS"; the latter broke many applications which assumed the returned string would be a meaningful, well-known character encoding name.
Bugs fixed include deadlock at exit when stdin or stdout was closed, a missing memory barrier in pthread_join, and minor corner case bugs in various interfaces.
This release introduces a new C locale aligned with future POSIX requirements, allowing it to be used for applying regex and other character-based operations to data which is not necessarily valid UTF-8. The C locale is only used when explicitly requested via environment variables or the application; default behavior is still governed by the C.UTF-8 locale, which operates on whole multibyte characters.
Support for musl's first NOMMU target, SH-2, is also added in this release, along with groundwork for future NOMMU targets. A new musl-clang compiler wrapper is provided to reuse a non-musl-targeted host clang for building programs against musl, as was already possible with gcc. Major performance enhancements have been made to the dynamic linker. On ARM systems that support it, the vdso is now used to accelerate clock_gettime. And debugger backtraces on i386 are improved by a newly-added script to auto-generate call frame information for asm source files.
The uselocale regression that slipped into the 1.1.10 release, as well as many non-critical bugs, have been fixed. Most of these only affected rarely-used interfaces or unusual usage cases. One significant x86[_64] bug that could lead to soft-deadlock in libc-internal locking, and multiple MIPS-, PowerPC-, ARM-, and AArch64-specific bugs, were also fixed.
This release fixes regressions introduced as part of the dynamic linker bootstrap overhaul in musl 1.1.9, and adds several new features and improvements. Internal cleanup and optimizations have been made to the locale system. A fail-safe/allocation-free locale_t object for the C locale is now available via newlocale(), and the iconv_open function now supports "" and "CHAR" as aliases for the native (UTF-8) encoding. A new crt start file, rcrt1.o, is provided for producing static-linked position independent executables (PIE). Minor PIE-related arch-specific bugs, and a bug in the ungetc and ungetwc stdio functions which caused them to fail on files in EOF status, have also been fixed.
A new regression in uselocale made it into this release. To avoid breaking programs that call uselocale, all users of musl 1.1.10 should apply the following patch:
This release features significant overhauls in dynamic linking that now make it possible to build libc.so itself with stack protector hardening. Runtime dynamic linker error messages (dlerror) are now thread-local, and long path and symbol names in messages are no longer truncated. The sigsetjmp/siglongjmp functions have been redesigned to restore signal mask after restoring the context, rather than before, to prevent the possibility of unbounded stack growth when using siglongjmp to return from a signal handler while under heavy signal load. Global code size and performance improvements have been made for toolchains supporting protected visibility.
Various bugs have been fixed, including issues when detached threads exit with robust mutexes held, static TLS alignment errors, wrongful continuation of several path search operations after transient failures, two memory leaks, a crash on OOM, and significant malfunction of the duplocale function. Many arch-specific fixes were also made, including broken stack protector on powerpc and x32 and several issues on mips, sh, aarch64, and x32.