Changes in Fedora 43 For Developers

Python 3.14

The Python stack in Fedora has been updated from version 3.13 to version 3.14, the latest major release of the Python programming language.

For more information, see the upstream "What’s new" document, and especially the Porting to Python 3.14 section.

python-async-timeout is now deprecated

The python-async-timeout package has been deprecated in Fedora. Developers are encouraged to migrate to asyncio.Timeout in Python 3.11+ for improved compatibility with the standard library.

python-nose retired

The python3-nose package has been retired due to long-term lack of upstream development.

GNU toolchain update

The GNU toolchain in Fedora 43 has been updated to:

  • GNU C Compiler (gcc) 15.2

  • GNU Binary Utilities (binutils) 2.45

  • GNU C Library (glibc) 2.42

  • GNU Debugger (gdb) 16.3

Also see the upstream release notes for GCC, Binutils, GLibC NEWS, and GDB NEWS.

Gold linker deprecated

The Gold linker has been deprecated and will eventually be removed from Fedora entirely due to upstream development having stopped. Three other linkers are still available to developers (ld.bfd, lld and mold), so there is still plenty of choice.

Golang 1.25

The latest stable release of the Go programming language is now available in Fedora 43.

For more information, see the upstream release notes.

Golang packages are now vendored by default

Fedora now uses vendored dependencies as the default and preferred option when building Golang applications, instead of relying on pre-packaged dependencies. This includes adopting Go Vendor Tools, a new set of tooling to handle license scanning, generating a cumulative SPDX expression for all dependencies, and creating reproducible vendor archives. This change aims to simplify packaging Golang applications in Fedora. Users should not see any change in behavior.

LLVM 21

LLVM sub-projects in Fedora have been updated to version 21. There has been a soname version change for the llvm libraries, and an llvm20 compat package has been added to ensure that packages that currently depend on clang and llvm version 20 libraries will continue to work.

Other notable changes include:

  • Built with PGO: The llvm package is now built with PGO optimization, so users of its libraries and binaries should see some performance improvements. For example, clang should be noticeably faster compiling C and C++ files.

  • Undoing the prefix changes from LLVM 20: This change was made in rawhide and f42 after the f42 release, so it is already done. See https://pagure.io/fesco/issue/3414.

More information is available in the upstream release notes.

Ruby on Rails 8.0

The Ruby on Rails stack has been upgraded from version 7.0 in Fedora 42 to version 8.0 in Fedora 43. Notable changes include:

  • Trifecta of new database-backed adapters named Solid Cable, Solid Cache, and Solid Queue (not part of Fedora at the moment).

  • SQLite ready for production.

  • Sprockets replaced with Propshaft.

  • Generating the authentication basics.

See the upstream release notes for more information.

Tomcat 10.1

The Tomcat application server has been upgraded to version 10.1 in Fedora 43.

