musl - obsolete versions
This page contains links to obsolete versions of musl from the
alpha/beta series which are mostly of historical interest. Current
versions and latest git links can be found on
the main download page.
- April 25, 2012
Character classification functions updated to Unicode 6.1 and greatly
improved. Over/underflow detection and bugs fixed in strtod/scanf
float support. Minimal stack protector support. Better debugging
support for shared libraries. Recent breakage in iconv and sysconf
fixed. Improved musl-gcc wrapper script.
- April 19, 2012
Bug-fix release for a serious breakage in strtol and related functions
that made it into the previous release and prevents them from handling
numbers with initial spaces. A couple other small issues have been
- April 18, 2012
Fix for critical buffer overflow vulnerability in fprintf with
unbuffered files. Major math library correctness and performance
improvements, including x86 assembly. New floating point
parser/converter with correct rounding, new scanf that corrects many
corner-case errors, and new wcstod/f/ld (previously missing). Various
compatibility improvements and small bug fixes.
- March 17, 2012
C++ support with g++/libstdc++ (requires minor fixes for glibc
dependencies in libstdc++). New C99 math library (float, long double,
complex, etc.) based on FreeBSD and OpenBSD code. Working floating
point environment on i386 and x86_64. Many bugfixes and compatibility
improvements for builting slightly-nonportable programs against musl.
- February 28, 2012
Bug fix release for a serious bug that slipped into the previous
release: All static linked programs that performed DNS lookups but did
not use pthreads were crashing due to a logic error in the weak
linking of pthread cancellation cleanup functions.
- February 27, 2012
Numerous additions of small legacy interfaces and previously-omitted
standard functions that were determined to be important for building
real-world programs. Global constructor/destructor support in main
program and shared libraries/dynamic loader. Thread cancellation
requests are now able to cancel blocked stdio operations. A bug in GCC
3 that prevented building shared libc has been worked around. GCC
wrapper now supports generating shared libraries. Various obscure bugs
have also been fixed.
- January 23, 2012
Better arm support, including dynamic linking. Many improvements and
fixes in pthread cond vars, barriers, and rwlocks. Assorted small
compatibility improvements and bug fixes all around.
- September 21, 2011
New experimental ARM port (armv4l+ w/EABI). Improved musl-gcc wrapper
now works with pre-4.4 gcc versions (including 3.x) and behaves more
transparently. The clone syscall is now exported. statfs/statvfs ABI
issues have been fixed, along with a number of small header file
- September 17, 2011
Support for the ptrace syscall (process tracing/debugging) has been
added, and an error in pointer const-correctness (fortunately treated
as just a warning by most compilers) has been fixed. Some other small
portability fixes/improvements have been made in preparation for new
- September 14, 2011
This release is purely bug fixes. It addresses a build failure on
64-bit systems, minor header file prototype errors and
inconsistencies, and a small omission related to posix_spawn.
- September 13, 2011
First post-alpha release. Major improvements to dynamic linker/loader,
iconv, stdio, integer formatting/parsing, threads/synchronization, and
hardening for poorly-written suid programs. New implementations of
previously-missing functionality including memory streams, time
parsing, and POSIX AIO. Many unlock/destroy-type race condition bugs
have been fixed in pthread locks; such races are nearly impossible to
trigger but persist in other implementations such as glibc/NPTL. A
number of other bugs have also been fixed, including bugs in stdio,
clock, iconv, siglongjmp, and various header files.
- July 3, 2011
New improvements to the dynamic linker (TEXTREL and RPATH support)
increase compatibility with applications, particularly those which
don't follow best practices for building and installing libraries.
A bug in dlopen which affected only certain compiler versions (misuse
of local variables with longjmp) has been fixed. Support has been
added for the stdio_ext.h family of interfaces, to reduce the effort
needed to compile buggy gnulib programs that try to poke at stdio FILE
internals, the random() function has been made thread-safe, mprotect
now works around a bug in the Linux syscall, and uninitialized long
double values are now handled safely in printf.
- June 28, 2011
Shared libraries and dynamic loading (dlopen/dlsym) are now supported
through an integrated dynamic linker with near-zero overhead. Other
new features include POSIX message queues, posix_spawn, the search.h
interfaces, the random() PRNG, and floating point environment
manipulation. Moderately severe bugs in several string and wide string
interfaces and glob(), as well as various minor bugs, have been fixed.
- May 17, 2011
Support for numeric IPv6 address parsing has been added. Compiling
musl with PCC should now succeed and result in a working library. The
heap sort implementation of qsort has been replaced by smooth sort,
yielding nearly-linear run time on arrays which are already
mostly-sorted. Various bugs including printf floating point rounding
and scanf EOF handling have been fixed, as well as minor prototype
issues in the public headers and an issue where variadic functions
were incorrectly inlined on i386 with recent gcc versions.
- April 23, 2011
This release features the second wave of major changes to pthread
cancellation, believed to resolve all possible issues with resource
leaks, premature cancellation, and late/missed cancellation
opportunities, all while simplifying and reducing the code size and
eliminating the cost in applications which do not use cancellation.
Several major x86_64-specific bugs related to select(), fcntl locking,
and alignment-related crashes, and many minor bugs affecting all
platforms, have also been fixed.
- April 13, 2011
Multiple bugs in IPv6 support, x86_64 socket and setjmp handling, byte
swapping functions, and floating point printf formatting have been
fixed, and a workaround has been included for a bug in Linux readv()
with tty devices which caused stdio to block after reading a blank
line from the terminal. Significant additions have been made to some
header files for better compatibility with legacy applications.
- April 6, 2011
More bugs have been fixed, including printf floating point formatting
and rounding, printf positional argument specifiers, a misaligned read
bug in strchr which could lead to crashes, general failure of
getmntent_r, broken statvfs on x86_64, and various minor issues. More
nonstandard and system-level interfaces have also been added,
increasing application compatibility.
- April 4, 2011
Major bugs have been fixed, including a rare but serious bug in malloc
for large allocations of particular sizes, failure of strchr when
searching for high bytes, parsing errors in strtold, and numerous
- April 2, 2011
Support for POSIX timers (signal- and thread-based delivery) has been
added. The stdio buffering implementation now uses readv/writev
scatter-gather IO to operate on caller-provided and internal FILE
buffers together in a single syscall, improving performance. Thread
cancellation has been greatly improved to guarantee no resource leaks
when a cancellation request is received at a resource-allocating
syscall (such as open()), giving musl a major robustness advantage
over other libraries, including glibc. The syscall() interface is now
available to applications, and various other small improvements have
been made and bugs fixed.
- March 18, 2011
The previously-missing wide character printf-family functions, and
manual stdio locking functions (flockfile) have been implemented.
Robust mutexes are also now supported. Various bugs have been fixed,
including unconditional, potentially-dangerous stack corruption by the
times() function and several minor bugs.
- March 11, 2011
This release fills in a number of previously-missing interfaces,
including POSIX shared memory, semaphores, and all remaining basic
pthread and POSIX clock functions. In addition, many corrections have
been made in the semantics of signals, threads, and various other
interfaces. Significant bugs in the printf %n specifier and
pthread_once function have been fixed. As of 0.7.0, musl is believed
to pass all tests in the Open POSIX Test Suite except those that rely
on not-yet-implemented features or that invoke undefined behavior.
- musl-0.6.0.tar.gz -
February 17, 2011
This is the first release of musl to support building native x86_64
applications, and it features a source/build framework for additional
ports. Some public header errors introduced in the previous release
have been fixed, as well as a major bug in the %n specifier for printf
and several minor bugs.
- musl-0.5.9.tar.gz -
February 14, 2011
This release fixes a major bug in the intended long-term ABI for
sigset_t/sigaction. Anyone using musl to build libraries should
upgrade immediately (and rebuild any libraries which might use
signals) to avoid running into ABI breakage issues at a later time.
The public header files have also undergone review and correction for
conformance to ISO C and POSIX requirements for what they are allowed
to make visible. Various other minor bugs have been fixed, and
internal improvements have been made to facilitate upcoming ports to
x86_64 and possibly ARM.
- musl-0.5.0.tar.gz -
February 11, 2011
Initial public release.