about summary refs log tree commit diff
path: root/NEWS
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-07-05 09:03:00 -0400
committerZack Weinberg <zackw@panix.com>2017-07-05 09:03:00 -0400
commit2b2ccd0c638e715be95307842077eb7d81a648e9 (patch)
treee9a7e1920a77a4c9aeb0cc1ad621f1601a70d06e /NEWS
parentcc31b141f95410ee786bec09e2de8e4af4d112d0 (diff)
downloadglibc-2b2ccd0c638e715be95307842077eb7d81a648e9.tar.gz
glibc-2b2ccd0c638e715be95307842077eb7d81a648e9.tar.xz
glibc-2b2ccd0c638e715be95307842077eb7d81a648e9.zip
Reorganize and revise NEWS for 2.26.
Diffstat (limited to 'NEWS')
-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: