Despois dun ano de desenvolvemento tivo lugar versión do xestor de paquetes RPM 4.16.0. O proxecto RPM4 é desenvolvido por Red Hat e úsase en distribucións como RHEL (incluíndo proxectos derivados CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e moitos outros. Equipo de desenvolvemento previamente independente desenvolvido proxecto RPM 5, que non está directamente relacionado con RPM4 e actualmente está abandonado (sen actualizar desde 2010). Código do proxecto distribuído por licenciado baixo GPLv2 e LGPLv2.
Implementouse un novo backend para almacenar bases de datos no DBMS SQLite. Este backend empregarase en Fedora Linux 33 en lugar dun backend baseado en BerkeleyDB.
Implementouse un novo backend experimental para almacenar bases de datos en BDB (Oracle Berkeley DB), que funciona en modo de só lectura. A implementación está escrita desde cero e non usa código do backend de BerkeleyDB herdado, que quedou en desuso pero aínda está incluído por defecto.
Eliminouse o backend de base de datos experimental baseado en LMDB.
A base de datos de fondo baseada no almacenamento NDB declarouse estable.
Engadido soporte para macros e expresións "%if". operador tenar (%{expr:1==0?"yes":"non"}) e ofrece unha función de comparación de versións integrada ('%[v"3:1.2-1″ > v"2.0″]').
Implementouse o soporte para clasificar ficheiros en función dos tipos MIME do seu contido.
Propúxose unha nova versión da API de análise e comparación para C e Python.
A paralelización da execución dos compoñentes de brp-strip e da suite de probas está garantida. Realizouse a optimización da paralelización do proceso de xeración de paquetes.
Para a utilidade rpmdb engadido opción "—salvagedb" para restaurar unha base de datos danada (funciona só co backend NDB).
Engadíronse novas macros %arm32, %arm64 e %riscv para a detección de arquitectura. Tamén engadiu unha macro integrada %{macrobody:...} para obter o contido das macros.
Está prohibido empregar palabras non separadas por comiñas nas expresións, é dicir. en lugar de 'a == b' agora cómpre escribir '"a" == "b"'.
O analizador de expresións implementa a sintaxe “%[...]” para executar unha expresión con expansión de macros (difire de “%{expr:...}” en que as macros execútanse primeiro).
Engadiuse soporte para a expansión curta dos operadores lóxicos e tenares nas expresións ("%[0 && 1 / 0]" trátase como 0 en lugar de provocar un erro debido ao intento de división por cero).
Engadido soporte para usar o operador lóxico NOT en contextos arbitrarios (!"%?foo").
Comportamento dos operadores "||". e "&&" está en liña con Perl/Python/Ruby, é dicir. En lugar de devolver un valor booleano, agora devolve o último valor calculado (por exemplo, "%[2 || 3]" devolverá 2).
Engadida a posibilidade de verificar formatos alternativos de sinaturas dixitais e hash.
Engadido soporte para metadependencias (Requires(meta): somepkg), que non afectan a orde de instalación e eliminación.
Engadida a opción "--rpmv3" a rpmsign para forzar o uso de sinaturas dixitais en formato RPM3.
Engadiuse a opción de instalación "--excludeartifacts" para omitir a instalación de documentación, ficheiros de configuración de exemplo e outros datos relacionados.
Compatibilidade obsoleta para RPMv3 e os backends criptográficos de beecrypt e NSS.