Changes in this version include:

  • Apache Tomcat 10.1.x requires Java 11 or later.

  • Specification API Breaking Changes: There is a significant breaking change between Tomcat 9.0.x and Tomcat 10.1.x. The Java package used by the specification APIs has changed from javax.* to jakarta.*. It will be necessary to recompile web applications against the new APIs. See the Change page on the Fedora Wiki for details.

  • Other Specification API changes:

    • Jakarta Servlet 6.0 API: The Java package has changed from javax.servlet to jakarta.servlet. A new method, Cookie.setAttribute(String name, String value) has been added. The process for decoding and normalizing URIs has been clarified. New methods and classes have been added to provide access to unique identifiers for the current request and/or associated connection.

    • Jakarta Server Pages 3.1 API: The Java package has changed from javax.servlet.jsp to jakarta.servlet.jsp. Added an option to raise a PropertyNotFoundException when an EL expression contains an unknown identifier.

    • Jakarta Expression Language 5.0: The Java package has changed from javax.el to jakarta.el. The EL API now uses generics where appropriate. The deprecated MethodExpression.isParmetersProvided() method has been removed from the API.

    • Jakarta WebSocket 2.1: The Java package has changed from javax.websocket to jakarta.websocket. The packaging of the API JARs has changed to remove duplicate classes. The server API now has a dependency on the client API JAR.

    • Jakarta Authentication 3.0: The Java package has changed from javax.security.auth.message to jakarta.security.auth.message.

  • Internal Tomcat APIs: Whilst the Tomcat 10 internal API is broadly compatible with Tomcat 9, there have been many changes at the detail level and they are not binary compatible. Developers of custom components that interact with Tomcat’s internals should review the JavaDoc for the relevant API.

  • web.xml defaults: conf/web.xml sets the default request and response character encoding to UTF-8.

  • Session management: Session persistence on restart has been disabled by default. It may be re-enabled globally in conf/context.xml or per web application.

  • HTTP/2: The configuration settings that were duplicated between the HTTP/1.1 and HTTP/2 connectors have been removed from the HTTP/2 connector which will now inherit them from the associated HTTP/1.1 connector.

  • Logging: The logging implementation now only creates log files once there is something to write to the log files.

  • Access Log Patterns: To align with httpd, the %D pattern now logs request time in microseconds rather than milliseconds. To log request time in milliseconds, use %{ms}T.

See the upstream changelog for additional information.

Haskell GHC 9.8 and Stackage LTS 23

For Fedora 42, the main GHC Haskell compiler package have been from version 9.6.6 to the latest stable 9.8.4 release (rebasing the ghc package from the ghc9.8 package). Along with this, Haskell packages in Stackage (the stable Haskell source package distribution) have been updated from the versions in LTS 22 to latest LTS 23 release. Haskell packages not in Stackage have been updated to the latest appropriate version in the upstream Hackage package repository.

For full information about this release, see the upstream release notes and migration guide.

The Hare programming language

Fedora 43 introduces packages for Hare, a systems programming language designed to be simple, stable, and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well-suited to writing operating systems, system tools, compilers, networking software, and other low-level, high performance tasks.

The Hare toolchain on Fedora includes:

  • hare (build driver)

  • harec (compiler front-end, already available in Fedora)

  • qbe (compiler back-end, already available in Fedora)

  • binutils (for assembly and static linking)

  • gcc (for dynamic linking, it also works with other C compilers)

The Hare tool chain can target the x86_64, aarch64, and riscv64 architectures, and is configured to rely by default on gcc-<arch>-linux-gnu and binutils-<arch>-linux-gnu for cross compilation.

The hare source package includes the following:

  • hare (build driver, haredoc utility, and manuals)

  • hare-stdlib (standard library)

  • hare-rpm-macros (packaging utilities)

In addition, a hare-update package is provided to assist Hare developers dealing with breaking changes when a new Hare release is available, until the language and its standard library become stable.

For more information about Hare, see the upstream documentation and specification. A tutorial is also available on the official website.

Java

Release 43 makes java-25-openjdk available in Fedora, the latest LTS version released Sept. 2025.

The java-21-openjdk is still available in F43 and will continue to be in F44. It will be removed in F45.

In Fedora 43 both openjdk versions provide "java" equally. There is no "system" or "default" JDK anymore. Users can (and should) choose which version to use, and can mix and match Java versions for development and runtime. Several instances of a software, e.g. Tomcat, can execute with different Java versions. Conventionally, the most recent version will likely become the systemwide used default one, but there is no guarantee. Use alternatives --config java to select the version to be used systemwide by default.

Upgrading from release 42 with installed java-21-openjdk, just updates Java 21 to release 43. The upgrade does not automatically update to Java 25. The administrator must install these separately.

For more information about Java 25, see the JDK 25 Features and Release notes.

For technical details of this change, see the Change page.

TBB2022.2.0

