Após um ano de desenvolvimento aconteceu lançamento do gerenciador de pacotes RPM 4.16.0. O projeto RPM4 é desenvolvido pela Red Hat e é usado em distribuições como RHEL (incluindo projetos derivados CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e muitos outros. Equipe de desenvolvimento anteriormente independente desenvolvido projeto RPM5, que não está diretamente relacionado ao RPM4 e atualmente está abandonado (não atualizado desde 2010). Código do projeto distribuído por licenciado sob GPLv2 e LGPLv2.
Um novo backend foi implementado para armazenar bancos de dados no SGBD SQLite. Este back-end será usado no Fedora Linux 33 em vez de um backend baseado em BerkeleyDB.
Foi implementado um novo backend experimental para armazenamento de bancos de dados em BDB (Oracle Berkeley DB), operando em modo somente leitura. A implementação é escrita do zero e não usa código do backend BerkeleyDB legado, que foi descontinuado, mas ainda está incluído por padrão.
O back-end experimental do banco de dados baseado em LMDB foi removido.
O banco de dados backend baseado no armazenamento NDB foi declarado estável.
Adicionado suporte para macros e expressões "%if" operador tenar (%{expr:1==0?"yes":"no"}) e oferece um recurso integrado de comparação de versões ('%[v"3:1.2-1″ > v"2.0″]').
Foi implementado suporte para classificação de arquivos com base nos tipos MIME de seu conteúdo.
Uma nova versão da API de análise e comparação para C e Python foi proposta.
A paralelização da execução dos componentes brp-strip e test suite é garantida. Foi realizada a otimização da paralelização do processo de geração de pacotes.
Para o utilitário rpmdb adicionado opção “—salvagedb” para restaurar um banco de dados danificado (funciona apenas com o backend NDB).
Adicionadas novas macros %arm32, %arm64 e %riscv para detecção de arquitetura. Também foi adicionada uma macro integrada %{macrobody:...} para obter o conteúdo das macros.
É proibido usar palavras não separadas por aspas nas expressões, ou seja, em vez de 'a == b' agora você precisa escrever '"a" == "b"'.
O analisador de expressão implementa a sintaxe “%[...]” para executar uma expressão com expansão de macro (difere de “%{expr:...}” porque as macros são executadas primeiro).
Adicionado suporte para expansão curta de operadores lógicos e tenares em expressões ("%[0 && 1 / 0]" é tratado como 0 em vez de causar um erro devido à tentativa de divisão por zero).
Adicionado suporte para usar o operador lógico NOT em contextos arbitrários (!"%?foo").
Comportamento dos operadores "||" e "&&" é alinhado com Perl/Python/Ruby, ou seja, Em vez de retornar um valor booleano, agora retorna o último valor calculado (por exemplo, "%[2 || 3]" retornará 2).
Adicionada a capacidade de verificar formatos alternativos de assinaturas digitais e hashes.
Adicionado suporte para meta-dependências (Requires(meta): somepkg), que não afetam a ordem de instalação e remoção.
Adicionada opção "--rpmv3" ao rpmsign para forçar o uso de assinaturas digitais no formato RPM3.
Adicionada opção de instalação "--excludeartifacts" para ignorar a instalação de documentação, exemplos de arquivos de configuração e outros dados relacionados.
Suporte obsoleto para RPMv3 e back-ends de criptografia beecrypt e NSS.