W wydaniu Fedora 41 zaproponowano przejście na domyślny menedżer pakietów DNF5. Początkowo planowano migrację na DNF5 w wydaniu Fedora 39, jednak opóźniona została z powodu niedostatecznej gotowości narzędzi. Mimo że pełen parytet funkcjonalności ze starą infrastrukturą nie został jeszcze osiągnięty, deweloperzy uważają, że dystrybucja jest gotowa do migracji, a brakujące funkcje można zrealizować później. Propozycja nie została jeszcze rozpatrzona przez komitet FESCo (Fedora Engineering Steering Committee), odpowiedzialny za część techniczną rozwoju dystrybucji Fedora. W przypadku przyjęcia propozycji pakiety dnf, libdnf i dnf-cutomatic zostaną zastąpione narzędziem DNF5 i nową biblioteką libdnf5, a dowiązanie symboliczne /usr/bin/dnf zacznie wskazywać na plik wykonywalny dnf5.
W swoim czasie DNF zastąpił w dystrybucji menedżer pakietów Yum, który był całkowicie napisany w języku Python. W DNF wymagające wydajności funkcje niskiego poziomu zostały przepisane i wyodrębnione do oddzielnych bibliotek C: hawkey, librepo, libsolv i libcomps, ale szkielet i komponenty wysokiego poziomu pozostały w języku Python. Projekt DNF5 ma na celu ujednolicenie istniejących niskopoziomowych bibliotek, przepisanie pozostałych komponentów zarządzających pakietami na język C++ oraz wyodrębnienie podstawowej funkcjonalności do oddzielnej biblioteki libdnf5 z stworzeniem wokół tej biblioteki opakowania do zachowania interfejsu API Python.
Użycie języka C++ zamiast Pythona pozwoliło na redukcję liczby zależności, zmniejszenie rozmiaru narzędzi oraz zwiększenie wydajności. Wyższa wydajność osiągana jest nie tylko dzięki kompilacji do kodu maszynowego, ale także poprzez ulepszenie realizacji tabeli transakcji, optymalizację ładowania z repozytoriów oraz restrukturyzację bazy danych (oddzielono bazy z stanem systemu i historią operacji). Narzędzie DNF5 jest wolne od powiązania z PackageKit, zamiast tego wdrożono nowy proces w tle DNF Daemon, który zastępuje funkcjonalność PackageKit i zapewnia interfejs do zarządzania pakietami i aktualizacjami w środowiskach graficznych.
Przebudowa umożliwiła również wprowadzenie pewnych usprawnień, które zwiększają komfort pracy z menedżerem pakietów. Na przykład, w nowym DNF wprowadzono bardziej przejrzystą informację o postępie operacji; dodano wsparcie dla lokalnych pakietów RPM do transakcji; umożliwiono wyświetlanie w raportach o przeprowadzonych transakcjach informacji generowanych przez skrypty zawarte w pakietach (scriplets); zaproponowano bardziej zaawansowany system autouzupełniania dla bash.
Źródło: opennet.ru
