Dopo quasi tre anni di sviluppo, è stato rilasciato il sistema di build GNU Make 4.4. Oltre alla correzione di errori, nella nuova versione si possono notare le seguenti modifiche:
- Dichiarate obsoleti le piattaforme OS/2 (EMX), AmigaOS, Xenix e Cray, il cui supporto sarà interrotto nel prossimo rilascio.
- Aumentati i requisiti per l'ambiente di build: per compilare GNU Gnulib ora è necessario un compilatore che supporti elementi dello standard C99.
- Aggiunta una speciale target di build .WAIT, che consente di sospendere l'avvio della build di determinati target fino a quando non è completata la build di altri target.
- Nella speciale target di build .NOTPARALLEL è stata implementata la possibilità di specificare prerequisiti (file necessari per la build del target) per avviare in sequenza i target ad essi correlati (come se fosse stato impostato '.WAIT' tra ogni prerequisito).
- Aggiunta una speciale target di build .NOTINTERMEDIATE, che disabilita il comportamento relativo all'uso di target intermedi (.INTERMEDIATE) per i file specificati, file che corrispondono a un modello o per l'intero makefile.
- Implementata la funzione $(let …), che consente di definire variabili locali nelle funzioni personalizzate.
- È stata implementata la funzione $(intcmp …) per il confronto dei numeri.
- Utilizzando l'opzione «-l» (—load-average) per determinare il numero di lavori avviati, ora vengono considerate le informazioni nel file /proc/loadavg riguardanti il carico del sistema.
- È stata aggiunta l'opzione «—shuffle» per mescolare i prerequisiti, permettendo un comportamento non deterministico durante la compilazione parallela (ad esempio, per test di fuzzing sulla correttezza della determinazione dei prerequisiti nel makefile).
- Nei sistemi con supporto mkfifo è stato introdotto un nuovo metodo di interazione con il jobserver durante l'esecuzione parallela di lavori, basato sull'uso di canali nominati. Per tornare al metodo precedente basato su canali anonimi, è stata proposta l'opzione «—jobserver-style=pipe».
- È stata ampliata l'uso dei file temporanei durante l'esecuzione (possono verificarsi problemi se il sistema di compilazione imposta una directory alternativa per i file temporanei (TMPDIR) e rimuove il contenuto di TMPDIR durante la compilazione).
Fonte: opennet.ru
