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.
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.
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
llvmpackage is now built with PGO optimization, so users of its libraries and binaries should see some performance improvements. For example,clangshould 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.*tojakarta.*. 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.servlettojakarta.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.jsptojakarta.servlet.jsp. Added an option to raise aPropertyNotFoundExceptionwhen an EL expression contains an unknown identifier. -
Jakarta Expression Language 5.0: The Java package has changed from
javax.eltojakarta.el. The EL API now uses generics where appropriate. The deprecatedMethodExpression.isParmetersProvided()method has been removed from the API. -
Jakarta WebSocket 2.1: The Java package has changed from
javax.websockettojakarta.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.messagetojakarta.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.xmldefaults:conf/web.xmlsets 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.xmlor 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
%Dpattern 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,haredocutility, 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.
For detailed information, see the upstream release notes for TBB 2022.1.0 and TBB 2022.2.0.
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
anyandallOperators: Two new experimental keywords,anyandall, 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 theList::Utilmodule. -
Lexical Methods: You can now declare private, lexical methods using the
my methodsyntax. The new ->&operator allows you to call these methods, ensuring they’re only visible within their defined scope. -
source::encodingPragma: 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 likechdirandrandcan now be safely used as first-class subroutine references. This gives you more flexibility when passing core functions as arguments. -
:writerField Attribute: When defining classes withuse feature 'class', you can now use the:writerattribute on scalar fields to automatically generate setter accessors.
Reconsidered features
-
smartmatchandswitchReinstated: Theswitchandsmartmatch (~~)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, andeval.
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
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.
Want to help? Learn how to contribute to Fedora Docs ›