mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Reorganize and revise NEWS for 2.26.
This commit is contained in:
parent
cc31b141f9
commit
2b2ccd0c63
289
NEWS
289
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).
|
||||
|
||||
* Collation of Hungarian has been overhauled and is now consistent with "The
|
||||
Rules of Hungarian Orthography, 12th edition" (Bug 18934). Contributed by
|
||||
Egmont Koblinger.
|
||||
|
||||
* Improvements to the DNS stub resolver, contributed by Florian Weimer:
|
||||
|
||||
- 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.
|
||||
|
||||
- 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.
|
||||
|
||||
- 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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 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).
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
|
||||
removed.
|
||||
|
||||
* <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).
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* The minimum GNU Binutils version that can be used to build this version of
|
||||
the GNU C Library is Binutils 2.25.
|
||||
|
||||
* 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.
|
||||
* <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 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.
|
||||
* 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:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user