The tbb package contains Intel’s oneAPI Threading Building Blocks, a library for breaking computations into parralel tasks. In Fedora 43, this package has been upgraded from version 2022.0.0 to version 2022.2.0.

Due to an ABI change, non-Fedora packages that use tbb will likely need to be rebuilt. Version 2022.2.0 is API-compatible with version 2022.0.0, so a simple rebuild should suffice.

Perl 5.42

Fedora 43 provides Perl 5.42.0, a new stable release that focuses on improving performance, refining existing features, and adding new experimental capabilities.

Core enhancements

  • New any and all Operators: Two new experimental keywords, any and all, are introduced for more efficient list processing. They’re designed to short-circuit, so they stop processing the list as soon as the result is known. They’re compiled directly into the core, making them faster than their counterparts from the List::Util module.

  • Lexical Methods: You can now declare private, lexical methods using the my method syntax. The new ->& operator allows you to call these methods, ensuring they’re only visible within their defined scope.

  • source::encoding Pragma: A new pragma is available to explicitly declare whether a source file is encoded in ASCII or UTF-8. This helps to catch encoding-related errors early during development.

  • Expanded CORE:: Namespace: Built-in functions like chdir and rand can now be safely used as first-class subroutine references. This gives you more flexibility when passing core functions as arguments.

  • :writer Field Attribute: When defining classes with use feature 'class', you can now use the :writer attribute on scalar fields to automatically generate setter accessors.

Reconsidered features

  • smartmatch and switch Reinstated: The switch and smartmatch (~~) features, which were previously scheduled for removal, have been granted an indefinite reprieve. They are now available, but you must enable them with a specific feature flag.

  • Apostrophe as Package Separator: The legacy use of a single apostrophe (`) as a package separator has been reinstated by default after community feedback. You can still control this behavior with a feature flag.

    • Other updates**

  • This release also includes performance improvements to the tr/// operator, updates to Unicode 16.0 support, and various bug fixes related to locale handling, goto, and eval.

For more detailed information, refer to the official perldelta for 5.42.0 documentation.

Maven 4

Maven 4 is a new major version of Maven after 15 years of Maven 3. It brings many improvements, but also breaking changes. Fedora 43 provides Maven 4 as the maven4 package, making it installable in parallel to Maven 3.

See the What’s new in Maven 4? post and the upstream docs for more details.

Idris 2

Idris 2 is a dependently typed practical functional programming language, now available in Fedora 43. It is a complete rewrite of Idris 1 (which was written in Haskell and is now deprecated) on top of a Scheme compiler.

For details, see the upstream documentation, including a list of changes compared to Idris 1 and an Idris 2 tutorial.

Rust

async-std is now deprecated

The async-std Rust crate is no longer maintained and is now considered deprecated in favor of the smol crate.

gtk3-rs, gtk-rs-core v0.18, and gtk4-rs v0.7 are now removed

The Rust bindings for GTK3 (and related libraries) were marked as deprecated in Fedora 43 due to lack of upstream maintenance. In Fedora 43, they are completely removed.

Debuginfod IMA verification

The debuginfod client tools used to auto-download debuginfo & source code into tools like gdb now cryptographically verify the integrity of the downloaded files from the Fedora debuginfod server. This setting is appropriate for normal Fedora koji-signed release/update RPMs. However if your workflow also involves unsigned flatpak RPMs (%dist ".fc#app#"), then you may need to manually remove ima:enforcing from your $DEBUGINFOD_URLS.

Free Pascal cross-compilers

Fedora Linux 43 ships with cross-compilation support for the Free Pascal Compiler, through several new packages. Users interested in cross-compiling for MS Windows should install the fpc-units-x86_64-win64 or fpc-units-i386-win32 packages. For cross-compiling for Linux to other architectures, install the appropraite fpc-units-$ARCH-linux package. Note that you may need to perform some extra steps if you want your cross-compiled Pascal programs to link against external libraries.