Geeks3D Forums

Tech Forums => 3D-Tech News Around The Web => Topic started by: JeGX on August 04, 2022, 12:25:20 PM

Title: GNU C Library GLIBC 2.36 available
Post by: JeGX on August 04, 2022, 12:25:20 PM
 The GNU C Library project provides the core libraries for the GNU system and GNU/Linux systems, as well as many other systems that use Linux as the kernel. These libraries provide critical APIs including ISO C11, POSIX.1-2008, BSD, OS-specific APIs and more. These APIs include such foundational facilities as open, read, write, malloc, printf, getaddrinfo, dlopen, pthread_create, crypt, login, exit and more.

The GNU C Library is designed to be a backwards compatible, portable, and high performance ISO C library. It aims to follow all relevant standards including ISO C11, POSIX.1-2008, and IEEE 754-2008.

Links
- GLIBC 2.36 announcement (https://sourceware.org/pipermail/libc-alpha/2022-August/141193.html)
- The GNU C Library (glibc) (https://www.gnu.org/software/libc/)

GLIBC 2.36 major new features:
Quote* Support for DT_RELR relative relocation format has been added to
  glibc.  This is a new ELF dynamic tag that improves the size of
  relative relocations in shared object files and position independent
  executables (PIE).  DT_RELR generation requires linker support for
  -z pack-relative-relocs option, which is supported for some targets
  in recent binutils versions.  Lazy binding doesn't apply to DT_RELR.

* On Linux, the pidfd_open, pidfd_getfd, and pidfd_send_signal functions
  have been added.  The pidfd functionality provides access to a process
  while avoiding the issue of PID reuse on tranditional Unix systems.

* On Linux, the process_madvise function has been added. It has the
  same functionality as madvise but alters the target process identified
  by the pidfd.

* On Linux, the process_mrelease function has been added.  It allows a
  caller to release the memory of a dying process.  The release of the
  memory is carried out in the context of the caller, using the caller's
  CPU affinity, and priority with CPU usage accounted to the caller.

* The DNS stub resolver option has been added.  System
  administrators can use it to suppress AAAA queries made by the stub
  resolver, including AAAA lookups triggered by NSS-based interfaces
  such as getaddrinfo.  Only DNS lookups are affected: IPv6 data in
  /etc/hosts is still used, getaddrinfo with AI_PASSIVE will still
  produce IPv6 addresses, and configured IPv6 name servers are still
  used.  To produce correct Name Error (NXDOMAIN) results, AAAA queries
  are translated to A queries.  The new resolver option is intended
  primarily for diagnostic purposes, to rule out that AAAA DNS queries
  have adverse impact.  It is incompatible with EDNS0 usage and DNSSEC
  validation by applications.

* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, open_tree,
  and mount_setattr have been added.  They are part of the new Linux kernel
  mount APIs that allow applications to more flexibly configure and operate
  on filesystem mounts.  The new mount APIs are specifically designed to work
  with namespaces.

* localedef now accepts locale definition files encoded in UTF-8.
  Previously, input bytes not within the ASCII range resulted in
  unpredictable output.

* Support for the mbrtoc8 and c8rtomb multibyte/UTF-8 character conversion
  functions has been added per the ISO C2X N2653 and C++20 P0482R6 proposals.
  Support for the char8_t typedef has been added per the ISO C2X N2653
  proposal.  The functions are declared in uchar.h in C2X mode or when the
  _GNU_SOURCE macro or C++20 __cpp_char8_t feature test macro is defined.
  The char8_t typedef is declared in uchar.h in C2X mode or when the
  _GNU_SOURCE macro is defined and the C++20 __cpp_char8_t feature test macro
  is not defined (if __cpp_char8_t is defined, then char8_t is a builtin type).

* The functions arc4random, arc4random_buf, and arc4random_uniform have been
  added.  The functions wrap getrandom and/or /dev/urandom to return high-
  quality randomness from the kernel.

* Support for LoongArch running on Linux has been added.  This port requires
  as least binutils 2.38, GCC 12, and Linux 5.19.  Currently only hard-float
  ABI is supported:

    - loongarch64-linux-gnu

  The LoongArch ABI is 64-bit little-endian.