mirror of
git://git.musl-libc.org/musl
synced 2024-12-15 11:15:07 +00:00
493 lines
16 KiB
Plaintext
493 lines
16 KiB
Plaintext
0.5.0 - initial release
|
|
|
|
|
|
|
|
0.5.9 - signal ABI bugfix, various cleanup and fixes:
|
|
|
|
sigset_t was wrongly defined as 1024 bytes instead of 1024 bits,
|
|
breaking the intended ABI compatibility with the LSB/glibc sigaction
|
|
structure. users should upgrade immediately and rebuild any libraries
|
|
or object files that might be using the incorrect definitions.
|
|
|
|
improved security against DoS with tcb shadow passwords by checking
|
|
that the file opened was really an ordinary file.
|
|
|
|
fixed a bug in the implementation of atomic ops that could have
|
|
allowed the compiler to incorrectly reorder them (in practice, gcc
|
|
with the default settings on i386 was not reordering them).
|
|
|
|
greatly improved conformance to the C and POSIX standards regarding
|
|
what the standard header files make visible. _POSIX_C_SOURCE is now
|
|
needed to get POSIX functions in standard C headers, and _XOPEN_SOURCE
|
|
or _GNU_SOURCE are required to get XSI interfaces or GNU extensions,
|
|
respectively.
|
|
|
|
many internal improvements have been made to the syscall-related code
|
|
in preparation for porting to x86_64 and other archs.
|
|
|
|
|
|
|
|
0.6.0 - x86_64 port, various important bugs fixed
|
|
|
|
new x86_64 (amd64) architecture port, contributed by Nicholas J. Kain,
|
|
along with PORTING guide. source tree layout and build system have
|
|
been improved to accommodate further ports.
|
|
|
|
various bugs that were introduced while making the headers respect C
|
|
and POSIX namespace standards have been fixed. conformance to the
|
|
standards has been improved.
|
|
|
|
fixed an inefficiency in qsort that triggered a bug (occasionaly
|
|
internal compiler error) in some versions of gcc.
|
|
|
|
fixed a major bug in the printf %n specifier that prevented it from
|
|
working and caused memory corruption.
|
|
|
|
|
|
|
|
0.7.0 - major improvements to posix conformance and completeness
|
|
|
|
implemented posix shared memory and semaphore interfaces.
|
|
|
|
implemented all remaining required pthread and clock interfaces.
|
|
|
|
major fixes to signal semantics.
|
|
|
|
greatly improved temporary file name generation for safety against
|
|
denial of service due to intentional name collisions.
|
|
|
|
added syscall wrappers for the linux inotify interface.
|
|
|
|
malloc(0) now returns a non-null pointer.
|
|
|
|
fixed printf %n specifier (again), pthread_once (it was always
|
|
hanging), and non-default-type mutex behavior.
|
|
|
|
added ucontext/sigcontext support in headers to facilitate building
|
|
libgcc with dwarf2 unwind support, and possibly other low-level tools.
|
|
|
|
improved musl-gcc compiler wrapper.
|
|
|
|
implemented many small missing functions here and there, minor header
|
|
fixes, etc.
|
|
|
|
|
|
|
|
0.7.1 - improvements to completeness, bug fixes
|
|
|
|
implemented flockfile, wprintf, and robust mutex functions.
|
|
|
|
fixed stack corruption bug in times(), minor header bugs, and some
|
|
error return value bugs in thread interfaces.
|
|
|
|
|
|
|
|
0.7.5 - new features, major optimization, and robustness
|
|
|
|
implemented POSIX timers.
|
|
|
|
optimized and simplified many thread-related functions.
|
|
|
|
eliminated resource leak races in thread cancellation. (almost all
|
|
existing implementations, including glibc, have these leaks.)
|
|
|
|
overhauled stdio implementation to take advantage of readv/writev for
|
|
reduced syscall load, and improved stdio's handling of error status.
|
|
|
|
added syscall header and interface for applications to use and
|
|
greatly simplified internal system for making syscalls.
|
|
|
|
strangthened tmpnam/tempnam/tmpfile filename generation and made the
|
|
straight C functions not depend on POSIX symbols.
|
|
|
|
fixed pthread cancellation ABI on i386 to match the LSB/glibc ABI
|
|
|
|
better double-free handling in malloc
|
|
|
|
various minor bug fixes
|
|
|
|
|
|
|
|
0.7.6 - major bug fixes
|
|
|
|
fixed rare but serious under-allocation bug in malloc.
|
|
|
|
fixed signedness bug in strchr that prevented finding high bytes.
|
|
|
|
fixed serious parsing bugs in strtold.
|
|
|
|
fixed statvfs syscall (it was always failing with EINVAL).
|
|
|
|
fixed race condition in set*id() functions with threads (possible
|
|
deadlock). further audit still needed though.
|
|
|
|
fseek no longer sets the stream error flag on failed seeks (this was
|
|
wrong and broke some programs, notably GNU m4).
|
|
|
|
nl_langinfo is no longer a dummy function. (the functionality was
|
|
previously implemented but accidentally left unused).
|
|
|
|
various small fixes have been made to the implementations and
|
|
prototypes for nonstandard and obsolete functions
|
|
|
|
|
|
|
|
0.7.7 - more bug fixes and program-compatibility improvements
|
|
|
|
fixed floating point formatting and rounding bugs in printf.
|
|
|
|
fixed broken %N$ positional argument specifiers in printf.
|
|
|
|
fixed misaligned read/overread bug in strchr which could lead to
|
|
crashes scanning tiny strings at the end of a page when the next page
|
|
is not readable, or on archs (not yet supported) that forbid
|
|
misaligned reads.
|
|
|
|
fixed breakage of statvfs on x86_64
|
|
|
|
fixed crash in getmntent_r
|
|
|
|
fixed bug in POSIX timers created with NULL sigevent argument
|
|
|
|
improved semaphore performance, and sem_wait is now interruptable by
|
|
signals, as required by POSIX.
|
|
|
|
added many compatibility and system-level interfaces, increasing the
|
|
proportion of busybox that works with musl.
|
|
|
|
|
|
|
|
0.7.8 - more bug fixes and compatibility improvements
|
|
|
|
fixed problems with ipv6 dns and address printing code that made ipv6
|
|
support practically unusable, and some other getaddrinfo bugs.
|
|
|
|
fixed broken sendmsg/recvmsg functions on x86_64 (caused by incorrect
|
|
msghdr structure).
|
|
|
|
fixed broken sigsetjmp asm on x86_64.
|
|
|
|
worked around a problem with input buffering on terminals reblocking
|
|
after getting a blank line, due to a bug in the linux readv syscall.
|
|
|
|
various improvements to the "rsyscall" system used to implement
|
|
threaded setuid, setgid, etc.
|
|
|
|
exiting/cancelling the a timer handler thread no longer kills the
|
|
timer.
|
|
|
|
fixed incorrect trailing zeros on some %g conversions in printf.
|
|
|
|
fixed buggy byte-swapping functions and moved them to inlines in
|
|
byteswap.h.
|
|
|
|
many small improvements to header/application compatibility, support
|
|
for nonstandard macros, etc.
|
|
|
|
|
|
|
|
0.7.9 release notes
|
|
|
|
new pthread cancellation implementation:
|
|
- safe against resource-leak/side-effect-leak race conditions
|
|
- safe against interruption by signal handlers
|
|
- reduced bloat in all cancellable functions
|
|
- reduced bloat for blocking cancellation
|
|
|
|
new interfaces implemented:
|
|
- realpath (limited functionality)
|
|
- wordexp (limited functionality)
|
|
- flock (nonstandard)
|
|
- forkpty (nonstandard)
|
|
- posix_fadvise
|
|
- posix_fallocate
|
|
|
|
general bug fixes:
|
|
- syslog function failure to communicate with syslogd
|
|
- bug in siginfo_t definition if wait.h was included before signal.h
|
|
- incorrect struct definitions for most of sysv ipc
|
|
- pthread_exit/cancel on timer handler wrongly destroying the timer
|
|
- linux dup2 ebusy workaround
|
|
- obscure issues in non-threaded programs using some pthread functions
|
|
- getopt_long allowed mismatch in last char of option name
|
|
- incorrect parsing of obscure ip address forms
|
|
- initgroups not working reliably (uninitialized var)
|
|
- shadow pass treating empty expiry field as pass-expired-in-1970
|
|
- bogus longjmp if pthread_exit was called from cancellation handlers
|
|
|
|
x86_64-specific bug fixes:
|
|
- fcntl file locking
|
|
- thread stack alignment
|
|
- broken select timeouts due to incorrect timeval definition
|
|
|
|
|
|
|
|
0.7.10 release notes
|
|
|
|
new features:
|
|
- ipv6 numeric string parsing
|
|
- eventfd syscall wrappers
|
|
|
|
optimizations:
|
|
- new qsort implementation using the smoothsort algorithm
|
|
- much smaller/faster sigset_t handling functions
|
|
- lowered spin count before futex wait in synchronization functions
|
|
|
|
general bug fixes:
|
|
- incorrect floating point round-to-even behavior in printf
|
|
- major bugs in pthread barrier implementation
|
|
- off-by-one error in scanf %n results
|
|
- scanf failure to report EOF when scanning for literal text
|
|
- minor missing/incorrect prototype issues
|
|
- dependency on undefined call order in fclose
|
|
|
|
compiler issue workarounds:
|
|
- incorrect inlining of variadic functions on recent gcc versions
|
|
- pcc preprocessor bug with recursive macro expansion
|
|
|
|
|
|
|
|
0.7.11 release notes
|
|
|
|
new features:
|
|
- integrated dynamic linker
|
|
- dynamic loading (dlopen/dlsym) (for dynamic-linked programs only)
|
|
- XSI search.h API
|
|
- POSIX message queues
|
|
- POSIX spawn interfaces
|
|
- BSD pseudo-random number generator API (random/srandom/initstate/etc.)
|
|
- floating point environment (limited usefulness due to gcc bugs)
|
|
|
|
general bug fixes:
|
|
- possible crashes with wordexp due to uninitialized variable
|
|
- race condition in pthread_kill (also present and unfixed in glibc/nptl)
|
|
- pthread exit destructors called too late
|
|
- dangerous unbounded vla in glob
|
|
- brk/sbrk legacy functions mismatching legacy semantics
|
|
- wcsncpy dest buffer overflow
|
|
- strncat and wcsncat possible overflows due to double-termination
|
|
|
|
|
|
|
|
0.7.12 release notes
|
|
|
|
new features:
|
|
- support for textrels in shared objects
|
|
- rpath support in dynamic linker
|
|
- stdio_ext.h functions (for better gnu software compatibility)
|
|
|
|
bug fixes:
|
|
- some compilers miscompiling dlopen due to misuse of longjmp
|
|
- safe handling of invalid long-double bit patterns (affects printf)
|
|
- workaround for bugs in linux mprotect syscall
|
|
- thread-safety for random() functions
|
|
- various minor issues
|
|
|
|
|
|
|
|
0.8.0 release notes
|
|
|
|
new features:
|
|
- chinese and japanese legacy charset support in iconv
|
|
- zero-syscall clock_gettime support (dynamic-linked x86_64 only)
|
|
- futex-based locking for stdio (previously used spinlocks)
|
|
- LD_PRELOAD and RTLD_NEXT support in dynamic linker
|
|
- strptime (mostly working but incomplete)
|
|
- posix aio (mostly working but not entirely conformant)
|
|
- memory streams (fmemopen, open_memstream, ...)
|
|
- stub/dummy implementations for various useless legacy functions
|
|
- if_nameindex
|
|
|
|
security hardening:
|
|
- setuid, etc. should not longer be able to "partially fail" with threads
|
|
- ensure suid programs start with fd 0,1,2 open
|
|
- improved openpty/forkpty failure checks
|
|
|
|
threads/synchronization bug fixes:
|
|
- dangerous spurious wakeup in pthread_join lead to early return
|
|
- race condition enabling async cancellation (delayed/lost cancellation)
|
|
- destruction/unmapping race conditions in semaphores, mutexes, rwlocks
|
|
- recursive rwlock_rdlock deadlock when a writer is waiting
|
|
- race condition in sigqueue with fork
|
|
- timer expiration thread exit wasn't running dtors
|
|
- timer threads weren't blocking signals
|
|
- close was wrongly cancellable after succeeding on some devices
|
|
- robust mutex list was not reset on fork
|
|
|
|
general bug fixes:
|
|
- incorrect logic in fread (spurious blocking; crash on write-only files)
|
|
- many corner cases and overflow cases for strtol-family functions
|
|
- various printf integer formatting issues with flags/width/precision
|
|
- incorrect iconv return value on failure
|
|
- broken FD_* macros on 64-bit targets
|
|
- clock function returning wrong value (real time not cpu time)
|
|
- siglongjmp signal mask clobbering (off-by-one pointer error)
|
|
- dynamic linker weak symbol resolution issues
|
|
- fdopendir failure to set errno
|
|
- various minor header fixes
|
|
|
|
|
|
|
|
0.8.1 release notes
|
|
|
|
bug fixes:
|
|
- mismatching prototypes caused build failure on 64-bit
|
|
- other minor prototype errors in the headers have been fixed
|
|
- various other small omissions fixed
|
|
|
|
|
|
|
|
0.8.2 release notes
|
|
|
|
new features:
|
|
- ptrace syscall support
|
|
|
|
bug fixes:
|
|
- const error (only a warning with many compilers) in lio_listio
|
|
- minor portability fixes aimed at supporting new arch targets
|
|
|
|
|
|
|
|
0.8.3 release notes
|
|
|
|
new features:
|
|
- arm port (experimental)
|
|
- better musl-gcc wrapper script for building against musl
|
|
- added clone system call
|
|
|
|
bug fixes:
|
|
- numerous header file typos, copy/paste errors, omissions
|
|
- statfs and statvfs ABI are now LSB-conformant (and actually work)
|
|
|
|
|
|
|
|
0.8.4 release notes
|
|
|
|
new features:
|
|
- arm dynamic linker support
|
|
- process-shared pthread barriers now work
|
|
- efficient futex-requeue-based cond var broadcast
|
|
- more optional cancellation points are now cancellable
|
|
- printf accepts null pointers with %s, prints as "(null)"
|
|
- recursive mutexes are now fully reentrant
|
|
- __cxa_atexit support
|
|
- real vfork
|
|
- dynamic linker now gold-compatible
|
|
- prlimit syscall
|
|
- support for large limits with setrlimit/getrlimit (even on 32-bit)
|
|
- glob now supports GLOB_PERIOD option (GNU extension)
|
|
|
|
bug fixes:
|
|
- many serious issues in condition variables
|
|
- rwlock failure-to-wake deadlock issues
|
|
- various small header files bugs/omissions
|
|
- wrong failure return for pthread_create
|
|
- path handling issues on execvp
|
|
- lock count corruption with robust recursive mutexes on owner death
|
|
- integer overflows in atoi, etc. reading most-negative value
|
|
- spurious mremaps on every realloc of large memory chunks
|
|
- pthread cancellation failure in single-threaded programs
|
|
|
|
security:
|
|
- avoid fd_set overflow in dns lookups
|
|
|
|
|
|
|
|
0.8.5 release notes
|
|
|
|
new features:
|
|
- stdio operations are now cancellable (only when low-level io happens)
|
|
- global ctor/dtor support in main program start code and shared libs
|
|
- dynamic linker support for PIE executables (but missing startup code)
|
|
- vfork support on x86_64
|
|
- complete set of locale_t functions (all ignore the locale argument)
|
|
- provide define float_t and double_t in math.h
|
|
- lighter/faster cancellation cleanup handler register/unregister
|
|
|
|
bug fixes:
|
|
- gcc wrapper now supports -shared, -nostdlib, -nostartfiles
|
|
- removed one wrongly-classified character from iswspace set (zwsp)
|
|
- fixed crashes in dns lookup on some errors, e.g. resolv.conf missing
|
|
- "make install" no longer tries to build shared libc if disabled
|
|
- ptrace argument handling bugs fixed
|
|
- work around visibility-hidden bugs in gcc 3.x
|
|
- fix thread-pointer-loss issue when it's initialized in signal handlers
|
|
- various minor typo/misc fixes in headers
|
|
|
|
compatibility:
|
|
- glob behaves more like traditional implementations w.r.t. GLOB_MARK
|
|
- added legacy futimes, lutimes functions
|
|
- more compatibility macros in sys/param.h (nonstandard header)
|
|
- setfs[ug]id syscall wrappers (linux specific)
|
|
- fgetpwent function (nonstandard)
|
|
- utmp.h matches traditional version more closely
|
|
- caddr_t now matches glibc type (void * instead of long)
|
|
- dummy (always-fail) dlopen and dlsym functions for static linked programs
|
|
- [efg]cvt functions (previously posix, removed from standard)
|
|
- get_current_dir_name function (nonstandard)
|
|
|
|
|
|
|
|
0.8.6 release notes
|
|
|
|
bug fixes:
|
|
- fix crash in dns lookups for all static-linked, non-threaded programs
|
|
|
|
|
|
|
|
0.8.7 release notes
|
|
|
|
new features:
|
|
- c++ support with g++'s libstdc++
|
|
- c99 math library (float, long double, complex, etc.)
|
|
- numerous wchar_t functions
|
|
- a64l, l64a functions
|
|
- getdate function
|
|
|
|
compatibility:
|
|
- c89 compatibility in math.h
|
|
- syscall.h alias for sys/syscall.h
|
|
- memory.h alias for string.h
|
|
- getcwd supports null buffer argument (auto-allocation)
|
|
|
|
bug fixes:
|
|
- major fenv (floating point environment) fixes and optimizations
|
|
- strptime mishandling of day/month names
|
|
- strtoull wrongly rejecting the highest 16 possible values as overflow
|
|
- math.h constant expression fixes for INFINITY/NAN/etc.
|
|
- scanf mishandling of "0" with "%x"
|
|
|
|
|
|
|
|
0.8.8 release notes
|
|
|
|
new feature:
|
|
- major math correctness and performance improvements
|
|
- many math functions implemented in asm for i386
|
|
- some math functions (mostly long double) in asm for x86_64
|
|
- new floating point parser/converter with correct rounding
|
|
- implement wcstod, wcstof, and wcstold
|
|
- new scanf implementation - cleaner, faster, more correct
|
|
- minimal/incomplete strfmon implementation
|
|
|
|
compatibility:
|
|
- header fixes for c++
|
|
- regex code resync with TRE; support common regex extensions
|
|
- support for compiling apps with gcc's -funsigned-char
|
|
- sysconf now returns dynamic limits for open files, processes
|
|
- give dlerror proper error status stickiness
|
|
- make alloca work even with -fno-builtin
|
|
|
|
critical security fixes:
|
|
- stack-based buffer overflow in fprintf on unbuffered files
|
|
|
|
other bug fixes:
|
|
- rare gcc register allocation (miscompilation) bug in syscall wrappers
|
|
- printf was rejecting the valid (but redundant) %lf format specifier
|
|
- fixed big data bloat (missing const) in math functions
|
|
- many math fixes related to floating point exceptions and rounding
|
|
- corrected DECIMAL_DIG definitions
|
|
- tgammal was wrongly setting global signgam
|
|
- crash in wordfree with uninitialized we_offs
|
|
- fix wordexp not null-initializing the we_offs initial slots
|