Ben Cotton, who holds the position of Fedora Program Manager, announced about the intention to translate Fedora Linux by default to the DNF5 package manager. In Fedora Linux 39, it is planned to replace DNF, Libdnf and DNF-Cutomatic packages with DNF5 tools and the new LibDNF5 library. The proposal has not yet been considered by the FESCO committee (Fedora Engineering Steering Committee), which is responsible for the technical part of the development of the Fedora distribution.
At one time, DNF replaced Yum, which was written entirely in Python. In DNF, low-level functions demanding on performance were rewritten and put into separate Hawkey, Librepo, Libsolv and Libcomps, but the frame and high-level components remained in Python. The DNF5 project is aimed at unification of the available low-level libraries, rewriting C ++ in Python components of package management components and the basic functionality of the basic functionality in a separate library Libdnf5 with the creation of a strain around this library to preserve the Python API.
The use of C ++ instead of Python will get rid of a large number of dependencies, reduce the size of the tools and increase performance. Higher productivity is achieved not only due to the use of compilation into the machine code, but also due to the improved implementation of the transaction table, optimizing loading from repositories and recruitment restructuring (bases with the state of the system and the history of operations are divided). The DNF5 tools are spared from the binding to Packagekit, instead of which the new background process of DNF Daemon is involved, replacing Packagekit functionality and provides an interface for controlling packages and updates in graphic environment.
Processing will also make it possible to implement some improvements that increase the convenience of working with a package manager. For example, in the new DNF, a more visual indication of the progress of operations is implemented; Added support for the use of local RPM packages for transactions; Added the possibility of showing in reports on the transactions of information issued by scripts built into packages (Scriplets); A more advanced input system for input for bash.