Chapter 7. Compilers and development tools

download PDF

The following chapter contains the most notable changes to compilers and development tools between RHEL 8 and RHEL 9.

7.1. Notable changes to glibc

All threading APIs now merged into

In RHEL 8, the system threading library,, was a distinct library. In RHEL 9, all threading APIs have been merged into the core C library Moving threading into the core C library enables the library to support threads by default. With a single file the in-place upgrade process is also made smoother since the thread APIs and core C, POSIX and BSD APIs are all updated at the same time (no distinct libraries).

Developers can continue to use the -lpthread option when linking threaded applications, but it is no longer necessary.

Historically, libraries used a weak reference to pthread_create or pthread_cancel to detect if processes could possibly be multi-threaded. Since this check now always succeeds, because is now in the core C library, libraries should use the __libc_single_threaded symbol for this instead.

The libdl library now merged into

In RHEL 8, the libdl library was a distinct library. In RHEL 9, the libdl library has been merged into the core C library This means that interposing the dlsym function is now much more difficult. Applications that need to control the way how symbol resolution works should switch to the auditor (LD_AUDIT) interfaces.

Name Service Switch service plugins for dns and files now merged into

In RHEL 8, the Name Service Switch (NSS) services for files and dns, which provides data to user and group identity management APIs, was a distinct plugin. In RHEL 9, the plugins have been merged into the core C library Moving the files and dns service providers ensures that applications that need to cross a mount namespace boundary (for example, enter a container) can do so knowing that NSS files and dns access services are always loaded at process startup.

When calling user and group APIs, where those APIs depend on an nsswitch.conf that references files or dns, developers can expect those services to always be present and provide the underlying service data.

Red Hat logoGithubRedditYoutubeTwitter


Try, buy, & sell


About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.