URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 92106
[ Назад ]

Исходное сообщение
"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guile"

Отправлено opennews , 09-Окт-13 21:57 
После трёх лет разработки представлен (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.ru/opennews/art.shtml?num=38120


Содержание

Сообщения в этом обсуждении
"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено zhenya_k , 09-Окт-13 21:57 
В арчике уже в тестинге.

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 09-Окт-13 23:23 
будто в арчике есть что то кроме тестинга

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 10-Окт-13 09:25 
Ты не поверишь…

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 10-Окт-13 11:54 
слишком толсто

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 09-Окт-13 22:02 
Что за воспалённый мозг придумал использовать "!=" в каком-то другом значении, кроме как "не-равно"?

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Антон , 09-Окт-13 22:17 
Мозг какого-то bsdуна:
>New feature: "!=" shell assignment operator as an alternative to the
>  $(shell ...) function.  Implemented for compatibility with BSD makefiles.

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 09-Окт-13 22:28 
Кто вам сказал, что это "не-равно"? Это же "факториал равен". А вообще кто к чему привык.

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено омнономнимус , 09-Окт-13 22:33 
> "факториал равен"

факториал чего?


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Vkni , 09-Окт-13 22:59 
той переменной, что слева от восклицательного знака:

var != 120

Сразу же понятно, что это эквивалент var = 5. На положительные вещественные числа != естественным образом обобщается с помощью Г-функции.


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено омнономнимус , 09-Окт-13 23:04 
и во скольких языках программирования есть такая интерпретация восклицательного знака?

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 09-Окт-13 23:08 
Тогда что такое
var != 11 ?

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Vkni , 09-Окт-13 23:46 
Как я уже и писал, для нецелых var оператор тривиально обобщается с помощью Г-функции:

http://www.wolframalpha.com/input/?i=gamma%28x%2B1...

Выбирать, разумеется, нужно положительный корень. Для отрицательных чисел, думаю, лучше  "!=" не определять.

В данном случае, он эквивалентен
var = 3.45964745355628

;-)


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено nib , 09-Окт-13 23:38 
факториал от lvalue, например // бред не правда ли?
или как используется в bash`t: http://unix.stackexchange.com/questions/3747/understanding-t...
если у вас "!" ассоциируется только с оператором нет, то у меня для вас грустные новости - вы семантикофоб

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 10-Окт-13 00:56 
> Это же "факториал равен".

Тогда нужно писать «=!»:

 120 =! 5
1
 43 =! 13
0


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено pavlinux , 10-Окт-13 01:32 
!n это субфакториал, и !5 = 44

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 10-Окт-13 02:15 
Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено pavlinux , 11-Окт-13 03:55 
> Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)

COMBINE_FLAGS="-O0, -O1, -O2, -O3, -Ofast, -ffast-math, -fexcess-precision=fast -fno-strict-aliasing -ftree-vectorize, -funroll-all-loops,...."

Вариантов перестановки этих флагов будет аккурат факториал от sizeof(COMBINE_FLAGS)


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Аноним , 10-Окт-13 02:38 
А вот и покусанный упомянутым бздуном.

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено dq0s4y71 , 10-Окт-13 13:51 
Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено yet another anonymous , 10-Окт-13 14:17 
> Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.

Дык, количество символов на клавиатуре не очень большое.

cout \rightarrow x;

было бы лучше, если бы символ \rightarrow можно было бы ввести более вменяемым способом.


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено dq0s4y71 , 10-Окт-13 16:05 
Да уж, С++ такой мощный язык, что ему даже символов на клавиатуре не хватает...

"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Led , 10-Окт-13 00:10 
> Новая опция командной строки "--output-sync" ("-O"), включающая режим группировки вывода по целям и рекурсивным вызовам make

Ура! Наконец-то!


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Mihail Zenkov , 10-Окт-13 16:38 
> Реализация режима трассировки, активируемого через указание опции "--trace".

Очень радует!

>Наиболее существенным новшеством является опциональная поддержка языка GNU Guile (одна из реализаций языка Scheme)

Что поддержка опциональная, это хорошо. Но боюсь что скоро начнется злоупотребление этим и пакеты, которые прекрасно собирались без Guile, начнут ее требовать.


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Ordu , 11-Окт-13 00:43 
> Что поддержка опциональная, это хорошо. Но боюсь что скоро начнется злоупотребление
> этим и пакеты, которые прекрасно собирались без Guile, начнут ее требовать.

А что в этом страшного? guile -- небольшая библиотека, которая может не очень популярна, но, тем не менее, используется в ряде программ. Как минимум, сходу в голову приходят gimp и lilypond. Может быть, конечно, вы не правите фотки, может быть вы не набираете/компилируете ноты/табы, но и тем не менее, с большой вероятностью guile уже установлен в вашей системе как депенданс к чему-нибудь ещё.
Или речь идёт о сервере? Но разве вы на сервере собираете ПО? Не на выделенной для этих целей железке?


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено Mihail Zenkov , 11-Окт-13 05:38 
gimp-2.8.4, собран руками, guile не требовал.

Просто мне не нравится, когда приложения тянут за собой пакеты, которые мне ненужны  и без которых приложение могло бы нормально работать (d-bus, systemd, pulsaudio, udev и т.д.). Когда они опциональны - ничего не имею против, но когда я не могу без них собрать программу, это как минимум раздражает.

Весной в gtk+3 перевели atk-bridge из опции в обязательную зависимость и не потому, что без него никак, а просто 'им так тестировать легче' ибо меньше вариантов сборки (и как только linux-kernel с миллионами вариантов сборки тестируют). А потом смотришь на современный калькулятор и десятилетней давности  - вроде все тоже, а памяти ест в 100 раз больше.


"Релиз GNU Make 4.0 с поддержкой расширений на языке GNU Guil..."
Отправлено A.N. Onim , 11-Окт-13 11:02 
Мир gentoo ждёт тебя, юный падаван.