blob: ff93ce70ac92378ff77abe6f292306cdfc93319f [file] [log] [blame]
Rich Felkerdf6e3ec2011-02-14 21:58:53 -050010.5.0 - initial release
2
Rich Felker26761982011-03-11 09:46:12 -05003
4
Rich Felkerdf6e3ec2011-02-14 21:58:53 -050050.5.9 - signal ABI bugfix, various cleanup and fixes:
6
7sigset_t was wrongly defined as 1024 bytes instead of 1024 bits,
8breaking the intended ABI compatibility with the LSB/glibc sigaction
9structure. users should upgrade immediately and rebuild any libraries
10or object files that might be using the incorrect definitions.
11
12improved security against DoS with tcb shadow passwords by checking
13that the file opened was really an ordinary file.
14
15fixed a bug in the implementation of atomic ops that could have
16allowed the compiler to incorrectly reorder them (in practice, gcc
17with the default settings on i386 was not reordering them).
18
19greatly improved conformance to the C and POSIX standards regarding
20what the standard header files make visible. _POSIX_C_SOURCE is now
21needed to get POSIX functions in standard C headers, and _XOPEN_SOURCE
22or _GNU_SOURCE are required to get XSI interfaces or GNU extensions,
23respectively.
24
25many internal improvements have been made to the syscall-related code
26in preparation for porting to x86_64 and other archs.
27
Rich Felker26761982011-03-11 09:46:12 -050028
29
Rich Felker982a4782011-02-17 19:15:08 -0500300.6.0 - x86_64 port, various important bugs fixed
Rich Felker62275f72011-02-15 15:52:26 -050031
32new x86_64 (amd64) architecture port, contributed by Nicholas J. Kain,
33along with PORTING guide. source tree layout and build system have
34been improved to accommodate further ports.
35
36various bugs that were introduced while making the headers respect C
Rich Felkerd09d0682011-02-17 17:57:50 -050037and POSIX namespace standards have been fixed. conformance to the
38standards has been improved.
39
40fixed an inefficiency in qsort that triggered a bug (occasionaly
41internal compiler error) in some versions of gcc.
42
43fixed a major bug in the printf %n specifier that prevented it from
44working and caused memory corruption.
Rich Felker8d07a032011-03-11 00:48:40 -050045
Rich Felker26761982011-03-11 09:46:12 -050046
47
Rich Felker6f05b6b2011-03-11 13:38:09 -0500480.7.0 - major improvements to posix conformance and completeness
Rich Felker8d07a032011-03-11 00:48:40 -050049
50implemented posix shared memory and semaphore interfaces.
51
52implemented all remaining required pthread and clock interfaces.
53
54major fixes to signal semantics.
55
56greatly improved temporary file name generation for safety against
57denial of service due to intentional name collisions.
58
59added syscall wrappers for the linux inotify interface.
60
Rich Felker6f05b6b2011-03-11 13:38:09 -050061malloc(0) now returns a non-null pointer.
Rich Felker8d07a032011-03-11 00:48:40 -050062
Rich Felker9f50b772011-03-11 14:51:36 -050063fixed printf %n specifier (again), pthread_once (it was always
64hanging), and non-default-type mutex behavior.
Rich Felker8d07a032011-03-11 00:48:40 -050065
66added ucontext/sigcontext support in headers to facilitate building
67libgcc with dwarf2 unwind support, and possibly other low-level tools.
68
Rich Felker6f05b6b2011-03-11 13:38:09 -050069improved musl-gcc compiler wrapper.
70
Rich Felker8d07a032011-03-11 00:48:40 -050071implemented many small missing functions here and there, minor header
72fixes, etc.
Rich Felkerfc27b962011-03-18 09:59:20 -040073
74
75
760.7.1 - improvements to completeness, bug fixes
77
78implemented flockfile, wprintf, and robust mutex functions.
79
80fixed stack corruption bug in times(), minor header bugs, and some
81error return value bugs in thread interfaces.
Rich Felker78eb0872011-04-01 20:36:01 -040082
83
84
850.7.5 - new features, major optimization, and robustness
86
87implemented POSIX timers.
88
89optimized and simplified many thread-related functions.
90
Rich Felkerd1c24ac2011-04-01 23:15:29 -040091eliminated resource leak races in thread cancellation. (almost all
92existing implementations, including glibc, have these leaks.)
Rich Felker78eb0872011-04-01 20:36:01 -040093
94overhauled stdio implementation to take advantage of readv/writev for
95reduced syscall load, and improved stdio's handling of error status.
96
97added syscall header and interface for applications to use and
98greatly simplified internal system for making syscalls.
99
100strangthened tmpnam/tempnam/tmpfile filename generation and made the
101straight C functions not depend on POSIX symbols.
Rich Felkerc1f15002011-04-01 20:47:54 -0400102
103fixed pthread cancellation ABI on i386 to match the LSB/glibc ABI
104
105better double-free handling in malloc
106
107various minor bug fixes
Rich Felkerbd1f6eb2011-04-04 18:00:02 -0400108
109
110
1110.7.6 - major bug fixes
112
113fixed rare but serious under-allocation bug in malloc.
114
115fixed signedness bug in strchr that prevented finding high bytes.
116
117fixed serious parsing bugs in strtold.
118
119fixed statvfs syscall (it was always failing with EINVAL).
120
121fixed race condition in set*id() functions with threads (possible
122deadlock). further audit still needed though.
123
124fseek no longer sets the stream error flag on failed seeks (this was
125wrong and broke some programs, notably GNU m4).
126
127nl_langinfo is no longer a dummy function. (the functionality was
128previously implemented but accidentally left unused).
129
130various small fixes have been made to the implementations and
131prototypes for nonstandard and obsolete functions
Rich Felker25ce7622011-04-05 10:28:08 -0400132
133
134
Rich Felker00817f02011-04-06 14:46:37 -04001350.7.7 - more bug fixes and program-compatibility improvements
Rich Felker25ce7622011-04-05 10:28:08 -0400136
137fixed floating point formatting and rounding bugs in printf.
138
139fixed broken %N$ positional argument specifiers in printf.
140
141fixed misaligned read/overread bug in strchr which could lead to
142crashes scanning tiny strings at the end of a page when the next page
143is not readable, or on archs (not yet supported) that forbid
144misaligned reads.
145
Rich Felker00817f02011-04-06 14:46:37 -0400146fixed breakage of statvfs on x86_64
147
148fixed crash in getmntent_r
149
150fixed bug in POSIX timers created with NULL sigevent argument
151
152improved semaphore performance, and sem_wait is now interruptable by
153signals, as required by POSIX.
154
Rich Felker59a37f82011-04-05 18:58:47 -0400155added many compatibility and system-level interfaces, increasing the
156proportion of busybox that works with musl.
Rich Felker2d1d62e2011-04-09 01:32:38 -0400157
158
159
Rich Felker088ae592011-04-14 23:33:46 -04001600.7.8 - more bug fixes and compatibility improvements
Rich Felker2d1d62e2011-04-09 01:32:38 -0400161
162fixed problems with ipv6 dns and address printing code that made ipv6
163support practically unusable, and some other getaddrinfo bugs.
164
165fixed broken sendmsg/recvmsg functions on x86_64 (caused by incorrect
166msghdr structure).
167
168fixed broken sigsetjmp asm on x86_64.
169
170worked around a problem with input buffering on terminals reblocking
171after getting a blank line, due to a bug in the linux readv syscall.
172
173various improvements to the "rsyscall" system used to implement
174threaded setuid, setgid, etc.
Rich Felker09135602011-04-12 13:36:22 -0400175
176exiting/cancelling the a timer handler thread no longer kills the
177timer.
178
179fixed incorrect trailing zeros on some %g conversions in printf.
180
181fixed buggy byte-swapping functions and moved them to inlines in
182byteswap.h.
183
184many small improvements to header/application compatibility, support
185for nonstandard macros, etc.
Rich Felker088ae592011-04-14 23:33:46 -0400186
187
188
Rich Felkerdb9915e2011-04-22 20:14:04 -04001890.7.9 release notes
Rich Felkercbb65af2011-04-21 23:33:39 -0400190
Rich Felkerdb9915e2011-04-22 20:14:04 -0400191new pthread cancellation implementation:
192- safe against resource-leak/side-effect-leak race conditions
193- safe against interruption by signal handlers
194- reduced bloat in all cancellable functions
195- reduced bloat for blocking cancellation
Rich Felkercbb65af2011-04-21 23:33:39 -0400196
Rich Felkerdb9915e2011-04-22 20:14:04 -0400197new interfaces implemented:
198- realpath (limited functionality)
199- wordexp (limited functionality)
200- flock (nonstandard)
201- forkpty (nonstandard)
202- posix_fadvise
203- posix_fallocate
Rich Felkercbb65af2011-04-21 23:33:39 -0400204
Rich Felkerdb9915e2011-04-22 20:14:04 -0400205general bug fixes:
206- syslog function failure to communicate with syslogd
207- bug in siginfo_t definition if wait.h was included before signal.h
208- incorrect struct definitions for most of sysv ipc
209- pthread_exit/cancel on timer handler wrongly destroying the timer
210- linux dup2 ebusy workaround
211- obscure issues in non-threaded programs using some pthread functions
212- getopt_long allowed mismatch in last char of option name
213- incorrect parsing of obscure ip address forms
214- initgroups not working reliably (uninitialized var)
215- shadow pass treating empty expiry field as pass-expired-in-1970
216- bogus longjmp if pthread_exit was called from cancellation handlers
Rich Felker088ae592011-04-14 23:33:46 -0400217
Rich Felkerdb9915e2011-04-22 20:14:04 -0400218x86_64-specific bug fixes:
219- fcntl file locking
220- thread stack alignment
221- broken select timeouts due to incorrect timeval definition
Rich Felkerc5025bf2011-05-17 14:13:06 -0400222
223
224
2250.7.10 release notes
226
227new features:
228- ipv6 numeric string parsing
229- eventfd syscall wrappers
230
231optimizations:
232- new qsort implementation using the smoothsort algorithm
233- much smaller/faster sigset_t handling functions
234- lowered spin count before futex wait in synchronization functions
235
236general bug fixes:
237- incorrect floating point round-to-even behavior in printf
238- major bugs in pthread barrier implementation
239- off-by-one error in scanf %n results
240- scanf failure to report EOF when scanning for literal text
241- minor missing/incorrect prototype issues
242- dependency on undefined call order in fclose
243
244compiler issue workarounds:
245- incorrect inlining of variadic functions on recent gcc versions
246- pcc preprocessor bug with recursive macro expansion
Rich Felker2cee4572011-06-28 22:06:58 -0400247
248
249
2500.7.11 release notes
251
252new features:
253- integrated dynamic linker
254- dynamic loading (dlopen/dlsym) (for dynamic-linked programs only)
255- XSI search.h API
256- POSIX message queues
257- POSIX spawn interfaces
258- BSD pseudo-random number generator API (random/srandom/initstate/etc.)
259- floating point environment (limited usefulness due to gcc bugs)
260
261general bug fixes:
262- possible crashes with wordexp due to uninitialized variable
263- race condition in pthread_kill (also present and unfixed in glibc/nptl)
264- pthread exit destructors called too late
265- dangerous unbounded vla in glob
266- brk/sbrk legacy functions mismatching legacy semantics
267- wcsncpy dest buffer overflow
268- strncat and wcsncat possible overflows due to double-termination
Rich Felker58483f02011-07-03 16:41:20 -0400269
270
271
2720.7.12 release notes
273
274new features:
275- support for textrels in shared objects
276- rpath support in dynamic linker
277- stdio_ext.h functions (for better gnu software compatibility)
278
279bug fixes:
280- some compilers miscompiling dlopen due to misuse of longjmp
281- safe handling of invalid long-double bit patterns (affects printf)
282- workaround for bugs in linux mprotect syscall
283- thread-safety for random() functions
284- various minor issues
Rich Felker801b3112011-09-13 13:41:40 -0400285
286
287
Rich Felker5e9deea2011-09-13 16:12:57 -04002880.8.0 release notes
Rich Felker801b3112011-09-13 13:41:40 -0400289
290new features:
291- chinese and japanese legacy charset support in iconv
292- zero-syscall clock_gettime support (dynamic-linked x86_64 only)
293- futex-based locking for stdio (previously used spinlocks)
294- LD_PRELOAD and RTLD_NEXT support in dynamic linker
295- strptime (mostly working but incomplete)
296- posix aio (mostly working but not entirely conformant)
297- memory streams (fmemopen, open_memstream, ...)
298- stub/dummy implementations for various useless legacy functions
299- if_nameindex
300
301security hardening:
302- setuid, etc. should not longer be able to "partially fail" with threads
303- ensure suid programs start with fd 0,1,2 open
304- improved openpty/forkpty failure checks
305
306threads/synchronization bug fixes:
307- dangerous spurious wakeup in pthread_join lead to early return
308- race condition enabling async cancellation (delayed/lost cancellation)
309- destruction/unmapping race conditions in semaphores, mutexes, rwlocks
310- recursive rwlock_rdlock deadlock when a writer is waiting
311- race condition in sigqueue with fork
312- timer expiration thread exit wasn't running dtors
313- timer threads weren't blocking signals
314- close was wrongly cancellable after succeeding on some devices
315- robust mutex list was not reset on fork
316
317general bug fixes:
318- incorrect logic in fread (spurious blocking; crash on write-only files)
319- many corner cases and overflow cases for strtol-family functions
320- various printf integer formatting issues with flags/width/precision
321- incorrect iconv return value on failure
322- broken FD_* macros on 64-bit targets
323- clock function returning wrong value (real time not cpu time)
324- siglongjmp signal mask clobbering (off-by-one pointer error)
325- dynamic linker weak symbol resolution issues
326- fdopendir failure to set errno
327- various minor header fixes
Rich Felkerd1d141c2011-09-14 19:11:15 -0400328
329
330
3310.8.1 release notes
332
333bug fixes:
334- mismatching prototypes caused build failure on 64-bit
335- other minor prototype errors in the headers have been fixed
336- various other small omissions fixed
Rich Felker455fc982011-09-17 11:41:11 -0400337
338
339
3400.8.2 release notes
341
342new features:
343- ptrace syscall support
344
345bug fixes:
346- const error (only a warning with many compilers) in lio_listio
347- minor portability fixes aimed at supporting new arch targets
Rich Felker4a08c852011-09-21 20:24:12 -0400348
349
350
3510.8.3 release notes
352
353new features:
354- arm port (experimental)
355- better musl-gcc wrapper script for building against musl
356- added clone system call
357
358bug fixes:
359- numerous header file typos, copy/paste errors, omissions
360- statfs and statvfs ABI are now LSB-conformant (and actually work)
Rich Felker4904b642012-01-22 11:37:27 -0500361
362
363
Rich Felker35620512012-01-23 00:37:45 -05003640.8.4 release notes
Rich Felker4904b642012-01-22 11:37:27 -0500365
366new features:
367- arm dynamic linker support
368- process-shared pthread barriers now work
Rich Felker35620512012-01-23 00:37:45 -0500369- efficient futex-requeue-based cond var broadcast
Rich Felker4904b642012-01-22 11:37:27 -0500370- more optional cancellation points are now cancellable
371- printf accepts null pointers with %s, prints as "(null)"
372- recursive mutexes are now fully reentrant
373- __cxa_atexit support
374- real vfork
375- dynamic linker now gold-compatible
376- prlimit syscall
377- support for large limits with setrlimit/getrlimit (even on 32-bit)
Rich Felker35620512012-01-23 00:37:45 -0500378- glob now supports GLOB_PERIOD option (GNU extension)
Rich Felker4904b642012-01-22 11:37:27 -0500379
380bug fixes:
381- many serious issues in condition variables
382- rwlock failure-to-wake deadlock issues
383- various small header files bugs/omissions
384- wrong failure return for pthread_create
385- path handling issues on execvp
Rich Felker35620512012-01-23 00:37:45 -0500386- lock count corruption with robust recursive mutexes on owner death
Rich Felker4904b642012-01-22 11:37:27 -0500387- integer overflows in atoi, etc. reading most-negative value
388- spurious mremaps on every realloc of large memory chunks
Rich Felker35620512012-01-23 00:37:45 -0500389- pthread cancellation failure in single-threaded programs
Rich Felker4904b642012-01-22 11:37:27 -0500390
391security:
392- avoid fd_set overflow in dns lookups
Rich Felkeraab33ec2012-02-27 20:12:06 -0500393
394
395
3960.8.5 release notes
397
398new features:
399- stdio operations are now cancellable (only when low-level io happens)
400- global ctor/dtor support in main program start code and shared libs
401- dynamic linker support for PIE executables (but missing startup code)
402- vfork support on x86_64
403- complete set of locale_t functions (all ignore the locale argument)
404- provide define float_t and double_t in math.h
405- lighter/faster cancellation cleanup handler register/unregister
406
407bug fixes:
408- gcc wrapper now supports -shared, -nostdlib, -nostartfiles
409- removed one wrongly-classified character from iswspace set (zwsp)
410- fixed crashes in dns lookup on some errors, e.g. resolv.conf missing
411- "make install" no longer tries to build shared libc if disabled
412- ptrace argument handling bugs fixed
413- work around visibility-hidden bugs in gcc 3.x
414- fix thread-pointer-loss issue when it's initialized in signal handlers
415- various minor typo/misc fixes in headers
416
417compatibility:
418- glob behaves more like traditional implementations w.r.t. GLOB_MARK
419- added legacy futimes, lutimes functions
420- more compatibility macros in sys/param.h (nonstandard header)
421- setfs[ug]id syscall wrappers (linux specific)
422- fgetpwent function (nonstandard)
423- utmp.h matches traditional version more closely
424- caddr_t now matches glibc type (void * instead of long)
425- dummy (always-fail) dlopen and dlsym functions for static linked programs
426- [efg]cvt functions (previously posix, removed from standard)
427- get_current_dir_name function (nonstandard)
Rich Felkerb1a8e0d2012-02-28 11:56:13 -0500428
429
430
4310.8.6 release notes
432
433bug fixes:
434- fix crash in dns lookups for all static-linked, non-threaded programs
Rich Felkerda0acc32012-03-17 20:35:25 -0400435
436
437
4380.8.7 release notes
439
440new features:
441- c++ support with g++'s libstdc++
442- c99 math library (float, long double, complex, etc.)
443- numerous wchar_t functions
444- a64l, l64a functions
445- getdate function
446
447compatibility:
448- c89 compatibility in math.h
449- syscall.h alias for sys/syscall.h
450- memory.h alias for string.h
451- getcwd supports null buffer argument (auto-allocation)
452
453bug fixes:
454- major fenv (floating point environment) fixes and optimizations
455- strptime mishandling of day/month names
456- strtoull wrongly rejecting the highest 16 possible values as overflow
457- math.h constant expression fixes for INFINITY/NAN/etc.
458- scanf mishandling of "0" with "%x"
Rich Felkeref2c4fd2012-04-18 04:40:06 -0400459
460
461
4620.8.8 release notes
463
464new feature:
465- major math correctness and performance improvements
466- many math functions implemented in asm for i386
467- some math functions (mostly long double) in asm for x86_64
468- new floating point parser/converter with correct rounding
469- implement wcstod, wcstof, and wcstold
470- new scanf implementation - cleaner, faster, more correct
471- minimal/incomplete strfmon implementation
472
473compatibility:
474- header fixes for c++
475- regex code resync with TRE; support common regex extensions
476- support for compiling apps with gcc's -funsigned-char
477- sysconf now returns dynamic limits for open files, processes
478- give dlerror proper error status stickiness
479- make alloca work even with -fno-builtin
480
481critical security fixes:
482- stack-based buffer overflow in fprintf on unbuffered files
483
484other bug fixes:
485- rare gcc register allocation (miscompilation) bug in syscall wrappers
486- printf was rejecting the valid (but redundant) %lf format specifier
487- fixed big data bloat (missing const) in math functions
488- many math fixes related to floating point exceptions and rounding
489- corrected DECIMAL_DIG definitions
490- tgammal was wrongly setting global signgam
491- crash in wordfree with uninitialized we_offs
492- fix wordexp not null-initializing the we_offs initial slots
Rich Felkerc5d1adc2012-04-19 22:02:50 -0400493
494
495
4960.8.9 release notes
497
498bug fixes:
499- major breakage in strtol and family: failure to accept leading spaces
500- incorrect name for MATH_ERREXCEPT in math.h
501
502compatibility:
503- prototypes for a few additional nonstandard functions
Rich Felker0bd7ac02012-04-25 14:35:51 -0400504
505
506
5070.8.10 release notes
508
509new features:
510- correct over/underflow detection (ERANGE setting) for strtod
511- new musl-gcc wrapper, specfile based, faster and more robust
512- meaningful return strings for dlerror
513- new iswalpha, iswpunct, and wcwidth; sync'd to Unicode 6.1
514- towupper/towlower sync'd with Unicode 6.1
515- new futex-based libc-internal locks instead of spinlocks
516- experimental stack protector support (minimal; no random canary)
517- experimental gdb shared library tracking support
518
519compatibility:
520- getusershell family functions
521- getresuid and getresgid syscall wrappers
522- byte swapping macros in endian.h
523- getdtablesize was wrongly declared in unistd.h for _XOPEN_SOURCE
524
525bug fixes:
526- iconv_open wrongly rejecting most dest charsets (broken in 0.8.0)
527- sysconf failure when correct value is -1 (broken in 0.8.8)
528- scanf and strtod family functions overreading past NAN (4 bytes vs 3)
529- scanf and strtod wrongly treating "0.00000000001", etc. as 0
530- many bugs in towupper/towlower (never seriously tested before)
531- int8_t definition was wrong when gcc -funsigned-char was used