После трёх лет разработки представлен (http://lists.gnu.org/archive/html/info-gnu/2013-10/msg00006....) релиз системы сборки GNU Make 4.0 (http://www.gnu.org/software/make/). Наиболее существенным новшеством является опциональная поддержка языка GNU Guile (http://www.gnu.org/software/guile/) (одна из реализаций языка Scheme) для определения дополнительных функций в make-файлах. Проверить в скрипте поддержку Guile можно путём оценки наличия ключевого слова guile в переменной ".FEATURES". При наличии поддержки Guile, появляется возможность загрузки/определения Guile-скриптов с реализацией дополнительных функций и их использование в сценарии сборки.Из других изменений отмечается:
- Новый оператор "!=" для вызова внешних shell-команд, выступающий в качестве альтернативы функции $(shell ...) и реализованный для совместимости с BSD make. Например, вместо "var := $(shell echo *.c)" можно написать "var != echo *.c". Появление нового оператора может привести к нарушению обратной совместимости, так как присвоение значений переменным оканчивающимся на символ "!" теперь может интерпретироваться как вызов shell-команд. Чтобы избежать подобного поведения следует использовать пробел для явного отделения имени переменной ("var! = value" вместо "var!= value");
- Новый оператор присвоения "::=", определённый в стандарте POSIX 2012 и идентичный ранее доступному оператору ":=";- Новая функция $(file ...) для организации записи в файл;
- Новая опция командной строки "--output-sync" ("-O"), включающая режим группировки вывода по целям и рекурсивным вызовам make, что позволяет обеспечить наглядность вывода при сборке с распараллеливанием в несколько потоков (вывод разных экземпляров make не будет смешиваться);
- Реализация режима трассировки, активируемого через указание опции "--trace". При включении режима выводятся полные сведения о всех шагах сборки с указанием файла и номера строки. Данные выводятся даже, если указана переменная .SILENT или применён префикс "@";
- В опцию "--debug" добавлена поддержка флага "n" (none) для принудительного отключения всех отладочных настроек;- Сервер управления работами (jobserver), используемый для оптимизации выполнения параллельной сборки проектов в несколько потоков, адаптирован для работы на платформе Windows. Для Windows также обеспечена поддержка специальной сборочной цели .ONESHELL (http://www.gnu.org/software/make/manual/make.html#Execution);
- Указание опций "-r" и "-R" в переменной MAKEFLAGS внутри make-файла теперь приводит к удалению всех встроенных правил и переменных.
URL: http://lists.gnu.org/archive/html/info-gnu/2013-10/msg00006....
Новость: http://www.opennet.me/opennews/art.shtml?num=38120
В арчике уже в тестинге.
будто в арчике есть что то кроме тестинга
Ты не поверишь…
слишком толсто
Что за воспалённый мозг придумал использовать "!=" в каком-то другом значении, кроме как "не-равно"?
Мозг какого-то bsdуна:
>New feature: "!=" shell assignment operator as an alternative to the
> $(shell ...) function. Implemented for compatibility with BSD makefiles.
Кто вам сказал, что это "не-равно"? Это же "факториал равен". А вообще кто к чему привык.
> "факториал равен"факториал чего?
той переменной, что слева от восклицательного знака:var != 120
Сразу же понятно, что это эквивалент var = 5. На положительные вещественные числа != естественным образом обобщается с помощью Г-функции.
и во скольких языках программирования есть такая интерпретация восклицательного знака?
Тогда что такое
var != 11 ?
Как я уже и писал, для нецелых var оператор тривиально обобщается с помощью Г-функции:http://www.wolframalpha.com/input/?i=gamma%28x%2B1...
Выбирать, разумеется, нужно положительный корень. Для отрицательных чисел, думаю, лучше "!=" не определять.
В данном случае, он эквивалентен
var = 3.45964745355628;-)
факториал от lvalue, например // бред не правда ли?
или как используется в bash`t: http://unix.stackexchange.com/questions/3747/understanding-t...
если у вас "!" ассоциируется только с оператором нет, то у меня для вас грустные новости - вы семантикофоб
> Это же "факториал равен".Тогда нужно писать «=!»:
120 =! 5
1
43 =! 13
0
!n это субфакториал, и !5 = 44
Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)
> Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)COMBINE_FLAGS="-O0, -O1, -O2, -O3, -Ofast, -ffast-math, -fexcess-precision=fast -fno-strict-aliasing -ftree-vectorize, -funroll-all-loops,...."
Вариантов перестановки этих флагов будет аккурат факториал от sizeof(COMBINE_FLAGS)
А вот и покусанный упомянутым бздуном.
Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.
> Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.Дык, количество символов на клавиатуре не очень большое.
cout \rightarrow x;
было бы лучше, если бы символ \rightarrow можно было бы ввести более вменяемым способом.
Да уж, С++ такой мощный язык, что ему даже символов на клавиатуре не хватает...
> Новая опция командной строки "--output-sync" ("-O"), включающая режим группировки вывода по целям и рекурсивным вызовам makeУра! Наконец-то!
> Реализация режима трассировки, активируемого через указание опции "--trace".Очень радует!
>Наиболее существенным новшеством является опциональная поддержка языка GNU Guile (одна из реализаций языка Scheme)
Что поддержка опциональная, это хорошо. Но боюсь что скоро начнется злоупотребление этим и пакеты, которые прекрасно собирались без Guile, начнут ее требовать.
> Что поддержка опциональная, это хорошо. Но боюсь что скоро начнется злоупотребление
> этим и пакеты, которые прекрасно собирались без Guile, начнут ее требовать.А что в этом страшного? guile -- небольшая библиотека, которая может не очень популярна, но, тем не менее, используется в ряде программ. Как минимум, сходу в голову приходят gimp и lilypond. Может быть, конечно, вы не правите фотки, может быть вы не набираете/компилируете ноты/табы, но и тем не менее, с большой вероятностью guile уже установлен в вашей системе как депенданс к чему-нибудь ещё.
Или речь идёт о сервере? Но разве вы на сервере собираете ПО? Не на выделенной для этих целей железке?
gimp-2.8.4, собран руками, guile не требовал.Просто мне не нравится, когда приложения тянут за собой пакеты, которые мне ненужны и без которых приложение могло бы нормально работать (d-bus, systemd, pulsaudio, udev и т.д.). Когда они опциональны - ничего не имею против, но когда я не могу без них собрать программу, это как минимум раздражает.
Весной в gtk+3 перевели atk-bridge из опции в обязательную зависимость и не потому, что без него никак, а просто 'им так тестировать легче' ибо меньше вариантов сборки (и как только linux-kernel с миллионами вариантов сборки тестируют). А потом смотришь на современный калькулятор и десятилетней давности - вроде все тоже, а памяти ест в 100 раз больше.
Мир gentoo ждёт тебя, юный падаван.