X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=WHATSNEW;h=3b4321c1caec7b945f07b19867e263b7c75be68f;hb=51fc77c7c03fa0b300e9a609b18f11f0e4db065a;hp=6aca38803980250e1bc3b5a0b8c792acf725dbb4;hpb=a57ac9bf64ba202bd94d1b81bddd93b850c7b9d6;p=musl diff --git a/WHATSNEW b/WHATSNEW index 6aca3880..3b4321c1 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -863,3 +863,608 @@ header compatibility improvements: - additional flags for poll, epoll, inotify, timerfd, timex, dlfcn - register names in signal.h/ucontext.h for x86 - ipc.h ipc_perm nonstandard struct field name compatibility improve + + + +0.9.10 release notes + +new features: +- getifaddrs +- pthread_getattr_np (widely used by garbage collectors) +- mkostemps, mkostemp, mkstemps functions (mkostemp is future-POSIX) +- strcasestr and strverscmp (previously stubs) + +improvements: +- major performance improvements in mbtowc +- avoid filling caller-provided thread stacks with large TLS +- debloat unnecessary static buffers +- robust posix_spawn based on CLONE_VM instead of vfork +- new system() and popen() based on posix_spawn +- better strerror strings +- further emulation of atomic close-on-exec/nonblock options for old kernels +- provide macro constants for new-ish kernel features + +compatibility: +- several nonstandard but widely-available pwd/grp/shadow functions +- program_invocation_[short_]name +- re-added useconds_t type used by some programs +- some legacy arpa headers +- dn_skipname function (legacy resolver API) +- additional ABI aliases for supporting glibc-linked libraries/binaries + +general bugs fixed: +- stale locks and bogus munmap call when pthread_create fails +- uninitialized argument to munmap when dynlink load_library fails +- incorrect error returns in gethostby*_r +- memory leak in gethostbyname family +- blank ai_canonname in getaddrinfo for non-CNAME records +- undefined HZ macro in scsi/sg.h +- wrong return value for wmemmove on forward-copy +- namespace conformance in strings.h +- various utmp.h bugs +- unnecessary DT_SONAME in libc.so caused problems on some systems +- multiple bugs in syslog, some possibly dangerous +- non-functional setpriority function +- slight mishandling of 0xf5 byte in UTF-8 decoder +- misaligned memory accesses in mbsrtowcs + +arch-specific bugs fixed: +- crash in shared library loading on arm +- missing __aeabi_atexit needed by arm eabi +- wrong float_t definition on x86_64 +- various low-impact type size/alignment mismatches in some headers +- epoll struct alignment wrong on non-x86[_64] archs +- broken pipe2 fallback code on mips with old kernels + + + +0.9.11 release notes + +new features: +- %m allocation modifier for scanf +- week number and ISO week-based-year functionality in strftime +- per-process and per-thread cputime clocks +- ethernet address conversion interfaces +- legacy classful ipv4 network address interfaces +- minimal dlinfo function (nonstandard) + +other improvements: +- dynamic linker path file can now use newlines to separate paths +- math optimizations for archs with extended precision (i386) +- musl-gcc wrapper now exposes gcc's intrinsic headers +- quality of rand and rand_r pseudo-random sequences +- support for large device minor numbers (greater than 8 bits) +- various header conformance and compatibility fixes + +directly user-visible bugs fixed: +- scanf losing characters on unbuffered streams and fmemopen streams +- failure of mbsrtowcs to record stop position when dest is full +- failure of iconv to convert to legacy codepages +- non-working pthread_[sg]etschedparam functions (wrong syscall arguments) + +other potentially-serious bugs fixed: +- resource leaks in sem_open +- various bugs in thread exit synchronization +- invalid access in aio notification after aiocb free/reuse +- synchronization in dynamic linker when new thread dlopens during ctors +- lack of error handling for failure to read dynamic linker path file +- creation by mmap or shmget of objects larger than PTRDIFF_MAX + +minor conformance bugs fixed: +- overflow handling for the clock function +- workaround for incorrect exceptions in fma due to compiler bugs +- workaround wrong kernel type for sem_nsems field in struct semid_ds + +arch-specific bugs fixed: +- x86_64 sigsetjmp clobbered the signal mask rather than saving it +- misaligned stack when calling ctors/dtors (crashing on x86_64) + + + +0.9.12 release notes + +new features: +- zoneinfo time zone support +- PIE support on all supported archs +- named sub-archs for endian and float ABI variants +- improved support for non-root installs of the dynamic linker +- ability to selectively build only performance-critical modules with -O3 +- simple buffer overflow detection in free/realloc +- inet_ntop now presents v4-mapped addresses in ::ffff:a.b.c.d form +- ldd now reports libc and the dynamic linker in its output + +compatibility: +- support for new init/fini array (needed for ctors/dtors on newer gcc) +- C++ ABI fully matches glibc/LSB, at least on x86 +- many added ABI compatibility symbols for using glibc-linked libs +- support for STB_GNU_UNIQUE symbol bindings (found in some C++ libs) +- macros/types for new Linux kernel features in headers + +bugs fixed: +- crashes in scanf on literal mismatches (regression from adding %m) +- dl_iterate_phdr was passing invalid phdr pointers to its callback +- getaddrinfo with null host and AF_UNSPEC was failing to report IPv6 +- integer overflows in date/time conversion code +- misinterpretation of pre-1930s dates as post-2038 on 32-bit archs +- make install failed to install bits headers if make was not run first +- shm_open was wrongly cancellable +- low- or no-impact heap corruption in memalign +- explicitly running the dynamic linker on PIE programs did not work +- missing macros and sysconf for some supported POSIX option groups +- missing close-on-exec flags for several internal fd uses + +arch-specific bugs: +- wrong SIG_ATOMIC_MIN/MAX macros on x86_64 +- erfcl was missing on archs where long double is same as double +- broken dynamic-model TLS in static-linked arm/mips/powerpc programs + + + +0.9.13 release notes + +new features: +- iconv support for EUC-KR and Big5 (including HKSCS) encodings +- field widths (POSIX 2008 feature) in strftime +- recursive rpath and $ORIGIN support in dynamic linker +- cpu affinity interfaces +- support for armhf (hardfloat) floating point environment (fenv) +- support for SSE fenv on i386 (for apps using -mfpmath=sse -msse2) +- strftime %s format (seconds since the epoch, future POSIX requirement) +- configure script now saves its command line as a comment in config.mak +- legacy functions valloc and euidaccess + +performance: +- optimized asm memcpy for arm +- optimized asm memset for i386 and x86_64 +- optimized C versions of memcpy and memset for all archs +- eliminated major spurious syscalls from posix_spawn +- some math asm for armhf (hardfloat) + +workarounds for: +- qemu-user's rt_sigaction syscall does not allow old to alias new +- qemu-user's madvise always succeeds (broke pthread_getattr_np) +- passing PT_INTERP to dlopen attempted to double-load libc +- gcc 4.8.x generating self-referential (infinite recursion) memcpy/memset +- linux's lack of support for fchdir, fchmod, fchown, fstat on O_PATH fds + +bugs fixed: +- failure to honor flags for fchmodat and faccessat (linux syscall api flaws) +- SIGEV_THREAD timer id corruption and race condition issues +- timer thread TLS incorrectly keeping values from previous expiry run +- ecvt/fcvt decimal position off-by-one +- in symbol-versioned libs, symbol resolved to oldest instead of newest +- posix_spawn not correctly reporting errno from exec failure +- "make install" was not atomic (overwrote files rather than replacing) +- integer overflows in strftime +- unset/empty TZ variable was mishandled +- strftime could crash if the struct tm did not have valid tm_zone field +- failure of fenv functions to handle invalid arguments (required by ISO C) +- failure of some math functions (C and i386 asm) to raise underflow flag +- broken dn_expand function (previously not used internally) +- race conditions with signals during fork +- incorrect access check in mktemp (obsolete function) +- unnecessary arbitrary limits on size of program headers in dynamic loader +- text formatting bugs in output of err.h functions + +arch-specific bugs: +- fesetenv(FE_DFL_ENV) crashed on i386 +- breakage of arm crt code when libc is compiled as thumb +- arm/armhf (hardfloat) misidentified by configure +- ambiguity of wait (exit status) macros on mips with signal number 127 +- wrong value of _NSIG and SIGRTMAX on mips + + + +0.9.14 release notes + +bugs fixed: +- failure to properly install dynamic linker with DESTDIR set (symlink wrong) +- rare deadlock in libc-internal locking routines +- dynamic linker used fallback paths wrongly on (possibly transient) errors +- popen broken when stdin or stdout was already closed in parent +- deadlock/memory-corruption in multithreaded set*id and setrlimit functions +- realpath failed when file was not readable +- readpath mistakenly had cancellation points in it +- crashes in scanf with invalid %m conversion specifiers +- misclassificiation of some invalid ld80 float representation in fpclassify +- various overflow and underflow flag issues in math functions +- domain handling errors for acoshf and acoshl +- wrong values for some sysconf properties +- lack of proper memory barriers on arm + +mips-specific bugs: +- broken sysv ipc structures +- multiple stack-related bugs in clone, leading to crashes in parent or child +- overflow writing sigset_t in multithreaded set*id and setrlimit functions + +other improvements: +- size and performance improvements to various math functions +- wait.h as a compatibility alias for sys/wait.h +- various header improvements +- support for runtime-variable page size on archs that need it (mainly mips) + + + +0.9.15 release notes + +new features: +- support for mixing IPv4 and v6 nameserver addresses in resolv.conf +- RFC 3678 multicast structures/macros in netinet/in.h +- putspent and fgetspent functions (shadow password API) +- timef function (obsolete, removed in POSIX 2008) +- fanotify syscalls (Linux-specific feature) +- semtimedop syscall (Linux-specific sysvipc extension) +- quotactl syscall and header (filesystem quotas support) +- drem and finite functions (obsolete BSD functions) +- getloadavg function (non-standard) +- herror function (non-standard and obsolete) +- libc.so now stores and prints its version information +- expose constants for new Linux features including O_TMPFILE +- implement FNM_LEADING_DIR option to fnmatch (GNU extension) +- posix_close function (accepted for inclusion in next POSIX issue) + +bugs fixed: +- buffer overflow in mbsrtowcs +- clobbering of gr_name in getgrnam_r and getgrgid_r +- execle ignoring the environment argument +- setenv crash on malloc failure +- out-of-bounds access in fnmatch with FNM_PATHNAME and certain patterns +- failure of malloc to set errno when failing to extend heap +- incorrect errno value from getcwd with zero size +- spurious failure in faccessat with AT_EACCESS flag with suid/sgid programs +- several fd leaks due to missing close-on-exec flag +- misspellings/typos in macro names in several headers +- incorrect failure return value in inet_pton +- various numeric ip address parsing and validation fixes +- namespace conformance issues in several headers +- minor header issues +- zombie processes left by faccessat with AT_EACCESS +- timezone file parser failing/crashing on 64-bit archs +- hang in localtime with near-overflowing time_t values on 64-bit archs +- timezone path search was only trying first path +- incorrect handling of excessive-length TZ environment strings +- timezone file loading was wrongly enforcing O_NOFOLLOW/rejecting symlinks +- iswspace was wrongly returning true for the null character +- various bugs in wordexp +- putgrent could write corrupt lines after write failures +- dn_expand misinterpreted in-packet offsets greater than 255 +- spurious strftime/wcsftime failure on len+1==bufsize case +- incorrect underflow flag in fma corner cases +- log*(0) wrongly returned +inf in downward-rounding mode +- failure of fchmod, fstat, fchdir, and fchown to produce EBADF + +arch-specific bugs fixed: +- i386: failure of fesetround to set sse rounding mode +- i386: floating point limit constants misinterpreted due to excess precision +- powerpc: broken thread pointer access when compiled with clang +- microblaze: dynamic linker entry point code possibly clobbering argv + +strict conformance issues: +- NULL definition re-aligned with POSIX (requires (void *) cast) +- alignment of math.h is* comparison functions with C11 annex F requirements + + + +1.0.0 release notes + +new features: +- support for mips softfloat ABI variant +- legacy setkey and encrypt API for DES +- support for BSD version of struct tcphdr in addition to GNU version +- added ipv6 and icmpv6 protocol lookups to getprotoent-family functions + +new experimental ports: +- sh (SuperH) +- x32 (ILP32 ABI for x86_64) + +compatibility: +- improved c89 compiler support in math.h +- eliminate some compiler warnings in public headers +- added some missing things for LFS64 APIs +- added fallback emulation of accept4 for older kernels + +bugs fixed: +- buffer overflow in printf when printing smallest denormal exactly +- rounding errors in printf in some just-over-halfway cases +- posix_spawn did not accept null pid pointer (crashed) +- ftello gave incorrect result for unflushed append-mode streams +- mishandling of n=0 case in wcsxfrm (wild buffer overrun) +- possible system breakage during libc upgrade due to install.sh bugs +- nftw FTW_MOUNT flag prevented walking any directories at all +- ptsname/ptsname_r returned negated error codes +- getprotoent function returned junk after listing valid protocols +- wrong error code from readdir when the directory has been deleted +- various prototype/argument-type fixes, mostly to legacy functions +- various header namespace violations + +arch-specific bugs fixed: +- fesetenv(FE_DFL_ENV) was broken on i386 and x86_64 +- strerror(EDQUOT) did not work on mips +- recvmsg/sendmsg were broken on powerpc +- sysv ipc was broken on powerpc and mips +- statfs/statvfs were broken on mips +- sigaltstack was broken on mips + + + +1.1.0 release notes + +new features: +- relro memory protection in dynamic linker +- malloc can now extend heap with mmap if brk fails +- vdso clock_gettime/gettimeofday/time acceleration on x86_64 +- thread/library-safe versions of search.h functions (nonstandard) +- getauxval function (nonstandard) +- sysconf extensions to query physical memory size + +bugs fixed: +- floating point printf output corruption from carry into uninitialized slot +- possible runaway carry overflow in printf floating point +- printf %g failure to strip trailing zeros in some cases +- search past end of haystack in memmem +- off-by-one error in confstr return value +- crashes in some near-empty static programs that use stack protector +- deadlock race in pthread_once +- non-working clock_gettime fallback for old kernels + +arch-specific bugs fixed: +- crash from missing syscall asm register clobbers on real microblaze kernel +- crash in all nontrivial dynamic linker use on microblaze +- incorrect rlimit constants on mips +- broken, possibly dangerous, use of getrlimit syscall on x32 in sysconf + + + +1.1.1 release notes + +new features: +- new options --preload and --library-path to dynamic linker +- public execvpe function (nonstandard extension) +- iconv support for cp437 and cp850 + +bugs fixed: +- false negatives with some periodic needles in strstr, wcsstr, and memmem +- crash on invalid zoneinfo files +- incorrect zero-padding of some outputs for strftime %s specifier +- misreporting of errors in configure script when $CC does not work at all +- treating not-yet-implemented strptime specifiers as errors + +compatibility: +- configure now detects serious constant-folding bug in gcc 4.9.0 +- removed __yield symbol (unused) that clashed with some compilers +- improvements to sysconf's handling of unsupported/invalid arguments + +arch-specific bugs fixed: +- misdetection of superh ABI variant by configure on gcc 3.x +- missing SO_RCVBUFFORCE and SO_SNDBUFFORCE in mips socket.h +- build regression on armv6 and later with -mthumb + + + +1.1.2 release notes + +new features: +- multi-protocol matches (tcp and udp) in getaddrinfo +- support for AI_V4MAPPED and AI_ALL flags to getaddrinfo +- reverse name lookups from /etc/hosts +- reverse service lookups from /etc/services +- support for service aliases in /etc/services +- ipsec and tunneling protocols to getprotoent-family functions +- res_send, res_mkquery, res_querydomain, and dn_comp functions +- ipv6 scope id handling for link-local scope addresses +- previously-unimplemented %C and %y in strptime now work +- vdso clock_gettime acceleration on i386 (new kernel feature) +- better O_CLOEXEC/SOCK_CLOEXEC fallbacks for old kernels + +bugs fixed: +- buffer overflow in dns response parsing (CVE-2014-3484) +- possible infinite loop in dns response parsing +- sendfile off_t 32/64-bit size mismatch +- incorrect end pointer in some cases when wcsrtombs stops early +- incorrect if_nametoindex return value when interface does not exist +- dummy "ent" function aliases that possibly shadowed real ones +- tmpfile fd leak on memory exhaustion +- getaddrinfo returning EAI_NONAME for some transient failures + +arch-specific bugs fixed: +- broken kernel side RLIM_INFINITY on mips +- incorrect syscall argument 6/7 types for pselect on x32 + + + +1.1.3 release notes + +new features: +- address sorting in getaddrinfo, etc. modeled on rfc 3484/6724 +- default timezone taken from /etc/localtime when $TZ is unset +- getopt double-colon extension for optional arguments +- support for TLSDESC-based (gnu2) TLS dialect on i386 and x86_64 +- sendmmsg/recvmmsg (linux-specific) +- fmtmsg (last mandatory XSI function that was missing) + +compatibility: +- treat dns rcode=2 as temporary failure, not negative result +- working thread-pointer for pre-2.6 kernels on i386 +- further ABI-compat symbols: __xmknod[at], __sysv_signal + +bugs fixed: +- memmem false positives/false negatives/crashes from invalid logic +- gethostby*_r not setting result pointer to null on failure +- aliasing violations in syscall.h SYSLOG_NAMES feature +- fanotify_mark syscall arguments wrong + +arch-specific bugs fixed: +- various subtle relocation bugs in powerpc and sh dynamic linker + + + +1.1.4 release notes + +new features: +- experimental locale support for LC_MESSAGES and LC_TIME +- non-stub gettext family functions for message translation +- or1k (OpenRISC 1000) port +- syslog options LOG_CONS and LOG_PERROR +- issetugid function (from OpenBSD) +- improved if_nameindex and getifaddrs functions + +compatibility: +- work around bug #61144 in gcc 4.9.0 and 4.9.1 +- support getauxval(AT_SECURE) even on kernels without AT_SECURE + +bugs fixed: +- empty dynamic linker error messages (regression in 1.1.3) +- if_nameindex omitted unconfigured and ipv6-only interfaces +- incorrect return value for fwide function +- failure of wide printf/scanf functions to set wide orientation +- multiple issues in legacy function getpass +- dynamic linker did not accept colon as a separator for LD_PRELOAD +- errno clobber in syslog caused wrong output for %m specifier +- crash in regexec for nonzero nmatch argument with REG_NOSUB +- minor bugs in rarely-used nl_langinfo item lookups + +arch-specific bugs fixed: +- broken relocations in mips dynamic linker (regression in 1.1.3) +- register state corruption in setjmp asm for microblaze +- broken struct stat st_ino field on microblaze +- broken struct stat st_dev field on big endian mips +- broken asm register constraints in atomics on powerpc +- missing barriers in atomics on mips, powerpc, microblaze, and sh + + + +1.1.5 release notes + +new features: +- full C11 coverage (threads, UTF-16/32 API, timespec_get, etc.) +- malloc_usable_size function (nonstandard) +- support for new F_OFD_* fcntl operations (linux 3.15, POSIX-future) +- new _DEFAULT_SOURCE feature test macro to request default profile + +performance: +- private-futex support +- redesigned cond var implementation with major performance improvement +- tweaked spinning in userspace before performing futex waits + +bugs fixed: +- failure of dn_expand to null-terminate name for crafted DNS packets +- corruption of cond var mutex state when switching mutexes +- use of uninitialized memory with application-provided thread stacks +- false ownership of orphaned mutexes due to tid reuse +- possible failure-to-wake for robust mutexes on owner death +- subtle errors in robust mutex unrecoverable status handling +- missing memory/compiler barrier spinning to obtain locks +- wrong behavior in various zero-length stdio operations +- buffer overflow in swab with odd argument +- incorrect sequence generation in the rand48 family of prng functions +- missing cancellation check in non-wait paths of sem_wait, pthread_join +- missing barrier in pthread_once fast path +- memory leak in regexec when input contains illegal sequence +- various parser bugs in regcomp +- wrong return value on overflow in some strtoul-family functions +- broken CPU_EQUAL macro in sched.h +- dlerror not working in static-linked programs +- mishandling of negative non-whole-hour TZ offsets +- incorrect case mappings for U+00DF +- namespace pollution via accidentally-non-static function named "dummy" +- missing __fpclassifyl and __signbitl definitions for ld64 archs + + + +1.1.6 release notes + +new features: +- getopt '-' flag for processing non-option arguments +- getopt_long argument permutation extension +- getopt_long abbreviated options +- ns_parserr and related DNS-packet-parsing functions +- fnmatch FNM_CASEFOLD extension +- support for translation of getopt error messages +- login_tty function (legacy) + +performance: +- efficient atomics on armv7+ targets +- pthread_once shrink-wrapping of fast path + +compatibility: +- baseline arm binaries now work on new cpus/kernels without kuser_helper +- dynamic linker now honors DT_RUNPATH without DT_RPATH (new binutils) +- arm asm is now compatible with clang's internal assembler +- suppress macro implementations of functions when headers are used in C++ +- increased message length limit for syslog + +bugs fixed: +- open ignored file creation mode argument for O_TMPFILE +- wrong printf formatting for %#.0o with value zero +- missing private state for uchar.h functions (null ps pointer) +- sched_getaffinity left uninitialized data in output bit array +- wrong return values for pthread_getaffinity_np and pthread_setaffinity_np +- buggy handling of multibyte option chars with arguments in getopt +- printf failed to report or stop on write errors +- printf failed to honor '+' modifier when printing NANs +- wcsnrtombs returned the wrong value in one code path +- syslog failed to check for connect error +- multi-threaded set*id() had spurious failures from ugly workaround code +- various minor header conformance bugs (signedness, constant expressions, ...) + +arch-specific bugs fixed: +- on or1k, some syscalls with 64-bit arguments were broken (misaligned) +- usage of sahf instruction on x86_64 crashed on some early cpu models + + + +1.1.7 release notes + +new features: +- alternate passwd/group backend support via nscd protocol +- masked cancellation mode extension (experimental) +- aio cancellation +- aarch64 port (experimental) + +performance: +- significant memset asm optimizations on i386 and x86_64 + +compatibility: +- suppress EINTR in semaphores for old kernels where futex restart is broken +- always set optarg in getopt_long +- support SOCK_RAW socket type in getaddrinfo +- report success instead of EINPROGRESS when close is interrupted + +bugs fixed: +- multithreaded set*id() was not async-signal safe, had various race bugs +- getspnam_r returned results for partial username matches +- wordexp bad character checker mis-counted parentheses +- close on fd with pending aio could lead to file corruption +- old aio implementation had numerous conformance bugs +- malloc init code could deadlock due to race condition +- pthread_exit did not disable cancellation +- pthread_cond_wait could wrongly consume signal on cancellation +- execvp wrongly stopped path search on EACCESS +- fsync, fdatasync, and msync were not honored as cancellation points +- fchmodat was subject to fd leak race (missing O_CLOEXEC) +- fchmodat failed to report EOPNOTSUPP in race path +- passwd/group lookup functions had various minor error-reporting bugs +- isatty had false-positives/device-state-corruption for OSS sound devices +- configure script failed to detect gcc with translated messages +- FLT_ROUNDS macro failed to reflect rounding mode changes in fenv + +arch-specific bugs fixed: +- mips fesetenv did not handle FE_DFL_ENV +- mips POLLWRNORM and POLLWRBAND macros had wrong values +- x32 pthread synchronization object type definitions were wrong +- powerpc minimum signal stack size was insufficient + + + +1.1.8 release notes + +bugs fixed: +- stack-based buffer overflow in inet_pton (CVE-2015-1817) +- regcomp crash/mem-corruption with illegal bytes after backslash +- regcomp wrongly allowed backrefs in ER +- regcomp miscompiled character class brace-repetitions +- regcomp wrongly processed \0 as an unmatchable backref +- new FLT_ROUNDS definition failed to work in C++ code + +arch-specific bugs fixed: +- aarch64 was missing max_align_t definition