Выпуск системы сборки GNU Make 4.4

После почти трёх лет разработки состоялся релиз системы сборки GNU Make 4.4. Кроме исправления ошибок, в новой версии можно отметить следующие изменения:

  • Объявлены устаревшими платформы OS/2 (EMX), AmigaOS, Xenix и Cray, поддержка которых будет прекращена в следующем выпуске.
  • Повышены требования к сборочному окружению, для сборки GNU Gnulib теперь необходим компилятор, поддерживающий элементы из стандарта C99.
  • Добавлена специальная сборочная цель .WAIT, позволяющая приостановить запуск сборки определённых целей до того как будет завершена сборка других целей.
  • В специальной сборочной цели .NOTPARALLEL реализована возможность указания пререквизитов (файлов, необходимых для сборки цели) для последовательного запуска связанных с ними целей (как если бы между каждым пререквизитом был выставлен “.WAIT”).
  • Добавлена специальная сборочная цель .NOTINTERMEDIATE, отключающая поведение, связанное с использованием промежуточных целей (.INTERMEDIATE), для указанных файлов, файлов подпадающих под маску или всего makefile.
  • Реализована функция $(let …), позволяющая определять локальные переменные в пользовательских функциях.
  • Реализована функция $(intcmp …) для сравнения чисел.
  • При использовании опции “-l” (–load-average) при определении числа запускаемых работ теперь учитываются данные из файла /proc/loadavg о нагрузке на систему.
  • Добавлен опция “–shuffle” для перемешивания пререквизитов, что позволяет добиться недетерминированного поведения при распараллеленной сборке (например, для fuzzing тестирования корректности определения пререквизитов в makefile).
  • На системах с поддержкой mkfifo обеспечено использование нового метода взаимодействия с jobserver при параллельном выполнении работ, основанного на использовании именованных каналов. Для возвращения старого метода на основе неименованных каналов преложена опция “–jobserver-style=pipe”.
  • Расширено применение временных файлов в процессе работы (могут возникнуть проблемы при выставлении сборочной системой альтернативного каталога для временных файлов (TMPDIR) и удаления содержимого TMPDIR во время сборки).
Release. Ссылка here.