Состоялся первый значительный релиз goredo - реализации системы сборки redo, предложенной Дэниелем Бернштейном (DJB) в качестве замены утилите Make. Goredo написан на языке Go и распространяются под лицензией GPLv3...Подробнее: https://www.opennet.me/opennews/art.shtml?num=54429
Столько лет существует Make - всех всё устраивало. Сейчас вдруг нашли в нём фатальный недостаток
А что хорошего в генерации мейков разными способами (configure, cmake, qmake, etc) вместо нормальной сборочной системы?
looooool , читаешь опеннет и будто телевизер смотришь
А вам не приходил в голову вопрос - почему все эти тулзы генерят мейкфайл, вместо того чтобы самим быть "нормальной сборочной системой"?
Потому как https://ru.wikipedia.org/wiki/%D0%A4%D0%...и вот только не надо вещать, что GNU это не UNIX
В каждой софтине так или иначе есть фатальные недостатки.
Просто тут есть еще одно продтверждение общего закона рычага - выигрывая в чем-то одном - неизбежно проигрываешь в чем-то другом
Фатальные недостатки есть в первую очередь во всех головах, что заняты их беспрестанным поиском.
Проверь может быть ты умер?
> Проверь может быть ты умер?Или научился бороться с NIH синдромом уже наконец.
> Сейчас вдруг нашли в нём фатальный недостатокЭтому "сейчас" 18 лет скоро будет.
https://web.archive.org/web/20031222092229/https://cr.yp.to/...
Ну если за столько лет не стало общепринятым - можно забить и забыть
Вот те раз. Забудь тогда электричество. Первые полвека оно было уделом всяких ученых фриков.
Как будет, тогда поговорим)
К разработке Берштейна стоило бы присмотреться. Хакер в первоначальном смысле.
Столько лет на лошадях ездили - всех всё устраивало. Сейчас вдруг нашли в них фатальный недостаток
В случае с лошадьми и автомобилями всё было очевидно. А вот фатальные недостатки обычно почему-то находят в менее очевидных вещах.
> В случае с лошадьми и автомобилями всё было очевидно.Почитай историю автомобиля. Автомобили собирали ещё в XIX веке. Но только в первой половине XX они начали вытеснять лошадей. И то с огромными проблемами, вплоть до законодательной необходимости человека с флагом, идущего перед автомобилем и отгоняющего от машины пешеходов. Там всё было очень забавно до тех пор, пока не пришёл Форд и не создал автомобильный рынок. Очевидность того, что автомобиль лучше, пришла в результате деятельности Форда. То есть не наоборот: нельзя сказать, что Форд достиг успеха, потому что всем (большинству?) было очевидно, что автомобиль лучше.
Очевидность идеи -- это не свойство идеи, это свойство психики. Это очевидная идея, но почему-то про неё постоянно забывают.
В отличие от хипстеров с Go автор оригинала даже может обосновать получше чем nih.
> Столько лет на лошадях ездили - всех всё устраивало. Сейчас вдруг нашли
> в них фатальный недостатокТак и DJB'шное крипто существовало лет наверное 10-15. А в народ более-менее пошло только недавно. Когда либы адаптировали, софт переписали, а для начала прочухали что вообще так можно было - гугл, видите ли, в маркетинг этого не вкладывался изначально. Пока не понял что так серверов для рюхания TLS в 10 раз меньше можно ставить. Вот тогда дошло, конечно.
>фатальный недостатокTHey need more gore!
И какой смысл переписывать с си на go? Наоборот с go на си переписывают, потому что на go производительность не удовлетворяет.
<тут должно быть заклинание призыва Ынтырпразных растофанатиков>
cast warning: "!!Это заклинание не подействует ни на кого!!"
Производительность между C и Go в данном случае не должна быть заметна, а вот между Go и Python очевидна (особенно в многопоточности, привет, GIL). Реализация redo, которая больше всего наполнена фичами (и, наверное, самая популярная) написана именно на Python. Автор же этой новости написал версию на более производительном языке, реализовав самые приятные вкусности.
А что, есть спецификации на этот ваш redo и lex-yacc файлы с граматикой?
какая, нафиг, грамматика? это, по сути, шелл-скрипты с парой дополнительных команд
Грамматика есть у любого языка, насколько бы простым он не был. Этот же redo как-то читает и парсит эти скрипты, значит должен быть формальный синтаксис. Если есть парсер, значит есть формальный синтаксис. По другому не бывает.
Загвоздка только в том, что redo никак не парсит скрипты (и не факт что это скрипты). Он их только запускает. А его только вызывают передавая несколько аргументов.
И какой смысл переписывать с си на go?Что б маинтейнеров найти.
А то сейчас все сишники бегают по интеренту и тролят растоманов.
Даже линукс испытывает проблемы с маинтейнерами.
Goферы скорее flatpack/snap/docker предложат использовать, вместо того, чтобы нативный пакет сопровождать.
У go есть встроенная система учёта зависимостей и сборки, которая и исходники из удалённого репозитория скачает и соберёт всё автоматом. Так что всё мимо.О достоинствах и недостатках flatpack и snap ещё можно порассуждать, а вот docker использует тот же народ, который раньше использовал cpan/perlbrew, pip/virtualenv, gem/bundler. Собирать из пакетов языка пакеты для операционной системы - не их метод. Надо придумать свой велосипед с виртуальным окружением, в котором создать помойку, отдельную от системы. В эту помойку таскать раз и навсегда зафиксированные версии пакетов с дырками для своего сверхценного приложения. Раньше туда интерпретатор с пакетами-зависимостями таскали, а теперь ещё и элементы операционной системы таскают. Ну и что, что получается избыточно и с дырами, зато быстро пересобрать можно!
> И какой смысл переписывать с си на go?Вебмакаки си не знают. К тому же без бинаря на 10 метров - программа выглядит несолидно. А когда вы качаете весь интернет чтобы сбилдить эту штуку, вы понимаете что это серьезный энтерпрайз а не васькины потуги програмизма.
> 1.0.0Доведите сначала до ума, от детских болячек избавьтесь, потом уже соревнуйтесь со зрелой make, концептуально разрабатывавшейся в других условиях.
Ну а там, если выживет и не превратится в очередную ползаброшенную proof-of-concept - можно будет и потыкать в своих сценариях.
>> очень прост в реализации: может быть реализован в 100 SLoC на POSIX shell или 1 kLoC на чистом C,этот пункт позволяет надеяться, детские болячки вылечат быстро, к тому же не первая реализация
вопрос скорее, если этот redo такой хороший, чего раньше не взлетел
Внутри тесты от других реализаций. Даёт понять, что детские болячки или отсутствуют, или хорошо спрятаны.
ну вообще сам по себе redo очень стар.
> ну вообще сам по себе redo очень стар.Не путай этап жизни программы с астрономическим временем с момента написания. Написанная 10 лет назад библиотека версии 0.0.2 так и остается проектом младенцем с кучей детских болезней.
Ну и напоследок вопрос: если он так стар и, допустим, уже избавлен от детских болячек софта, то почему он не потеснил собой писанный вообще для других условий разработки make? Хотя бы на маргинальных аудиториях, как тот же musl теснит glibc
потому что они не сопоставимы. redo изначально маргинальный.
> потому что они не сопоставимы. redo изначально маргинальный.Учитывая что он даже тип шелла не требует - будут дикие проблемы с портабельностью. Вколотит в нем юзер винды свой cmd.exe - и что хотите то и делайте. Wine блин ставьте для ребилда вон той мелкоты, если там клон cmd.exe есть. А любитель zsh сделает троллфэйс и вы почешете репу где его такой брать под винду... может даже и бывает, но вы узнаете много нового. А точно этого хотели?
>> потому что они не сопоставимы. redo изначально маргинальный.
> Учитывая что он даже тип шелла не требует - будут дикие проблемы
> с портабельностью. Вколотит в нем юзер винды свой cmd.exe - и
> что хотите то и делайте. Wine блин ставьте для ребилда вон
> той мелкоты, если там клон cmd.exe есть. А любитель zsh сделает
> троллфэйс и вы почешете репу где его такой брать под винду...
> может даже и бывает, но вы узнаете много нового. А точно
> этого хотели?nixpkg, bootstrap компиляторов и далее соберётся по дев-зависимостям любой cmd.exe под любую Haiku через любой wine/xen
> nixpkg, bootstrap компиляторов и далее соберётся по дев-зависимостям любой cmd.exe под
> любую Haiku через любой wine/xenЯ от всего этого страшно далек и качать эти полинтернета чтобы билдануть мелкую прожку мне, извините, не в кассу. И сильно удобнее если оно предположит что у меня некий *nix shell.
> Redo решает фундаментальные проблемы и устраняет недостатки Make, такие как:
> ...
> невозможность иметь цели с пробелами в именах.Всю жизнь мечтал.
Интересно, а как там с поддержкой эмодзи в именах?
Полагаю, что никак, Бернштейн в распитии смузи замечен не был.
> Полагаю, что никак, Бернштейн в распитии смузи замечен не был.Скорее всего ровно наоборо: он настоящий хакер и его программам скорее всего пофиг что там, покуда это лезет в лимиты файловой системы.
Получится очередная жесть как в обычной линуксовой системе сборки,
в зависимостях всех бинарные пакеты системы: awk,sed, python, make, perl, grep, abvgdshell
Статически слинкуй и носи всегда с собой. Или положи в контейнер на любой вкус хоть в аппимадж каждую тулзу. Они все равно только для сборки нужны, а не как демоны висят так что на оперативу можно не смотреть.
Отлично, но получается адская мультиплатформенность сразу из коробки. А make он и в африке make
> Статически слинкуй и носи всегда с собой. Или положи в контейнер на любой вкусА, это стеб такой молодежный, объясняй хоть что это шуткаюмор, некоторые вон подумали что ты дибил.
> Статически слинкуй и носи всегда с собой.Сборка hello world вон той жавой с gradle - это так по гугловски. А, еще и питон поставьте на всякий случай. Нет-нет, ваша версия не катит, нужна 3.7.11.199.18 - и никак иначе. А если не оно - сами и дебажьте что там у вас сломалось.
Потом, правда, народ приходит к деву - "ты уху ел? это в 20 раз проще собрать gcc file.c -o program" чем твоими мегатулсами. Дев чешет репу, бурчит "ах, я забыл что мы не захватили мир" и пишет ... Makefile :D
Пробовал. Идея может быть и интересная, но на практике (реализации) возникает очень много вопросов. Например: отдельный каталог для сборки, чтобы не сорить в исходниках.
Чем это плохо? С виду удобно, что есть исходники, а есть так сказать бинарники. И между собой оно не перемешивается.
>> отдельный каталог сборки
> Чем это плохо?Это был вопрос к этой идее системы сборки. Не очень-то просто реализовать это в этой системе сборки.
Также "суффиксные шаблоны" в виде файлов для зависимостей. Что если я хочу не суффиксные шаблоны, а префиксные или регексы? Также не пришей к ноге аргумент "$2".
пробовал запилить на этом redo систему сборки для довольно большого проекта.Таки да, работает. И все описанные в статье преимущества сразу видны. Однако приходится много писать на шелле, а это мало кто умеет. Особенно чтобы получалось что-то читаемое.
В общем интересная штука, но сильно не для всех.
Немного неправда. Писать на шелле не обязательно. goredo умеет запускать любые исполняемые файлы. Например, можно впихнуть исполнение на Python (но это чисто для примера):Файл hello.do:
#!/usr/bin/env python
print("Hello world from Python!")Тогда после запуска `redo hello` в файле "hello" будет лежать приветствие от змей.
И добро пожаловать в депенденси хел. Начинаю понимать преимущества системд над вот этим вот всем.
Любопытства ради, это какие такие преимущества у systemd над make и redo?
Уау, Лёня уже сделал систему сборки systemd-build?
> Уау, Лёня уже сделал систему сборки systemd-build?А разве каноническая форма не systemd-buildd? Заодно можно вместо майнинга на юзерах билдниг делать. Можно на билдфермах сэкономить.
проблема в том, что redo, как и make, ориентировано на сборочные окружения с минимумом зависимостей. Иначе в нем нет никакого смысла - можно использовать cmake, meson и т.п. Так что всякие питоны сразу отпадают, а если писать сборочные сценарии на компиляемых языках, то их опять же придется чем-то собирать. Вот и получается, что шелл - на практике единственный вариант.Больше того, там придется писать не простенькие скрипты "запусти то, а потом запусти это", а довольно сложные портянки с разбором строк, т.к. redo нельзя конфигурировать с помощью коммандлайн аргументов или переменных окружения.
> приходится много писать на шелле, а это мало кто умеет.Смотря что писать приходится. Запустить программу, потом ещё запустить программу, потом опять запустить команду... тут shell идеален.
Когда начинается - из пятой строки файла вырезать кусок, экранировать всякие пробелы и кавычки и засунуть в другой файл... вот тут начинается ад и израиль.
> DJB
> на языке GoИ этот туда же... Во что теперь верить? Куды бечь?
*ушёл вешаца*
>> DJB
>> на языке Go
>И этот туда же... Во что теперь верить? Куды бечь?
>*ушёл вешаца*Oтcтaвить пaнику, INHается - гигант мыcли пpoсто расширяет пopтфолиo.
Делается ставка, что следующее {по,из}дeлие бyдeт на Rust
> следующее {по,из}дeлие бyдeт на Rustдык он натурaл.
>дык он натурaл.Думаются что титан, показал что держит руку на пульсе времени..:)
> И этот туда же... Во что теперь верить? Куды бечь?
> *ушёл вешаца*Не спеши, это просто ошибка молодости. 1.0.0 так и помрет
читать умеешь? Это goredo написал не Бернштейн, а какой-то чувак из России, видимо прочитавший недавнюю статью на хабре.
Процитируй, а то я сам такого не увидел.
Ви таки не знаете сколько "чуваков" доводили раньше (хорошо, пытались) до более приличного вида поделия хацкира DJB. Увы, с предсказуемым результатом.
> И этот туда же... Во что теперь верить? Куды бечь?Так это ж не DJB кодил на го а какие-то хипстеры "совместимо с DJB"
> *ушёл вешаца*
Главная проблема пистолета с 1 патроном - это отсутствие undo. Хипстеры на свое горе не в курсе этой мелочи, а потом уже поздняк.
Не нужно, когда есть божественный я.
http://gittup.org/tup/make_vs_tup.html
>невозможность иметь цели с пробелами в именах.это не баг а фича.
с 1.0!
Игого - это горе, дооооо.
Чуточку настораживает очень быстрая разработка...- Sat Jan 9 23:37:20 MSK 2021
goredo 0.10.0 release announcement- Sun Jan 10 15:55:12 MSK 2021
goredo 0.11.0 release announcement- Tue Jan 12 21:38:12 MSK 2021
goredo 0.12.0 release announcement- Sat Jan 16 21:31:02 MSK 2021
goredo 1.0.0 release announcement
подозрение, на релизы не приходя в сознание ...?
или
как анекдоте про 100, 200 и 500 в минуту</ все добродушно>
)
походу он коммиты релизами называет. отсутствие в паблике репозитария исходников только подтверждает это.захотел бегло посмотреть исходники, только тарбол и то далеко не сразу нашел где скачать. оформление страницы проекта - этакий привет из 90ых.
http://www.git.cypherpunks.ru/?p=goredo.git;a=summary
На странице Install вы не смогли найти ссылки на репозитории?
Какой бредняк.
Заинтересовался описанием - звучит, как прям серебряная пуля.У меня есть большой мейкфайл, который собирает под линукс, три различных BSD, адроид, виндоффс (через вайнгцц), делает васм, запускает автотесты по двум большим папкам (со своими очень простыми мейкфайлами), показывает uname и вывод версии собранного файла, при этом сам определяет наличие некоторых системных библиотек (типа HAS_SOCKETS), генерит пекедж под дебиан, и, само собой, умеет инсталл и анинсталл. Одна из целей даже собирается рекурсивно (пока новый вариант не будет лучше предыдущего).
Кроме того часть опций компилятора зависит от наличия системных переменных (и даже компилятора - gcc или clang). А тестовые билды я собираю через opensuse build service, которая вместо меня собирает моим же мейкфайлом полтора десятка различных вариантов пакетов под арм и интел.
При этом мейкфайл вполне читабельный, как ни удивительно, и довольно легко сопровождаемый.
--
Ну я попытался в редо. И у меня появилось стойкое чувство, что я вместо быстроскриптинга на луа засел переписывать все на С, причем без стандартной библиотеки и даже немного с ассемблером.Это не система сборки. Это какая-то тулза для сравнения времени двух файлов. А система сборки должна уметь много больше.
Например, я могу одной строкой в два слова сказать .PHONY и мейк поймет, что это не просто таргет, а команда. А могу не сказать, и он будет проверять наличие такого файла.
Я могу просто написать двумя строками "debug-32: CFLAGS+=-m32\ndebug-32: debug" и мейк заведет мне новый таргет, полностью идентичный основному, со всеми зависимостями, тестами и интеграцией, но 32-битный. А в редо для этого придется писать целый новый скрипт, причем продумать уникальную системную переменную, чтобы этот cflags не путался с возможными другими...
Короче, redo этот для хелловорлдов, проектов под одну платформу и компилятор или для тех, кто любит программировать сборку своего проекта, а не сам проект.
p.s. Лучше мейка разве что симейк, но у него такой дебильный укуреный синтаксис, что пользоваться не хочется.
Короче не осилили просто навсего. У меня прямо противоположный опыт, да ещё и не только с заменой Makefile-ов, но и autoconf зоопарка всего, с распараллеливанием детекторов флагов/команд/whatever. Про debug-32 и "целый новый скрипт" -- это явно говорит что вы просто не разобрались как с redo работать.
> p.s. Лучше мейка разве что симейк, но у него такой дебильный укуреный
> синтаксис, что пользоваться не хочется.С ним прикол в том что он генерит мэйкфайлы :) (или что вы там хотели).
Например, по результатам детекта наличия либ/пакетов. На вот именно make, вот именно писать детект вон той либы, на разных платформах, и менять опции сборки в зависимости от этого - очень неприкольно.
Пример: есть хидеры libnotify? Вот вам умение проги казать еще и матюки в нотификатор, нету - и хрен с ним, опциональщина, от отсутствия которой никто явно не умрет. Может у юзера система вообще нотификации не умеет, не причина урыть билд совсем. В cmake это более-менее на мази.
p.s. а вы не могли бы пример мэйкфайла куда-нибудь налить? Для общего образования.
поздравляю с 1.0!!
О! Матвееву - сил и не обращать внимания на хейтеров.
А за сам redo - спасибо, покурим, возможно, стоящая вещь.
Чего нажать что бы получить. Есть какое-то заклинание вроде cargo install gorepo
go get go.cypherpunks.ru/goredo
> DJBПонятно, обходим стороной. qmail кушали.
Куда вы денетесь от Curve25519, ChaCha20, Poly1305?
Вестимо же - pgp и только pgp
Так есть же реалиазия на рассововерной Сишке https://github.com/leahneukirchen/redo-cP.S. FractaXL'ы - кышь!
По крайней мере в отличие от GOпоты оно встречает весьма позитивно: in portable C with zero external dependencies. Шта? Мы не будем качать полинтернета и генерить бинари на 20 мегов?
Что-то я не понял как эта штуковина обеспечит "атомарные сборки цели из коробки"?
блин, недавно читал про нее. А вообще djb - легенда. Зумерьё правда про него вряд ли слыхали
> блин, недавно читал про нее. А вообще djb - легенда. Зумерьё правда
> про него вряд ли слыхалиНу так вебмакаки принципиально ни 1 криптоалгоритм не напишут. Их знаний в CS и возможностей соображалки в лучшем случае хватит на шифр цезаря. Ну, может, XOR с константой. Зато разведут понта что это в 20 раз лучше любых других алгоритмов.
Кастомный plan9 mk наше всё.
> Goredo написан на языке GoПоэтому весит в 20 раз больше оригинала? :)