Perceived deficiencies of yum (which DNF is intended to address) include poor performance, high memory usage, and the slowness of its iterative dependency resolution.[14] DNF uses libsolv, an external dependency resolver.[14]
DNF performs package management tasks on top of RPM, and supporting libraries.
DNF was originally written in Python, but as of 2016[update] efforts were under way to port it to C and move most functionality from Python code into the new libdnf library.[15] In 2018, the DNF team announced the decision to move libdnf from C to C++.[16][17] libdnf is already used by PackageKit, a Linux distribution-agnostic package system abstraction library, even though the library does not have most of DNF's features.[18]
Meanwhile, DNF5 is gearing up for an official launch in Fedora Linux 41. This versatile C++ package manager for RPM packages, modules, and comps groups uses libdnf and libsolv, supports Python 3, and is accessible in Fedora 38+.[19]
^Mach, Daniel; Mracek, Jaroslav (22 March 2018). "Announcing DNF 3 development". DNF: A Blog of The DNF Team. Archived from the original on September 18, 2018. Retrieved 8 August 2023.