The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

09.10.2013 20:00

После трёх лет разработки представлен релиз системы сборки GNU Make 4.0. Наиболее существенным новшеством является опциональная поддержка языка GNU 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;
  • Указание опций "-r" и "-R" в переменной MAKEFLAGS внутри make-файла теперь приводит к удалению всех встроенных правил и переменных.


  1. Главная ссылка к новости (http://lists.gnu.org/archive/h...)
Лицензия: CC-BY
Тип: Программы
Ключевые слова: make
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, zhenya_k (?), 21:57, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    В арчике уже в тестинге.
     
     
  • 2.9, Аноним (-), 23:23, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +14 +/
    будто в арчике есть что то кроме тестинга
     
     
  • 3.19, Аноним (-), 09:25, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты не поверишь…
     
  • 3.20, Аноним (-), 11:54, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    слишком толсто
     

  • 1.2, Аноним (-), 22:02, 09/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Что за воспалённый мозг придумал использовать "!=" в каком-то другом значении, кроме как "не-равно"?
     
     
  • 2.3, Антон (??), 22:17, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мозг какого-то bsdуна:
    >New feature: "!=" shell assignment operator as an alternative to the
    >  $(shell ...) function.  Implemented for compatibility with BSD makefiles.
     
  • 2.4, Аноним (-), 22:28, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Кто вам сказал, что это "не-равно"? Это же "факториал равен". А вообще кто к чему привык.
     
     
  • 3.5, омнономнимус (?), 22:33, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > "факториал равен"

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

     
     
  • 4.6, Vkni (ok), 22:59, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +8 +/
    той переменной, что слева от восклицательного знака:

    var != 120

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

     
     
  • 5.7, омнономнимус (?), 23:04, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    и во скольких языках программирования есть такая интерпретация восклицательного знака?
     
  • 5.8, Аноним (-), 23:08, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда что такое
    var != 11 ?
     
     
  • 6.11, Vkni (ok), 23:46, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как я уже и писал, для нецелых var оператор тривиально обобщается с помощью Г-функции:

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

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

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

    ;-)

     
  • 4.10, nib (?), 23:38, 09/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    факториал от lvalue, например // бред не правда ли?
    или как используется в bash't: http://unix.stackexchange.com/questions/3747/understanding-the-exclamation-ma
    если у вас "!" ассоциируется только с оператором нет, то у меня для вас грустные новости - вы семантикофоб
     
  • 3.13, Аноним (-), 00:56, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Это же "факториал равен".

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

     120 =! 5
    1
     43 =! 13
    0

     
     
  • 4.14, pavlinux (ok), 01:32, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    !n это субфакториал, и !5 = 44
     
  • 3.16, Аноним (-), 02:15, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)
     
     
  • 4.26, pavlinux (ok), 03:55, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, для Makefile'ов вычисление факториала, безусловно, очень актуально:)

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

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

     
  • 3.18, Аноним (-), 02:38, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А вот и покусанный упомянутым бздуном.
     
  • 2.21, dq0s4y71 (ok), 13:51, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.
     
     
  • 3.22, yet another anonymous (?), 14:17, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Тот же воспалённый мозг придумал использовать оператор сдвига в качестве оператора вывода в С++.

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

    cout \rightarrow x;

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

     
     
  • 4.23, dq0s4y71 (ok), 16:05, 10/10/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да уж, С++ такой мощный язык, что ему даже символов на клавиатуре не хватает...
     

  • 1.12, Led (ok), 00:10, 10/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Новая опция командной строки "--output-sync" ("-O"), включающая режим группировки вывода по целям и рекурсивным вызовам make

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

     
  • 1.24, Mihail Zenkov (ok), 16:38, 10/10/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Реализация режима трассировки, активируемого через указание опции "--trace".

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

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

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

     
     
  • 2.25, Ordu (ok), 00:43, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Что поддержка опциональная, это хорошо. Но боюсь что скоро начнется злоупотребление
    > этим и пакеты, которые прекрасно собирались без Guile, начнут ее требовать.

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

     
     
  • 3.27, Mihail Zenkov (ok), 05:38, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    gimp-2.8.4, собран руками, guile не требовал.

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

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

     
     
  • 4.28, A.N. Onim (?), 11:02, 11/10/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мир gentoo ждёт тебя, юный падаван.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру