Após quase três anos de desenvolvimento, foi lançado o sistema de construção GNU Make 4.4. Além da correção de erros, a nova versão traz as seguintes mudanças:
- As plataformas OS/2 (EMX), AmigaOS, Xenix e Cray foram declaradas obsoletas, e o suporte a elas será encerrado na próxima versão.
- Os requisitos para o ambiente de construção foram elevados; agora é necessário um compilador que suporte elementos do padrão C99 para compilar o GNU Gnulib.
- Adicionada uma nova meta de construção .WAIT, que permite suspender o início da construção de metas específicas até que a construção de outras metas seja concluída.
- Na nova meta de construção .NOTPARALLEL, tornou-se possível especificar pré-requisitos (arquivos necessários para a construção da meta) para a execução sequencial das metas relacionadas (como se houvesse um «.WAIT» entre cada pré-requisito).
- Adicionada uma nova meta de construção .NOTINTERMEDIATE, que desabilita o comportamento relacionado ao uso de metas intermediárias (.INTERMEDIATE) para arquivos especificados, arquivos que se enquadram em um padrão ou todo o makefile.
- Implementada a função $(let …), que permite definir variáveis locais em funções do usuário.
- Implementada a função $(intcmp …) para comparação de números.
- Ao utilizar a opção «-l» (—load-average) para determinar o número de trabalhos em execução, agora é levado em conta os dados do arquivo /proc/loadavg sobre a carga do sistema.
- Adicionada a opção «—shuffle» para embaralhar os pré-requisitos, permitindo um comportamento indeterminado durante a construção paralela (por exemplo, para testes de fuzzing para verificar corretamente a definição dos pré-requisitos no makefile).
- Em sistemas que suportam mkfifo, foi implementado um novo método de interação com o jobserver durante a execução paralela de trabalhos, baseado no uso de canais nomeados. Para retornar ao antigo método baseado em canais não nomeados, foi proposta a opção «—jobserver-style=pipe».
- Ampliado o uso de arquivos temporários durante o funcionamento (podem surgir problemas ao definir um diretório alternativo para arquivos temporários (TMPDIR) e remover o conteúdo do TMPDIR durante a construção).
Fonte: opennet.ru
