X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=WHATSNEW;h=1ca0b4e45b87909459e96bc1d184d4d6ad606f5a;hp=3b6680a8207917310564442a0cd52f8a0f4a8f3c;hb=b1a8e0d45465731a757ef476cf6a5cbd31d166f9;hpb=cbb65af6ae2fd129102e2cc27e29d23df7580c97 diff --git a/WHATSNEW b/WHATSNEW index 3b6680a8..1ca0b4e4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -186,26 +186,249 @@ for nonstandard macros, etc. -0.7.9 - new cancellation, bug fixes, compatibility, optimization, cleanup +0.7.9 release notes -major changes to pthread cancellation handling which simplify and -reduce code size while ensuring no resource leaks or dangerous -behavior with signals. +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 -better code factorization for smaller static binary sizes, especially -in the presence of library code that is thread-aware but never -actually creates any threads. +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 -optimizations for size and performance in many syscall wrappers and -pthread functions. -fixed fcntl locking on x86_64. -fixed syslog implementation to work correctly with busybox syslogd and -presumably all other syslogd implementations using /dev/log. +0.7.12 release notes -fixed major problems, including wrong public struct definitions, in -sysvipc interfaces. +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 -improved timers with thread delivery to avoid some issues with reusing -the same thread for all expirations. +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