aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS279
1 files changed, 144 insertions, 135 deletions
diff --git a/NEWS b/NEWS
index 1f45852836..d54a3d6d31 100644
--- a/NEWS
+++ b/NEWS
@@ -7,142 +7,64 @@ using `glibc' in the "product" field.
Version 2.26
+Major new features:
+
* Unicode 10.0.0 Support: Character encoding, character type info, and
transliteration tables are all updated to Unicode 10.0.0, using
generator scripts contributed by Mike FABIAN (Red Hat).
-* errno.h is now safe to use from C-preprocessed assembly language on all
- supported operating systems. In this context, it will only define the
- Exxxx constants, as preprocessor macros expanding to integer literals.
-
-* The rpcgen, librpcsvc and related headers will only be built and
- installed when glibc is configured with --enable-obsolete-rpc.
- This allows alternative RPC implementations, like TIRPC, to be used
- by default. Applications needing features missing from TIRPC should
- consider the rpcsvc-proto project developed by Thorsten Kukuk (SUSE).
-
-* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
- libnss_compat, are deprecated, and will not be built or installed by
- default. Replacement implementations based on TIRPC, which
- additionally support IPv6, are available from
- <https://github.com/thkukuk/libnss_{compat,nis,nisplus}>.
-
-* The NIS(+) support library, libnsl, is deprecated. By default, a
- compatibility shared library will be built and installed, but not
- headers or development libraries.
-
- Only a few NIS-related programs require this library.
- A replacement implementation based on TIRPC is available from
- <https://github.com/thkukuk/libnsl>. Like the replacement NIS(+)
- name service modules, the replacement supports IPv6, and it can be
- coinstalled with the compatibility shared library from glibc.
-
-* New configure option --enable-obsolete-nsl will cause libnsl's
- headers, and the NIS(+) name service modules, to be built and
- installed. This option may be removed in a future release.
-
-* Extensive new collation tests for Hungarian locales based on
- "The Rules of Hungarian Orthography, 12th edition" and the work of
- Egmont Koblinger (Bug 18934).
-
-* The DNS stub resolver no longer performs EDNS fallback. If EDNS or DNSSEC
- support is enabled, the configured recursive resolver must support EDNS.
- (Responding to EDNS-enabled queries with responses which are not
- EDNS-enabled is fine, but FORMERR responses are not.)
-
-* res_mkquery and res_nmkquery no longer support the IQUERY opcode. DNS
- servers have not supported this opcode for a long time.
-
-* The legacy cfree function has been removed. Applications should use the
- free function instead.
+* Collation of Hungarian has been overhauled and is now consistent with "The
+ Rules of Hungarian Orthography, 12th edition" (Bug 18934). Contributed by
+ Egmont Koblinger.
-* posix_spawnattr_setflags now supports POSIX_SPAWN_SETSID flag to create a
- new session ID for the posix_spawn and posix_spawnp. It is scheduled to
- be added on next major revision of POSIX, so current support is enabled
- with _GNU_SOURCE.
+* Improvements to the DNS stub resolver, contributed by Florian Weimer:
-* The minimum Linux kernel version that this version of the GNU C Library
- can be used with on i[4567]86 and x86_64 is 3.2. A Linux 3.2 or later
- kernel was already required on all other architectures.
-
-* The obsolete <sys/ultrasound.h> header file has been removed.
+ - glibc will now detect when /etc/resolv.conf has been modified and reload
+ the changed configuration. The new resolver option “no-reload”
+ (RES_NORELOAD) disables this behavior.
-* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
- removed.
+ - glibc now supports an arbitrary number of search domains (configured using
+ the “search” directive in /etc/resolv.conf); previously, there was a
+ hard limit of six domains. For backward compatibility, applications
+ that directly modify the ‘_res’ global object are still limited to six
+ search domains.
-* <string.h> no longer includes inline versions of any string functions,
- as this kind of optimization is better done by the compiler. The macros
- __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
-
-* The nonstandard header <xlocale.h> has been removed. Most programs should
- use <locale.h> instead. If you have a specific need for the definition
- of locale_t with no other declarations, please talk to us.
-
-* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
-
-* The reallocarray function has been added to libc. It is a realloc
- replacement with a check for integer overflow when calculating total
- allocation size.
-
-* New preadv2 and pwritev2 has been added. They are Linux extensions to
- preadv and pwritev with an additional flag argument where it is possible
- to set high priority or use O_DSYNC or O_SYNC for a specific IO operation.
- For complete support it requires Linux kernel version 4.6, otherwise a
- compat implementation will be used (which refuses all flags and routes it
- to preadv or pwritev).
-
-* The stack_t type no longer has the name struct sigaltstack. This changes
- the C++ name mangling for interfaces involving this type.
-
-* The ucontext_t type no longer has the name struct ucontext. This changes
- the C++ name mangling for interfaces involving this type.
-
-* On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
- the name struct fpregset. On Nios II GNU/Linux, the mcontext_t type no
- longer has the name struct mcontext. On SPARC GNU/Linux, the struct
- mc_fq, struct rwindow, struct fpq and struct fq types are no longer
- defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
- mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
- fpregset_t type no longer has the name struct fpu. This changes the C++
- name mangling for interfaces involving those types.
-
-* The synchronization that pthread_spin_unlock performs has been changed
- to now be equivalent to a C11 atomic store with release memory order to
- the spin lock's memory location. This ensures correct synchronization
- for the spin lock's operations and critical sections protected by a spin
- lock. Previously, several (but not all) architectures used stronger
- synchronization (e.g., containing what is often called a full barrier).
- This change can improve performance, but may affect odd fringe uses of
- spin locks that depend on the previous behavior (e.g., using spin locks
- as atomic variables to try to implement Dekker's mutual exclusion
- algorithm).
+ - When the “rotate” (RES_ROTATE) resolver option is active, glibc will now
+ randomly pick a name server from the configuration as a starting point.
+ (Previously, the second name server was always used.)
* The tunables feature is now enabled by default. This allows users to tweak
behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
-* The s390 specific ptrace requests are adjusted to the kernel ones. Request 12
- is now used for PTRACE_SINGLEBLOCK instead of PTRACE_GETREGS. The requests
- PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS were
- removed as those are not supported by the s390 kernel. The requests
- PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
- PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
- PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND were added as those are supported
- by the s390 kernel.
+* New function reallocarray, which resizes an allocated block (like realloc)
+ to the product of two sizes, with a guaranteed clean failure upon integer
+ overflow in the multiplication. Originally from OpenBSD, contributed by
+ Dennis Wölfing and Rüdiger Sonderfeld.
-* The minimum GCC version that can be used to build this version of the GNU
- C Library is GCC 4.9. Older GCC versions, and non-GNU compilers, can
- still be used to compile programs using the GNU C Library.
+* New wrappers for the Linux-specific system calls preadv2 and pwritev2.
+ These are extended versions of preadv and pwritev, respectively, taking an
+ additional flags argument. The set of supported flags depends on the
+ running kernel; full support currently requires kernel 4.7 or later.
+
+* posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to
+ create a new session ID for the spawned process. This feature is
+ scheduled to be added to the next major revision of POSIX; for the time
+ being, it is available under _GNU_SOURCE.
+
+* errno.h is now safe to use from C-preprocessed assembly language on all
+ supported operating systems. In this context, it will only define the
+ Exxxx constants, as preprocessor macros expanding to integer literals.
-* The minimum GNU Binutils version that can be used to build this version of
- the GNU C Library is Binutils 2.25.
+* On ia64, powerpc64le, x86-32, and x86-64, the math library now implements
+ 128-bit floating point as defined by IEEE 60559:2011 and ISO/IEC TS
+ 18661-3:2015. Support for more architectures will be added in future
+ releases. Contributed by Paul E. Murphy, Gabriel F. T. Gomes, and Tulio
+ Magno Quites Machado Filho.
-* Support is added, on powerpc64le, x86_64, x86 and ia64, for interfaces
- supporting the _Float128 type from ISO/IEC TS 18661-3:2015. Most of the
- interfaces are taken from TS 18661-3. The type-generic macros in <math.h>
- and <tgmath.h> support this type. The GNU C Library now requires GCC 6.2
- or later to build for powerpc64le. When used with GCC versions before GCC
- 7, these interfaces may be used with the type under the non-standard name
- __float128.
+ To compile programs that use this feature, the compiler must support
+ 128-bit floating point with the type name _Float128 (as defined by
+ TS 18661-3) or __float128 (the nonstandard name used by GCC prior to
+ version 7).
New <stdlib.h> functions from ISO/IEC TS 18661-3:
@@ -230,24 +152,111 @@ Version 2.26
- Exponential and Logarithmic Function: clog10f128.
-* When the “rotate” (RES_ROTATE) DNS stub resolver option is active, glibc
- will now randomly pick a name server from the configuration as a starting
- point. (Previously, the second name server was always used.)
+Deprecated and removed features, and other changes affecting compatibility:
+
+* The synchronization that pthread_spin_unlock performs has been changed to
+ now be equivalent to a C11 atomic store with release memory order to the
+ spin lock's memory location. Previously, several (but not all)
+ architectures used stronger synchronization (e.g., containing what is
+ often called a full barrier). This change can improve performance, but
+ may affect odd fringe uses of spin locks that depend on the previous
+ behavior (e.g., using spin locks as atomic variables to try to implement
+ Dekker's mutual exclusion algorithm).
+
+* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
+ removed.
+
+* Sun RPC is deprecated. The rpcgen program, librpcsvc, and Sun RPC headers
+ will only be built and installed when glibc is configured with
+ --enable-obsolete-rpc. This allows alternative RPC implementations, such
+ as TIRPC or rpcsvc-proto, to be used.
+
+* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
+ libnss_compat, are deprecated, and will not be built or installed by
+ default.
+
+ The NIS(+) support library, libnsl, is also deprecated. By default, a
+ compatibility shared library will be built and installed, but not headers
+ or development libraries. Only a few NIS-related programs require this
+ library. (In particular, glibc has never required programs that use
+ 'gethostbyname' to be linked with libnsl.)
+
+ Replacement implementations based on TIRPC, which additionally support
+ IPv6, are available from <https://github.com/thkukuk/>. The configure
+ option --enable-obsolete-nsl will cause libnsl's headers, and the NIS(+)
+ name service modules, to be built and installed.
+
+* The DNS stub resolver no longer performs EDNS fallback. If EDNS or DNSSEC
+ support is enabled, the configured recursive resolver must support EDNS.
+ (Responding to EDNS-enabled queries with responses which are not
+ EDNS-enabled is fine, but FORMERR responses are not.)
+
+* res_mkquery and res_nmkquery no longer support the IQUERY opcode. DNS
+ servers have not supported this opcode for a long time.
* The _res_opcodes variable has been removed from libresolv. It had been
exported by accident.
-* The glibc DNS stub resolver now supports an arbitary number of search
- domains (configured using the “search” directive in /etc/resolv.conf).
- Most applications will automatically benefit from this change, but for
- backwards compatibility reasons, applications which directly modify _res
- objects (which contain the resolver state, including the search list
- array, which is limited to six entries) will only use the first six search
- domains, as before.
-
-* The glibc DNS stub resolver now automatically reloads /etc/resolv.conf,
- to pick up changed configuration settings. The new “no-reload”
- (RES_NORELOAD) resolver option disables this behavior.
+* <string.h> no longer includes inline versions of any string functions,
+ as this kind of optimization is better done by the compiler. The macros
+ __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.
+
+* The nonstandard header <xlocale.h> has been removed. Most programs should
+ use <locale.h> instead. If you have a specific need for the definition of
+ locale_t with no other declarations, please contact
+ libc-alpha@sourceware.org and explain.
+
+* The obsolete header <sys/ultrasound.h> has been removed.
+
+* The obsolete signal constant SIGUNUSED is no longer defined by <signal.h>.
+
+* The obsolete function cfree has been removed. Applications should use
+ free instead.
+
+* The stack_t type no longer has the name struct sigaltstack. This changes
+ the C++ name mangling for interfaces involving this type.
+
+* The ucontext_t type no longer has the name struct ucontext. This changes
+ the C++ name mangling for interfaces involving this type.
+
+* On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
+ the name struct fpregset. On Nios II GNU/Linux, the mcontext_t type no
+ longer has the name struct mcontext. On SPARC GNU/Linux, the struct
+ mc_fq, struct rwindow, struct fpq and struct fq types are no longer
+ defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
+ mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
+ fpregset_t type no longer has the name struct fpu. This changes the C++
+ name mangling for interfaces involving those types.
+
+* On S/390 GNU/Linux, the constants defined by <sys/ptrace.h> have been
+ synced with the kernel:
+
+ - PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS
+ are not supported on this architecture and have been removed.
+
+ - PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
+ PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
+ PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND have been added.
+
+ Programs that assume the GET/SETREGS ptrace requests are universally
+ available will now fail to build, instead of malfunctioning at runtime.
+
+Changes to build and runtime requirements:
+
+* Linux kernel 3.2 or later is required at runtime, on all architectures
+ supported by that kernel. (This is a change from version 2.25 only for
+ x86-32 and x86-64.)
+
+* GNU Binutils 2.25 or later is now required to build glibc.
+
+* On most architectures, GCC 4.9 or later is required to build glibc. On
+ powerpc64le, GCC 6.2 or later is required.
+
+ Older GCC versions and non-GNU compilers are still supported when
+ compiling programs that use glibc. (We do not know exactly how old,
+ and some GNU extensions to C may be _de facto_ required. If you are
+ interested in helping us make this statement less vague, please
+ contact libc-alpha@sourceware.org.)
Security related changes: