Po prawie trzech latach prac nad rozwojem, wydano system budowy GNU Make 4.4. Oprócz poprawek błędów, w nowej wersji można zauważyć następujące zmiany:
- Ogłoszono przestarzałymi platformy OS/2 (EMX), AmigaOS, Xenix i Cray, których wsparcie zostanie zakończone w następnym wydaniu.
- Zwiększono wymagania dotyczące środowiska budowy, do kompilacji GNU Gnulib teraz wymagany jest kompilator obsługujący elementy ze standardu C99.
- Dodano specjalny cel budowy .WAIT, który pozwala wstrzymać uruchamianie budowy określonych celów do momentu zakończenia budowy innych celów.
- W specjalnym celu budowy .NOTPARALLEL wprowadzono możliwość określenia prerekwizytów (plików niezbędnych do budowy celu) dla sekwencyjnego uruchamiania powiązanych celów (jak gdyby między każdym prerekwizyt był ustawiony „.WAIT”).
- Dodano specjalny cel budowy .NOTINTERMEDIATE, który wyłącza zachowanie związane z używaniem cel pośrednich (.INTERMEDIATE) dla określonych plików, plików pasujących do maski lub całego makefile.
- Wprowadzono funkcję $(let …), która pozwala definiować lokalne zmienne w funkcjach użytkownika.
- Wprowadzono funkcję $(intcmp …) do porównywania liczb.
- Przy użyciu opcji „-l” (—load-average) przy określaniu liczby uruchamianych zadań teraz brane są pod uwagę dane z pliku /proc/loadavg o obciążeniu systemu.
- Dodano opcję „—shuffle” do mieszania prerekwizytów, co pozwala na osiągnięcie niedeterminowanego zachowania podczas równoległej budowy (na przykład dla fuzzing testowania poprawności definiowania prerekwizytów w makefile).
- Na systemach z obsługą mkfifo zapewniono nową metodę interakcji z jobserverem przy równoległym wykonywaniu zadań, opartą na użyciu nazwanych kanałów. Aby powrócić do starej metody opartej na nienaumerowanych kanałach, proponowana jest opcja „—jobserver-style=pipe”.
- Rozszerzono zastosowanie plików tymczasowych w trakcie pracy (mogą wystąpić problemy przy ustalaniu alternatywnego katalogu dla plików tymczasowych (TMPDIR) i usuwaniu zawartości TMPDIR podczas budowy).
Źródło: opennet.ru
