http://ryanhileman.info/posts/lib43
https://gist.github.com/jboner/2841832
Специально поместил эти две ссылки рядом, чтобы желающие смогли на пальцах прикинуть, сколько времени должен исполняться типичный #autohell ./configure script. По моим прикидкам, если бы не sleep-ы в ядре Linux, секунд 5. А не 1 - 2 минуты, как сейчас.
———
https://www.mattkeeter.com/projects/synthesis/
Классный текст про использование SAT solver. Я в своей карьере использовал SAT solver 1 раз, для какой-то задачки с Эйлера, но знать про такую возможность, конечно, полезно.
———
https://www.opennet.ru/opennews/art.shtml?num=56422
Очень хорошая подборка материалов - что важного и интересного произошло в 21 году. Заметьте, что в тексте очень много ссылок, и почти все они ведут на новости с opennet.
Opennet - мой любимый новостной канал, там все появляется достаточно быстро, и новости хорошо пролинкованы между собой.
При этом, opennet, по современным меркам, очень странная площадка:
* Там есть Анонимус
* Все посылают друг друга нахуй
* Один из модераторов - фашист(не в смысле "плохой человек", а в смысле Википедии).
При этом:
* Там полное ощущение свободы и вольнодумия
* Даже этого модератора-фашиста все кроют хуями, а он в ответ не раздает банхаммер направо и налево(вот его лог модерирования - https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=list&forum=vsluhforumID3&open=moderator&n=Michael+Shigorin)(а на большом числе ресурсов модераторы не ссат показать такой лог?)
* Встречаются прямо очень интересные комментаторы.
И вот это слабо почищенное говно читать приятнее, чем эти ваши выхолощенные HN, и прочую левацкую поебень.
На самом деле, сравнивая opennet и HN, лично я прихожу к выводу, что свобода слова таки должна быть абсолютной, а желающие что-то запретить мне читать пускай настроят фильтр себе(а не мне).
Вот как предлагают бороться с троллингом на opennet - https://www.opennet.ru/tips/3195_ublock_filter.shtml
Это очень здоровая вещь, если подумать. Если что-то мешает лично тебе - то скрой это себе, и не пытайся скрыть для всех остальных.
https://gist.github.com/jboner/2841832
Специально поместил эти две ссылки рядом, чтобы желающие смогли на пальцах прикинуть, сколько времени должен исполняться типичный #autohell ./configure script. По моим прикидкам, если бы не sleep-ы в ядре Linux, секунд 5. А не 1 - 2 минуты, как сейчас.
———
https://www.mattkeeter.com/projects/synthesis/
Классный текст про использование SAT solver. Я в своей карьере использовал SAT solver 1 раз, для какой-то задачки с Эйлера, но знать про такую возможность, конечно, полезно.
———
https://www.opennet.ru/opennews/art.shtml?num=56422
Очень хорошая подборка материалов - что важного и интересного произошло в 21 году. Заметьте, что в тексте очень много ссылок, и почти все они ведут на новости с opennet.
Opennet - мой любимый новостной канал, там все появляется достаточно быстро, и новости хорошо пролинкованы между собой.
При этом, opennet, по современным меркам, очень странная площадка:
* Там есть Анонимус
* Все посылают друг друга нахуй
* Один из модераторов - фашист(не в смысле "плохой человек", а в смысле Википедии).
При этом:
* Там полное ощущение свободы и вольнодумия
* Даже этого модератора-фашиста все кроют хуями, а он в ответ не раздает банхаммер направо и налево(вот его лог модерирования - https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=list&forum=vsluhforumID3&open=moderator&n=Michael+Shigorin)(а на большом числе ресурсов модераторы не ссат показать такой лог?)
* Встречаются прямо очень интересные комментаторы.
И вот это слабо почищенное говно читать приятнее, чем эти ваши выхолощенные HN, и прочую левацкую поебень.
На самом деле, сравнивая opennet и HN, лично я прихожу к выводу, что свобода слова таки должна быть абсолютной, а желающие что-то запретить мне читать пускай настроят фильтр себе(а не мне).
Вот как предлагают бороться с троллингом на opennet - https://www.opennet.ru/tips/3195_ublock_filter.shtml
Это очень здоровая вещь, если подумать. Если что-то мешает лично тебе - то скрой это себе, и не пытайся скрыть для всех остальных.
Gist
Latency Numbers Every Programmer Should Know
Latency Numbers Every Programmer Should Know. GitHub Gist: instantly share code, notes, and snippets.
❤1
Я же уже рассказывал про свой новый ноут, и почему он просто офигенный?
На самом деле, была одна вещь, которая меня сильно раздражала, и, наконец-то, я нашел время ее победить.
Выглядело это так - если на каком-то очень светлом фоне появлялся большой очень темный участок(например, контекстное меню в браузере), то экран резко, по всей плоскости, менял яркость.
Я, пожалуй, не буду расписывать, как я это дебажил(вполне стандартные техники по рассечению пространства возможных проблем), вот настройка ядра драйвера amdgpu:
"abmlevel (uint)
Override the default ABM (Adaptive Backlight Management) level used for DC enabled hardware. Requires DMCU to be supported and loaded. Valid levels are 0-4. A value of 0 indicates that ABM should be disabled by default. Values 1-4 control the maximum allowable brightness reduction via the ABM algorithm, with 1 being the least reduction and 4 being the most reduction.
Defaults to 0, or disabled. Userspace can still override this level later after boot."
Почему она у меня была не 0, я разбираться не стал.
https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-ABM-Linux-Backlight
Джобс бы, конечно, за эту дичьрасстрелял уволил на месте, что подсветка меняется одномоментно, а не растянуто на пару секунд, чтобы не мерцало.
———
Вчера писал про то, как сосет ядро Linux при выполнении configure скриптов. Сегодня немного цифр, время выполнения configure для coreutils, с разными там инструментами:
Думаю, погонять все это дело с strace.
———
https://blog.sunfishcode.online/port-std-to-rustix/
С нетерпением жду, когдашколота хипстеры коллеги разберутся с простыми вещами, и приступят к сложным(треды в Linux(https://ewontfix.com/17/), загрузчик для .so)
На самом деле, была одна вещь, которая меня сильно раздражала, и, наконец-то, я нашел время ее победить.
Выглядело это так - если на каком-то очень светлом фоне появлялся большой очень темный участок(например, контекстное меню в браузере), то экран резко, по всей плоскости, менял яркость.
Я, пожалуй, не буду расписывать, как я это дебажил(вполне стандартные техники по рассечению пространства возможных проблем), вот настройка ядра драйвера amdgpu:
"abmlevel (uint)
Override the default ABM (Adaptive Backlight Management) level used for DC enabled hardware. Requires DMCU to be supported and loaded. Valid levels are 0-4. A value of 0 indicates that ABM should be disabled by default. Values 1-4 control the maximum allowable brightness reduction via the ABM algorithm, with 1 being the least reduction and 4 being the most reduction.
Defaults to 0, or disabled. Userspace can still override this level later after boot."
Почему она у меня была не 0, я разбираться не стал.
https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-ABM-Linux-Backlight
Джобс бы, конечно, за эту дичь
———
Вчера писал про то, как сосет ядро Linux при выполнении configure скриптов. Сегодня немного цифр, время выполнения configure для coreutils, с разными там инструментами:
dash + coreutils: 35sВсе собрано с LTO, для достижения максимальной производительности.
dash + busybox: 35s
bash + busybox: 40s
Думаю, погонять все это дело с strace.
———
https://blog.sunfishcode.online/port-std-to-rustix/
С нетерпением жду, когда
Phoronix
Radeon Linux Driver Preparing Adaptive Backlight Management (ABM)
The 'AMDGPU' Radeon Linux kernel graphics driver is preparing support for 'Adaptive Backlight Management' as a backlight power-savings feature for laptops.
https://www.ttauri-project.org/2021/03/30/the-trouble-with-anti-aliasing.html
https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac
Два классных текста про рендеринг шрифтов. К счастью, разрешения наших экранов уже позволяют про все про это не думать - например, у меня на глаз не заметна разница между AA и не AA рендерингом уже.
———
https://www.gnu.org/software/libunistring/#downloading
У меня есть привычка - по вечерам обновлять версии софта, чтобы не залеживался. Вчера пришла очередь libunistring, это такая безумная библиотека от GNU, по обработке юникодных строк(вот, кстати, что про нее думают мои любимые suckless - https://libs.suckless.org/libgrapheme/).
Сборка библиотеки падала с cryptic сообщением, мол, не могу найти команду "@sed". Полез разбираться, оказывается, GNU сломали сборку своей же либы в своем же режиме в #autohell Makefile V=0, когда вместо команд печатаются их сокращения. С V=1 все отлично собралось.
———
https://lkml.org/lkml/2022/1/2/187
Я не пойму, в этом вашем ядре энтузиасты своего дела, кроме Ingo, остались? 3 коммента на классную инициативу по ускорению сборки за несколько дней.
Или все уже старые, сытые, и пьют пиво на праздниках?
———
https://habr.com/ru/news/t/599409/ #wot
Хорошо, конечно, что идут в суд, а не занимаются противоправной херней, как это стало модно.
Но, как бывший последовательный левый, потом неубедительно болтающийся у центра центрист, а теперь не менее последовательный правый, я, конечно, на стороне тех, кто выпускает хаки.
"Представитель Wargaming заявил, что компания считает создание и продажу программ, нарушающих правила игр и их внутреннюю экономику, таким же преступлением, как кража или мошенничество. "
Знаете, давайте уже сажать за высокочастотный трейдинг, или применение ML на фондовых рынках, а то как же так?
———
#server_push
https://www.opennet.ru/opennews/art.shtml?num=54069
Я, оказывается, проспал красивое. Если бы не проспал, то, конечно бы потребовал от всех, кто мне годами ел мозг чайной ложечкой насчет server push, немедленно извиниться за весь мой съеденный мозг.
https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac
Два классных текста про рендеринг шрифтов. К счастью, разрешения наших экранов уже позволяют про все про это не думать - например, у меня на глаз не заметна разница между AA и не AA рендерингом уже.
———
https://www.gnu.org/software/libunistring/#downloading
У меня есть привычка - по вечерам обновлять версии софта, чтобы не залеживался. Вчера пришла очередь libunistring, это такая безумная библиотека от GNU, по обработке юникодных строк(вот, кстати, что про нее думают мои любимые suckless - https://libs.suckless.org/libgrapheme/).
Сборка библиотеки падала с cryptic сообщением, мол, не могу найти команду "@sed". Полез разбираться, оказывается, GNU сломали сборку своей же либы в своем же режиме в #autohell Makefile V=0, когда вместо команд печатаются их сокращения. С V=1 все отлично собралось.
———
https://lkml.org/lkml/2022/1/2/187
Я не пойму, в этом вашем ядре энтузиасты своего дела, кроме Ingo, остались? 3 коммента на классную инициативу по ускорению сборки за несколько дней.
Или все уже старые, сытые, и пьют пиво на праздниках?
———
https://habr.com/ru/news/t/599409/ #wot
Хорошо, конечно, что идут в суд, а не занимаются противоправной херней, как это стало модно.
Но, как бывший последовательный левый, потом неубедительно болтающийся у центра центрист, а теперь не менее последовательный правый, я, конечно, на стороне тех, кто выпускает хаки.
"Представитель Wargaming заявил, что компания считает создание и продажу программ, нарушающих правила игр и их внутреннюю экономику, таким же преступлением, как кража или мошенничество. "
Знаете, давайте уже сажать за высокочастотный трейдинг, или применение ML на фондовых рынках, а то как же так?
———
#server_push
https://www.opennet.ru/opennews/art.shtml?num=54069
Я, оказывается, проспал красивое. Если бы не проспал, то, конечно бы потребовал от всех, кто мне годами ел мозг чайной ложечкой насчет server push, немедленно извиниться за весь мой съеденный мозг.
https://hardcoresoftware.learningbyshipping.com/p/061-bsod-to-watson-the-reliability
Забавно. Товарищ (из Microsoft?) считает, что качество софта улучшилось, когда ввели телеметрию. Плохая статья.
На пути к хорошему софту было 3 этапа:
1) Перестали писать системный софт на ассемблере, и стали на C. Microsoft тут явно не была впереди планеты всей, потому что Unix.
2) Повсеместная защита памяти в OS. Microsoft, опять же, процессу не помогала, а мешала. Напомню, что Windows NT(которая работала, как часы), позиционировалась ею как система для профессионалов, и стоила, как космолет. Ситуация поменялась только после выхода провальной Windows ME, когда уже даже идиотам стало понятно, что методом грубой силы линейку Win95 до ума не довести.
Кстати, немного в сторону - вопреки некоторым мифам, Windows NT и памяти не сильно больше жрала, чем Win95/98, и с совместимостью программ у нее было неплохо. Например, более-менее все нерукожопые игры, которые работали через dos4/gw, прекрасно работали в NT, благодаря https://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface - это такая технология, когда OS в себе содержит свой dos extender, и условный dos4/gw просто передает управление ему.
Windows NT 3.51(https://winworldpc.com/product/windows-nt-3x/351) - моя любимая винда. Красивый GUI, еще до-чикаго эпохи, микроядро, быстрое, и безопасное(она могла перезапустить упавший драйвер видюхи на ходу, например).
3) Санитайзеры. После их повсеместного внедрения я лично перестал бояться катить в прод. Казалось бы, при чем тут Microsoft? В Microsoft с этим всегда было туго, до-sanitizer технологии(valgrind) вообще никак не были представлены в Windows. #asan
4*) Переход на "безопасные" языки. Господа, давайте этот пункт обсудим лет через 5 - 10, когда impact уже будет очевиден :)
Короче, плохая, негодная статья, которая пытается представить, что MS была впереди планеты всей в борьбе с багами. Нет, это не так.
———
dash + coreutils: 35s
dash + busybox: 35s
bash + busybox: 40s
And the winner is..... Yash! https://yash.osdn.jp/index.html.en
yash + coreutils: 30s
Кстати, хороший, годный shell, я им периодически пользуюсь. В принципе, у него похожие плюсы(strict POSIX, fast, работает везде) и минусы(пишет 1 человек, непонятно будущее проекта), как и у dash, так что я пробую заменить.
———
https://browsix.org/
(тут должна быть картинка про hey dawg)
Мы сделали браузер для того, чтобы gui стоил дешево, и чтобы не нужно было разрабатывать десктопное приложение на каждый чих.
Но, вот, теперь запустили там Unix CLI. А что дальше? Qt/GTK, и потом опять браузер? Божечки, зачем.
Забавно. Товарищ (из Microsoft?) считает, что качество софта улучшилось, когда ввели телеметрию. Плохая статья.
На пути к хорошему софту было 3 этапа:
1) Перестали писать системный софт на ассемблере, и стали на C. Microsoft тут явно не была впереди планеты всей, потому что Unix.
2) Повсеместная защита памяти в OS. Microsoft, опять же, процессу не помогала, а мешала. Напомню, что Windows NT(которая работала, как часы), позиционировалась ею как система для профессионалов, и стоила, как космолет. Ситуация поменялась только после выхода провальной Windows ME, когда уже даже идиотам стало понятно, что методом грубой силы линейку Win95 до ума не довести.
Кстати, немного в сторону - вопреки некоторым мифам, Windows NT и памяти не сильно больше жрала, чем Win95/98, и с совместимостью программ у нее было неплохо. Например, более-менее все нерукожопые игры, которые работали через dos4/gw, прекрасно работали в NT, благодаря https://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface - это такая технология, когда OS в себе содержит свой dos extender, и условный dos4/gw просто передает управление ему.
Windows NT 3.51(https://winworldpc.com/product/windows-nt-3x/351) - моя любимая винда. Красивый GUI, еще до-чикаго эпохи, микроядро, быстрое, и безопасное(она могла перезапустить упавший драйвер видюхи на ходу, например).
3) Санитайзеры. После их повсеместного внедрения я лично перестал бояться катить в прод. Казалось бы, при чем тут Microsoft? В Microsoft с этим всегда было туго, до-sanitizer технологии(valgrind) вообще никак не были представлены в Windows. #asan
4*) Переход на "безопасные" языки. Господа, давайте этот пункт обсудим лет через 5 - 10, когда impact уже будет очевиден :)
Короче, плохая, негодная статья, которая пытается представить, что MS была впереди планеты всей в борьбе с багами. Нет, это не так.
———
dash + coreutils: 35s
dash + busybox: 35s
bash + busybox: 40s
And the winner is..... Yash! https://yash.osdn.jp/index.html.en
yash + coreutils: 30s
Кстати, хороший, годный shell, я им периодически пользуюсь. В принципе, у него похожие плюсы(strict POSIX, fast, работает везде) и минусы(пишет 1 человек, непонятно будущее проекта), как и у dash, так что я пробую заменить.
———
https://browsix.org/
(тут должна быть картинка про hey dawg)
Мы сделали браузер для того, чтобы gui стоил дешево, и чтобы не нужно было разрабатывать десктопное приложение на каждый чих.
Но, вот, теперь запустили там Unix CLI. А что дальше? Qt/GTK, и потом опять браузер? Божечки, зачем.
Hardcore Software by Steven Sinofsky
061. BSoD to Watson: The Reliability Journey
"20 percent or so of most frequently occurring crashes accounted for more than 80 percent of all crashes"—our discovery of the distribution of bugs and crashes
https://www.youtube.com/watch?time_continue=203&v=Zh3Yz3PiXZw&feature=emb_logo
Прекрасный видос, я, как обычно прослоупочил.
———
https://twitter.com/proffeynman/status/1038833676962869249?lang=en
Классный алгоритм, всегда им пользовался, теперь знаю, кто автор, и как называется.
———
Факир был пьян, фокус не удался.
yash отлично справляется с configure скриптами, но валится на каком-то bash-изме в libtool.
eval 'f ( X "" )' - что это? по мне так yash прав, что missing ), потому что f( - начало определения функции.
Видимо, автор dash это закостылял, потому что dash какое-то время был дефолтным shell в ubuntu(про сейчас не знаю). Без этого костыля #autohell проекты не собираются.
На закуску - автор yash упоролся, и переписывает его на Rust. https://github.com/magicant/yash-rs/issues
Вот зачем, зачем переписывать то, что уже написано и работает? Я там понимаю, если бы он фич хотел досыпать, но он же опять пишет posix shell.
———
https://botondballo.wordpress.com/2022/01/03/2021-c-standardization-highlights/
range-based for-loop аккуратно обошли стороной. C++ doomed.
———
Intel отчаялась победить шедулер #sched в Linux, и теперь CPU просто сам говорит - "пошедули чего-нить на меня", или "я перегрет" https://www.tomshardware.com/news/intel-alder-lake-thread-director-support-coming-to-linux
А чо, норм тема, производитель процов явно же лучше знает, как нагрузить его поделие полезной работой.
Прекрасный видос, я, как обычно прослоупочил.
———
https://twitter.com/proffeynman/status/1038833676962869249?lang=en
Классный алгоритм, всегда им пользовался, теперь знаю, кто автор, и как называется.
———
Факир был пьян, фокус не удался.
yash отлично справляется с configure скриптами, но валится на каком-то bash-изме в libtool.
eval 'f ( X "" )' - что это? по мне так yash прав, что missing ), потому что f( - начало определения функции.
Видимо, автор dash это закостылял, потому что dash какое-то время был дефолтным shell в ubuntu(про сейчас не знаю). Без этого костыля #autohell проекты не собираются.
На закуску - автор yash упоролся, и переписывает его на Rust. https://github.com/magicant/yash-rs/issues
Вот зачем, зачем переписывать то, что уже написано и работает? Я там понимаю, если бы он фич хотел досыпать, но он же опять пишет posix shell.
———
https://botondballo.wordpress.com/2022/01/03/2021-c-standardization-highlights/
range-based for-loop аккуратно обошли стороной. C++ doomed.
———
Intel отчаялась победить шедулер #sched в Linux, и теперь CPU просто сам говорит - "пошедули чего-нить на меня", или "я перегрет" https://www.tomshardware.com/news/intel-alder-lake-thread-director-support-coming-to-linux
А чо, норм тема, производитель процов явно же лучше знает, как нагрузить его поделие полезной работой.
YouTube
Alternative Math | Short Film
A well meaning math teacher finds herself trumped by a post-fact America.
https://www.opennet.ru/opennews/art.shtml?num=56475
Вот и ответ про clang. Сравнение с прошлой версией не очень хорошо получается сделать, но я насчитал где-то 8% преимущества над GCC.
———
https://blog.darknedgy.net/technology/2020/05/02/0/
Фундаментальный текст про systemd.
* Я понял, что не совсем верно понимал позиционирование systemd. Авторы его больше продавали как замену xinetd, то есть, хотели все сделать на socket activation. Ну, то есть, systemd еще более overengineered, чем я думал.
* launchd, с которого списывали #systemd, сделал многие вещи существенно более правильно - отдельная система для dependency management, отдельная - для socket(port, в случае Mach) activation.
* Текст лично для меня оказался очень вкусный. Знаете же это ощущение, что на одной волне с автором? Читаешь такой, и думаешь, "а вот сейчас бы упомянуть про ...", и вот оно. Например, http://www.winestockwebdesign.com/Essays/Eternal_Mainframe.html. Или вот - "and the general trend of eBPF turning Linux into an extensible hybrid kernel of sorts."
* Недостаток текста - автор зачем-то слишком много цепляется к личности Поттеринга. Насрать же на Поттеринга, важно то, что хочет делать RedHat, а потом IBM(кроме как попыткой враждебного захвата Linux это и не назвать IMHO).
* Поворотный момент - когда разработчики ядра(спасибо им за это!) послали всю эту гоп-компанию с #kdbus. Сейчас systemd не представляет экзистенциальной угрозы.
———
https://github.com/2point21/lba2-classic
Совершенно случайно наткнулся на исходники LBA2. В детстве всегда хотелось посмотреть, как она сделана внутри, вот, смотрю. Интересное вечернее занятие :) Удивительно, насколько оно все сделано странно, и, фактически, затащено "грубой силой".
К слову, был у меня период, когда я, в течении нескольких месяцев, воскресное утро начинал с того, что проходил LBA2. А какой там был саундтрек!
Вот и ответ про clang. Сравнение с прошлой версией не очень хорошо получается сделать, но я насчитал где-то 8% преимущества над GCC.
———
https://blog.darknedgy.net/technology/2020/05/02/0/
Фундаментальный текст про systemd.
* Я понял, что не совсем верно понимал позиционирование systemd. Авторы его больше продавали как замену xinetd, то есть, хотели все сделать на socket activation. Ну, то есть, systemd еще более overengineered, чем я думал.
* launchd, с которого списывали #systemd, сделал многие вещи существенно более правильно - отдельная система для dependency management, отдельная - для socket(port, в случае Mach) activation.
* Текст лично для меня оказался очень вкусный. Знаете же это ощущение, что на одной волне с автором? Читаешь такой, и думаешь, "а вот сейчас бы упомянуть про ...", и вот оно. Например, http://www.winestockwebdesign.com/Essays/Eternal_Mainframe.html. Или вот - "and the general trend of eBPF turning Linux into an extensible hybrid kernel of sorts."
* Недостаток текста - автор зачем-то слишком много цепляется к личности Поттеринга. Насрать же на Поттеринга, важно то, что хочет делать RedHat, а потом IBM(кроме как попыткой враждебного захвата Linux это и не назвать IMHO).
* Поворотный момент - когда разработчики ядра(спасибо им за это!) послали всю эту гоп-компанию с #kdbus. Сейчас systemd не представляет экзистенциальной угрозы.
———
https://github.com/2point21/lba2-classic
Совершенно случайно наткнулся на исходники LBA2. В детстве всегда хотелось посмотреть, как она сделана внутри, вот, смотрю. Интересное вечернее занятие :) Удивительно, насколько оно все сделано странно, и, фактически, затащено "грубой силой".
К слову, был у меня период, когда я, в течении нескольких месяцев, воскресное утро начинал с того, что проходил LBA2. А какой там был саундтрек!
www.opennet.ru
Вторая версия патчей c реструктуризацией заголовочных файлов ядра Linux
Инго Молнар (Ingo Molnar) представил вторую версию набора патчей, позволяющего значительно сократить время пересборки ядра за счёт реструктуризации иерархии заголовочных файлов и сокращения числа перекрёстных зависимостей. От предложенной несколько дней назад…
https://habr.com/ru/post/599767/
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
https://twitter.com/marak/status/1479200803948830724?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1479200803948830724%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
Меня это все, конечно, бесит. #npm #money
* С одной стороны, в OSS денег и славы нет(ну, примерно как в большом спорте). Я вот в OSS ищу 20 котрибуторов в пакетную базу и 1 - 2 в core graph engine, так сказать. В лучшем случае. Чего там эти странные люди обижаются, я не понимаю. Их код, вообще говоря, используют ТОЛЬКО потому, что он бесплатный. Если бы они его выложили не на github/npm, а там в маркет приложений, его бы никто и не заметил.
"These messages included the text 'LIBERTY LIBERTY LIBERTY' followed by a sequence of non-ASCII characters:"
Ага, а чо не так-то с liberty? Кто ему "швабодки" не досыпал-то?
Чувак явно хотел написать "MONEY MONEY MONEY", но постеснялся:
"Take this as an opportunity to send me a six figure yearly contract or fork the project and have someone else work on it."
Ну да, это в какой валюте? Если в имперских деньгах, то он не понимает, что такое код, и что такое деньги.
* "NPM has reverted to a previous version of the faker.js package and Github has suspended my access to all public and private projects. I have 100s of projects." С другой, вот факт, что github и npm самовольно откатили его код, это леденящий душу пиздец. Не устану напоминать, что провайдер услуг не может и не должен заниматься такой хуйней. Впрочем, может, их EULA содержит какие-то пункты, которые это разрешают, а я просто о них не знаю. Any comments?
* С третьей - конечно, индустрии это пойдет на пользу. Менеджменту давно пора понять, что бесконтрольный npm/pip install(да и вообще, любые бесконтрольные зависимости) - это потенциальное зло, а не только сотни мегабайт прекрасного кода в ваш проект. Ну и сумасшедших, которые зависят по trunk от стороннего проекта без тестов, станет поменьше.
———
https://habr.com/ru/company/dcmiran/news/t/599733/
А расскажите мне, почему в данном случае не работает рыночное решение? Типа, сложно произвести столько карт, чтобы насытить рынок, и непонятно, что потом делать с новыми производственными мощностями, когда этот пузырь лопнет? Или просто там задержка в несколько лет, от машин для литографии до конечного потребителя?
———
https://www.tiobe.com/tiobe-index/
Про Python на первом месте я уже писал, брызгая желчью.
Про Rust - конечно, очень плохо, что Cobol обогнал Rust, но зато очень хорошо, что Rust обошел Prolog!
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
https://twitter.com/marak/status/1479200803948830724?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1479200803948830724%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
Меня это все, конечно, бесит. #npm #money
* С одной стороны, в OSS денег и славы нет(ну, примерно как в большом спорте). Я вот в OSS ищу 20 котрибуторов в пакетную базу и 1 - 2 в core graph engine, так сказать. В лучшем случае. Чего там эти странные люди обижаются, я не понимаю. Их код, вообще говоря, используют ТОЛЬКО потому, что он бесплатный. Если бы они его выложили не на github/npm, а там в маркет приложений, его бы никто и не заметил.
"These messages included the text 'LIBERTY LIBERTY LIBERTY' followed by a sequence of non-ASCII characters:"
Ага, а чо не так-то с liberty? Кто ему "швабодки" не досыпал-то?
Чувак явно хотел написать "MONEY MONEY MONEY", но постеснялся:
"Take this as an opportunity to send me a six figure yearly contract or fork the project and have someone else work on it."
Ну да, это в какой валюте? Если в имперских деньгах, то он не понимает, что такое код, и что такое деньги.
* "NPM has reverted to a previous version of the faker.js package and Github has suspended my access to all public and private projects. I have 100s of projects." С другой, вот факт, что github и npm самовольно откатили его код, это леденящий душу пиздец. Не устану напоминать, что провайдер услуг не может и не должен заниматься такой хуйней. Впрочем, может, их EULA содержит какие-то пункты, которые это разрешают, а я просто о них не знаю. Any comments?
* С третьей - конечно, индустрии это пойдет на пользу. Менеджменту давно пора понять, что бесконтрольный npm/pip install(да и вообще, любые бесконтрольные зависимости) - это потенциальное зло, а не только сотни мегабайт прекрасного кода в ваш проект. Ну и сумасшедших, которые зависят по trunk от стороннего проекта без тестов, станет поменьше.
———
https://habr.com/ru/company/dcmiran/news/t/599733/
А расскажите мне, почему в данном случае не работает рыночное решение? Типа, сложно произвести столько карт, чтобы насытить рынок, и непонятно, что потом делать с новыми производственными мощностями, когда этот пузырь лопнет? Или просто там задержка в несколько лет, от машин для литографии до конечного потребителя?
———
https://www.tiobe.com/tiobe-index/
Про Python на первом месте я уже писал, брызгая желчью.
Про Rust - конечно, очень плохо, что Cobol обогнал Rust, но зато очень хорошо, что Rust обошел Prolog!
Хабр
Что случилось с faker.js?
При создании нового проекта я попытался использовать свою любимую библиотеку генерации случайных данных faker.js. Установилась версия faker@6.6.6. Однако при попытке использовать привычные методы...
https://lkml.org/lkml/2022/1/8/170
На патч Ingo по ускорению сборки кладут хер.
———
https://dpc.pw/making-open-source-economy-more-viable-with-dual-license-collectives
Товарищ переизобретает коллективную лицензию на продажу mp3(а помните allofmp3.com? Эх...), только для софта. Тема, конечно, хорошая, но не полетит.
———
https://gitlab.gnome.org/GNOME/gtk/-/issues/4165
Gtk двигается в сторону прямого использования opengl/vulkan в качестве канвы для рисования. Это очень правильно, opengl/vulkan - это уже давно стандарт для рисования, непонятно, зачем иметь кучу прослоек для него.
Вообще, хотелось бы увидеть современную библиотеку виджетов, построенную напрямую поверх opengl/vulkan, без кучи legacy, платформенных библиотек, и вот этого всего. Про imgui знаю.
———
https://devblogs.microsoft.com/directx/announcing-the-opencl-and-opengl-compatibility-pack-for-windows-10-on-arm/
Я тут, давеча, писал, что microsoft присматривается к Mesa и #ANGLE. Оказывается, я мастер предсказывать события, которые уже имели место быть.
Microsoft уже использует #Mesa в качестве эталонного opengl для arm устройств. Это очень круто, молодцы. Мне нравится, что MS делает в OSS в последние годы.
———
https://github.com/hunspell/hyphen/blob/master/hyphen.tex
Очень интересная лицензия - "делайте, что хотите, только не называйте результат hyphen.tex". Ну, где наша не пропадала, рядом просто лежит hyphen.patch, интегрированный в систему сборки. Если нельзя, но очень хочется - то можно!
На патч Ingo по ускорению сборки кладут хер.
———
https://dpc.pw/making-open-source-economy-more-viable-with-dual-license-collectives
Товарищ переизобретает коллективную лицензию на продажу mp3(а помните allofmp3.com? Эх...), только для софта. Тема, конечно, хорошая, но не полетит.
———
https://gitlab.gnome.org/GNOME/gtk/-/issues/4165
Gtk двигается в сторону прямого использования opengl/vulkan в качестве канвы для рисования. Это очень правильно, opengl/vulkan - это уже давно стандарт для рисования, непонятно, зачем иметь кучу прослоек для него.
Вообще, хотелось бы увидеть современную библиотеку виджетов, построенную напрямую поверх opengl/vulkan, без кучи legacy, платформенных библиотек, и вот этого всего. Про imgui знаю.
———
https://devblogs.microsoft.com/directx/announcing-the-opencl-and-opengl-compatibility-pack-for-windows-10-on-arm/
Я тут, давеча, писал, что microsoft присматривается к Mesa и #ANGLE. Оказывается, я мастер предсказывать события, которые уже имели место быть.
Microsoft уже использует #Mesa в качестве эталонного opengl для arm устройств. Это очень круто, молодцы. Мне нравится, что MS делает в OSS в последние годы.
———
https://github.com/hunspell/hyphen/blob/master/hyphen.tex
Очень интересная лицензия - "делайте, что хотите, только не называйте результат hyphen.tex". Ну, где наша не пропадала, рядом просто лежит hyphen.patch, интегрированный в систему сборки. Если нельзя, но очень хочется - то можно!
https://www.opennet.ru/opennews/art.shtml?num=56492
Классная штука, я туда даже пару коммитов сделал.
———
https://habr.com/ru/news/t/645097/
А расскажите, кто в теме, кто в данной ситуации негодяй и редиска?
———
https://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/ #gold
Хороший текст про важность времени сборки.
For example here (Unity), we had a joke that “adding Boost into the codebase is a fireable offense”
Мои 5 копеек:
* Header-only библиотеки - это зло, которое возникло от того, что старперы в стандарте заняты поддержкой сохранения ABI, вместо того, чтобы сказать, что приложение на С++ должно пересобираться целиком, как в Rust. Поэтому люди вынуждены эмулировать вот это вот "целиком" подручными средствами. #abi
* В своем личном коде на C++ я стараюсь допускать как можно меньше inline, у меня даже pushBack() в Vector в .cpp лежит. LTO разберется(и, по факту, no inline + LTO разбирается быстрее, чем инстанциировать километры шаблонов в каждом исходнике).
* Если бы все согласились разово замедлить весь код на 20%, но чтобы он собирался в 10 раз быстрее, я(ну, условный я) за освободившееся время бы алгоритмически ускорил бы подведомственный код больше, чем на 20%. Кажется, тут уместно вспомнить, что оптимум по Парето не всегда совпадает с равновесием Неша.
* Использование компиляторных intrinsics в 100 раз быстрее, чем использование их, но обернутых в std::. Поэтому у меня есть https://github.com/pg83/std/blob/master/std/typ/intrin.h
———
https://blog.robsayers.com/on-learning-smalltalk
Тут вот господин рассказывает, почему Smalltalk хорошо, но мне почему-то кажется, что любой image-based Lisp(а это почти все современные Lisp) обладает такими же свойствами.
———
Флеймообразующий вопрос к аудитории!
А почему, например, GNU/FSF не считает файл с образом для QEMU, в котором лежит образ Linux и другие динамические библиотеки, вариантом статической линковки?
———
>Сейчас #systemd не представляет экзистенциальной угрозы.
Хочу немного пояснить этот speech. Речь идет про small linux, hobby linux, про мой личный Linux.
Есть нечто притягательное в том, чтобы вырастить полностью свой, необычный, стек. Если бы Linux начал навязывать мне systemd, как необходимый элемент этого стека, я бы остался на MacOS, там за меня уже приняли все нужные решения, и шедулер там не глючит.
Классная штука, я туда даже пару коммитов сделал.
———
https://habr.com/ru/news/t/645097/
А расскажите, кто в теме, кто в данной ситуации негодяй и редиска?
———
https://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/ #gold
Хороший текст про важность времени сборки.
For example here (Unity), we had a joke that “adding Boost into the codebase is a fireable offense”
Мои 5 копеек:
* Header-only библиотеки - это зло, которое возникло от того, что старперы в стандарте заняты поддержкой сохранения ABI, вместо того, чтобы сказать, что приложение на С++ должно пересобираться целиком, как в Rust. Поэтому люди вынуждены эмулировать вот это вот "целиком" подручными средствами. #abi
* В своем личном коде на C++ я стараюсь допускать как можно меньше inline, у меня даже pushBack() в Vector в .cpp лежит. LTO разберется(и, по факту, no inline + LTO разбирается быстрее, чем инстанциировать километры шаблонов в каждом исходнике).
* Если бы все согласились разово замедлить весь код на 20%, но чтобы он собирался в 10 раз быстрее, я(ну, условный я) за освободившееся время бы алгоритмически ускорил бы подведомственный код больше, чем на 20%. Кажется, тут уместно вспомнить, что оптимум по Парето не всегда совпадает с равновесием Неша.
* Использование компиляторных intrinsics в 100 раз быстрее, чем использование их, но обернутых в std::. Поэтому у меня есть https://github.com/pg83/std/blob/master/std/typ/intrin.h
———
https://blog.robsayers.com/on-learning-smalltalk
Тут вот господин рассказывает, почему Smalltalk хорошо, но мне почему-то кажется, что любой image-based Lisp(а это почти все современные Lisp) обладает такими же свойствами.
———
Флеймообразующий вопрос к аудитории!
А почему, например, GNU/FSF не считает файл с образом для QEMU, в котором лежит образ Linux и другие динамические библиотеки, вариантом статической линковки?
———
>Сейчас #systemd не представляет экзистенциальной угрозы.
Хочу немного пояснить этот speech. Речь идет про small linux, hobby linux, про мой личный Linux.
Есть нечто притягательное в том, чтобы вырастить полностью свой, необычный, стек. Если бы Linux начал навязывать мне systemd, как необходимый элемент этого стека, я бы остался на MacOS, там за меня уже приняли все нужные решения, и шедулер там не глючит.
www.opennet.ru
Доступна бета-версия порта файлового менеджера Far для Linux, BSD и macOS
Проект far2l, с 2016 года развивающий порт Far Manager для Linux, BSD и macOS, перешёл на стадию бета-тестирования, соответствующие изменения внесены в репозиторий 12 января. На данный момент порт, описанный на странице проекта как форк, поддерживает работу…
https://www.opennet.ru/openforum/vsluhforumID3/126400.html#49
Эти сумасшедшие (кто? GNOME? RedHat?) совсем кукухой поехали. JS в системном демоне.
———
https://levelup.gitconnected.com/top-30-git-commands-you-should-know-to-master-git-cli-f04e041779bc
Еще одни поехавшие, 30 базовых команд, чтобы нормально работать с git. Напомню, что в нормальных VCS нужно примерно 3 команды.
Впрочем, чтобы принять этот факт без попоболи, нужно согласиться с тем, что VCS - это способ хранения исходников, а не способ хранения и навигации по истории.
Я за всю жизнь активно читал историю, а не исходники, раза 3, наверное. И то, чтобы словить лулзы, а не разобраться с чем-нибудь. Я не вижу никакого смысла разбираться с тем, что думал какой-то странный человек по поводу того, что он там писал в коде. Важно только то, что этот код делает здесь и сейчас, а не то, что про него думал автор 10 лет назад.
PS: тикеты с описанием продуктовой составляющей фичи полезны, да.
———
https://habr.com/ru/news/t/645289/ - как же бесит этот новояз.
"Для Mozilla цель состоит в том, чтобы заставить Firefox работать одинаково на всех платформах, чтобы облегчить обслуживание и упростить разработку и исправление ошибок операционных систем. Для нас это изменение означает огромное упрощение с точки зрения обслуживания и разработки. Раньше мы сами собирали Firefox, используя упаковку Ubuntu. Теперь мы упаковываем версию Mozilla"
Вот ведь все всё понимают, зачем писать такую хтонь?
———
https://www.opennet.ru/opennews/art.shtml?num=56489 - анонс более простого механизма(куда уж проще?) для деплоя? eBPF программ.
https://www.opennet.ru/opennews/art.shtml?num=56497 - и через день анонс о новой уязвимости в eBPF. Cовпадение?
https://isovalent.com/blog/post/2021-12-08-ebpf-servicemesh - я уже как-то писал, что eBPF превращает Linux в нормальную микроядерную OS. Но вот прямо все тащить в ядро, даже через eBPF? Зачем? Модель sidecar прекрасна.
———
https://adamhooper.medium.com/in-mysql-never-use-utf8-use-utf8mb4-11761243e434
Уверен, про это написали вообще все, поэтому без комментариев.
Эти сумасшедшие (кто? GNOME? RedHat?) совсем кукухой поехали. JS в системном демоне.
———
https://levelup.gitconnected.com/top-30-git-commands-you-should-know-to-master-git-cli-f04e041779bc
Еще одни поехавшие, 30 базовых команд, чтобы нормально работать с git. Напомню, что в нормальных VCS нужно примерно 3 команды.
Впрочем, чтобы принять этот факт без попоболи, нужно согласиться с тем, что VCS - это способ хранения исходников, а не способ хранения и навигации по истории.
Я за всю жизнь активно читал историю, а не исходники, раза 3, наверное. И то, чтобы словить лулзы, а не разобраться с чем-нибудь. Я не вижу никакого смысла разбираться с тем, что думал какой-то странный человек по поводу того, что он там писал в коде. Важно только то, что этот код делает здесь и сейчас, а не то, что про него думал автор 10 лет назад.
PS: тикеты с описанием продуктовой составляющей фичи полезны, да.
———
https://habr.com/ru/news/t/645289/ - как же бесит этот новояз.
"Для Mozilla цель состоит в том, чтобы заставить Firefox работать одинаково на всех платформах, чтобы облегчить обслуживание и упростить разработку и исправление ошибок операционных систем. Для нас это изменение означает огромное упрощение с точки зрения обслуживания и разработки. Раньше мы сами собирали Firefox, используя упаковку Ubuntu. Теперь мы упаковываем версию Mozilla"
Вот ведь все всё понимают, зачем писать такую хтонь?
———
https://www.opennet.ru/opennews/art.shtml?num=56489 - анонс более простого механизма(куда уж проще?) для деплоя? eBPF программ.
https://www.opennet.ru/opennews/art.shtml?num=56497 - и через день анонс о новой уязвимости в eBPF. Cовпадение?
https://isovalent.com/blog/post/2021-12-08-ebpf-servicemesh - я уже как-то писал, что eBPF превращает Linux в нормальную микроядерную OS. Но вот прямо все тащить в ядро, даже через eBPF? Зачем? Модель sidecar прекрасна.
———
https://adamhooper.medium.com/in-mysql-never-use-utf8-use-utf8mb4-11761243e434
Уверен, про это написали вообще все, поэтому без комментариев.
Medium
Top 30 Git Commands You Should Know To Master Git CLI
Learn the most essential Git commands to boost your productivity, and become a master in managing the GitHub repositories.
https://www.phoronix.com/scan.php?page=news_item&px=Linux-Remove-a.out
Linux убирает поддержку a.out, придется в gcc -o давать какие-то более осмысленные имена, если вы понимаете, о чем я.
———
https://llvm.discourse.group/
#LLVM съезжает с допотопных рассылок. С одной стороны - это хорошо, в почтовых архивах решительно невозможно было ориентироваться. С другой - это какая-то закрытая платформа, я там не нашел кнопки "скачать письма за 2021 год".
———
https://www.opennet.ru/opennews/art.shtml?num=56503
https://github.com/chrisdutz/blog/blob/main/plc4x/free-trial-expired.adoc #money
Еще одно эмоциональное подгорание на фоне отсутствия денег за OSS. Даже не знаю, что и сказать, на фоне того, что уже сказано и написано.
Пожалуй, добавлю, что вот это вот всё индустрии несколько мешает, потому что люди, которые принимают решения о использовании OSS во внутренних разработках, будут вспоминать эти истории, и очередной раз задумываться, связываться с этими эмо(которые сегодня раздают бесплатно, а завтра плачутся, что им там каши недодали) с github, или нет.
———
https://venam.nixers.net/blog/unix/2021/02/07/audio-stack.html
Неплохой текст про состояние аудио стека в Linux.
https://github.com/jackaudio/jack2
The activation system has been changed for a data flow model and lock-free programming techniques for graph access have been used to have a more dynamic and robust system.
Класс. А это пример lock-free технологий из jack2:
При этом, jack все еще лучший звуковой сервер под Linux, все, как и 15 лет назад.
———
https://developers.redhat.com/articles/2022/01/12/prevent-trojan-source-attacks-gcc-12
Сначала создаем себе проблемы, потом героически их решаем. Не, так работы нам хватит навсегда.
Хотелось бы, конечно, флаг в компиляторах-fno-porridge -fascii-only-source, я более чем уверен, что есть сильная антикорреляция между тем, что человек использует эмодзи с какахой non-ascii symbols в коде, и тем, что его код может быть мне как-то полезен.
Linux убирает поддержку a.out, придется в gcc -o давать какие-то более осмысленные имена, если вы понимаете, о чем я.
———
https://llvm.discourse.group/
#LLVM съезжает с допотопных рассылок. С одной стороны - это хорошо, в почтовых архивах решительно невозможно было ориентироваться. С другой - это какая-то закрытая платформа, я там не нашел кнопки "скачать письма за 2021 год".
———
https://www.opennet.ru/opennews/art.shtml?num=56503
https://github.com/chrisdutz/blog/blob/main/plc4x/free-trial-expired.adoc #money
Еще одно эмоциональное подгорание на фоне отсутствия денег за OSS. Даже не знаю, что и сказать, на фоне того, что уже сказано и написано.
Пожалуй, добавлю, что вот это вот всё индустрии несколько мешает, потому что люди, которые принимают решения о использовании OSS во внутренних разработках, будут вспоминать эти истории, и очередной раз задумываться, связываться с этими эмо(которые сегодня раздают бесплатно, а завтра плачутся, что им там каши недодали) с github, или нет.
———
https://venam.nixers.net/blog/unix/2021/02/07/audio-stack.html
Неплохой текст про состояние аудио стека в Linux.
https://github.com/jackaudio/jack2
The activation system has been changed for a data flow model and lock-free programming techniques for graph access have been used to have a more dynamic and robust system.
Класс. А это пример lock-free технологий из jack2:
while ((err = snd_pcm_resume(handle)) == -EAGAIN)Слово usleep в кодовой базе встречается 50 раз.
usleep(100); /* wait until the suspend flag is released */
if (err < 0) {
-
При этом, jack все еще лучший звуковой сервер под Linux, все, как и 15 лет назад.
———
https://developers.redhat.com/articles/2022/01/12/prevent-trojan-source-attacks-gcc-12
Сначала создаем себе проблемы, потом героически их решаем. Не, так работы нам хватит навсегда.
Хотелось бы, конечно, флаг в компиляторах
Phoronix
Linux Preparing To Finally Remove Support For The a.out Format
Back in 2019 the Linux kernel deprecated a.out support for that file format used several decades ago before ELF tookover
https://world.hey.com/dhh/i-won-t-let-you-pay-me-for-my-open-source-d7cf4568 #money #gnu #charity
Хороший, но странный, текст.
Мне зашла первая часть, где автор аргументирует, что #GPL и MIT(условно) ненужно рассматривать вместе, как EULA vs. (GPL, MIT), а нужно как EULA vs. GPL vs. MIT, потому что у Столлмана и Гейтса(условно) больше общего друг с другом, чем с MIT. И тот, и другой что-то хотят от вас взамен за свой код. Деньги или другой код - неважно.
But it felt like that exactly because there was no sword hanging over my head. Nobody telling me that this is what I ought or had to do. No one expecting me to do it. So it was an act of volition rather than one of duty. A truly authentic choice.
That to me is freedom.
Автор на это сморит с левых, социалистических позиций.
Ближе к середине текста ему совсем снесло крышу, и он начал галопом по Европам по всем интересным ему темам, там, например, про воспитание детей, дочитывать я не стал.
———
https://raphlinus.github.io/rust/gui/2019/06/21/smooth-resize-test.html
https://raphlinus.github.io/ui/graphics/2020/09/13/compositor-is-evil.html
https://thume.ca/2020/05/20/making-a-latency-tester/
https://lwn.net/Articles/814587/
Про некоторые проблемы современных графических стеков, с кучей интересных ссылок.
В целом, мне кажется, обсуждаемые проблемы и решения несколько надуманы, с повсеместным переходом на 120hz об этом можно будет забыть.
———
https://mesonbuild.com/Wrap-dependency-system-manual.html
Глубже погружаюсь в Meson, и, местами, оно мне перестает нравиться. Например, то, как там сделан vendoring - это жесть. Как отключить его из cli, я не понял, но зато прекрасно работает хак с удалением всех *.wrap файлов в сборочной директории, оно перестает ходить по http и git почем зря.
———
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
На неделе линкера я обещал написать текст про линкер, но не написал.
Зато нашел вот этот текст, там написано примерно то же самое, что хотел написать я:
* базовый алгоритм для простого случая статической линковки
* описан самый важный хак для разрешения циклических зависимостей
* этого вполне достаточно, чтобы иметь в голове простую модель линковки, и не относиться к линкеру, как к волшебству.
Хороший, но странный, текст.
Мне зашла первая часть, где автор аргументирует, что #GPL и MIT(условно) ненужно рассматривать вместе, как EULA vs. (GPL, MIT), а нужно как EULA vs. GPL vs. MIT, потому что у Столлмана и Гейтса(условно) больше общего друг с другом, чем с MIT. И тот, и другой что-то хотят от вас взамен за свой код. Деньги или другой код - неважно.
But it felt like that exactly because there was no sword hanging over my head. Nobody telling me that this is what I ought or had to do. No one expecting me to do it. So it was an act of volition rather than one of duty. A truly authentic choice.
That to me is freedom.
Автор на это сморит с левых, социалистических позиций.
Ближе к середине текста ему совсем снесло крышу, и он начал галопом по Европам по всем интересным ему темам, там, например, про воспитание детей, дочитывать я не стал.
———
https://raphlinus.github.io/rust/gui/2019/06/21/smooth-resize-test.html
https://raphlinus.github.io/ui/graphics/2020/09/13/compositor-is-evil.html
https://thume.ca/2020/05/20/making-a-latency-tester/
https://lwn.net/Articles/814587/
Про некоторые проблемы современных графических стеков, с кучей интересных ссылок.
В целом, мне кажется, обсуждаемые проблемы и решения несколько надуманы, с повсеместным переходом на 120hz об этом можно будет забыть.
———
https://mesonbuild.com/Wrap-dependency-system-manual.html
Глубже погружаюсь в Meson, и, местами, оно мне перестает нравиться. Например, то, как там сделан vendoring - это жесть. Как отключить его из cli, я не понял, но зато прекрасно работает хак с удалением всех *.wrap файлов в сборочной директории, оно перестает ходить по http и git почем зря.
———
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
На неделе линкера я обещал написать текст про линкер, но не написал.
Зато нашел вот этот текст, там написано примерно то же самое, что хотел написать я:
* базовый алгоритм для простого случая статической линковки
* описан самый важный хак для разрешения циклических зависимостей
* этого вполне достаточно, чтобы иметь в голове простую модель линковки, и не относиться к линкеру, как к волшебству.
Hey
I won't let you pay me for my open source
In Debt: The First 5,000 Years, anthropologist David Graeber explores the fascinating history of debt and economies. It starts out by debunking the common myth that prior to coinage, everyone were trapped in this inefficient mode of barter. If you had a chicken…
Так, у нас сегодня задачка по бутстрапу, решения принимаются до завтрашнего вечера, данные в первом комментарии.
Дано: файл с полным логом сборки моей системы.
Надо: написать регулярку длиной до 4 символов, которая отфильтрует наиболее полезные записи(да, до четырех).
Дано: файл с полным логом сборки моей системы.
Надо: написать регулярку длиной до 4 символов, которая отфильтрует наиболее полезные записи(да, до четырех).
"UNIX is simple and coherent..." - Dennis Ritchie
"GNU's Not UNIX" - Richard Stallman
———
https://woodrush.github.io/blog/posts/2022-01-16-neural-networks-in-pure-lisp.html
Статья, конечно, не про нейронные сети, а про то, как сделать float, имея на руках структуру данных в 1 бит.
———
Full disclosure - я очень не люблю gstreamer. Его пилили какие-то сумасшедшие, которые решили, что граф обработки multimedia может свалиться в runtime, а не в момент его конструирования. Графы там сложные, падают почем зря. Ну и 15 лет назад библиотека была настолько нестабильна, что я чуть не поседел, пытаясь ей воспользоваться.
https://gstreamer.freedesktop.org/features/
Graph-based structure allows arbitrary pipeline construction
И произвольные падения в runtime. Потому что надо не arbitrary, а только те, что имеют смысл в runtime.
Based on GLib 2.0 object model for object-oriented design and inheritance
Хуже объектной модели #glib не бывает вообще ничего. Магия на препроцессоре, которая приводит к генерации исходников похлеще, чем в С++, шаг влево - вправо - расстрел на месте. Про 10 уровней indirection и про то, что все в куче - я вообще молчу(а потом удивляются, почему программы на GTK жрут памяти больше и работают медленнее, чем QT)
Compact core library of less than 500KB, about 65 K lines of code
Multi-threaded pipelines are trivial and transparent to construct
Нет.
Clean, simple and stable API for both plugin and application developers
Знаете, кому и кобыла - невеста. Возможно, коллеги не видели clean and simple API.
Короче, если есть выбор - берите ffmpeg. К сожалению, WebKit использует gstreamer, поэтому пришлось повозиться.
———
https://www.da.vidbuchanan.co.uk/blog/webos-wampage.html
Я не любитель взлома, у меня мозг устроен по другому, но именно поэтому интересно иногда почитать, как мозг устроен у людей, которым это интересно.
Взлом WebOS через кеш байткода в V8. long story short - имплантируем в кеш байткода проезд по памяти, и, благодаря этому, забираемся в потроха браузера.
"GNU's Not UNIX" - Richard Stallman
———
https://woodrush.github.io/blog/posts/2022-01-16-neural-networks-in-pure-lisp.html
Статья, конечно, не про нейронные сети, а про то, как сделать float, имея на руках структуру данных в 1 бит.
———
Full disclosure - я очень не люблю gstreamer. Его пилили какие-то сумасшедшие, которые решили, что граф обработки multimedia может свалиться в runtime, а не в момент его конструирования. Графы там сложные, падают почем зря. Ну и 15 лет назад библиотека была настолько нестабильна, что я чуть не поседел, пытаясь ей воспользоваться.
https://gstreamer.freedesktop.org/features/
Graph-based structure allows arbitrary pipeline construction
И произвольные падения в runtime. Потому что надо не arbitrary, а только те, что имеют смысл в runtime.
Based on GLib 2.0 object model for object-oriented design and inheritance
Хуже объектной модели #glib не бывает вообще ничего. Магия на препроцессоре, которая приводит к генерации исходников похлеще, чем в С++, шаг влево - вправо - расстрел на месте. Про 10 уровней indirection и про то, что все в куче - я вообще молчу(а потом удивляются, почему программы на GTK жрут памяти больше и работают медленнее, чем QT)
Compact core library of less than 500KB, about 65 K lines of code
pg@fedora:~/mix/store/vVPM7CFLUYaHJm8iL-lib-gstreamer-19/lib du100 мегабайт, и сюда не входит mpeg/libav/ogg/etc
376 ./pkgconfig
97116 .
Multi-threaded pipelines are trivial and transparent to construct
Нет.
Clean, simple and stable API for both plugin and application developers
Знаете, кому и кобыла - невеста. Возможно, коллеги не видели clean and simple API.
Короче, если есть выбор - берите ffmpeg. К сожалению, WebKit использует gstreamer, поэтому пришлось повозиться.
———
https://www.da.vidbuchanan.co.uk/blog/webos-wampage.html
Я не любитель взлома, у меня мозг устроен по другому, но именно поэтому интересно иногда почитать, как мозг устроен у людей, которым это интересно.
Взлом WebOS через кеш байткода в V8. long story short - имплантируем в кеш байткода проезд по памяти, и, благодаря этому, забираемся в потроха браузера.
Woodrush’s Blog
Building a Neural Network in Pure Lisp Without Built-In Numbers Using Only Atoms and Lists
A neural network written in pure Lisp without built-in numbers using only atoms and lists in SectorLISP, a 512-byte Lisp interpreter written by the authors of the SectorLISP project.
commit -m "better"
Так, у нас сегодня задачка по бутстрапу, решения принимаются до завтрашнего вечера, данные в первом комментарии. Дано: файл с полным логом сборки моей системы. Надо: написать регулярку длиной до 4 символов, которая отфильтрует наиболее полезные записи(да…
И первое место занимают 2 регулярки!
* '0m' - 2 символа. Позволяет выгрепать все обозначенные цветом строки. Если автор сборочного скрипта не сумасшедший пользователь https://github.com/Textualize/rich, то это хороший источник информации. Используется знание того, как устроена rst ansi escape code.
* ': ' - 2 символа. Использует знание того, что всю типизированную информацию люди часто выводят в формате key: value. Находит ошибки, предупреждения, несработавшие configure опции, и так далее
* '0m' - 2 символа. Позволяет выгрепать все обозначенные цветом строки. Если автор сборочного скрипта не сумасшедший пользователь https://github.com/Textualize/rich, то это хороший источник информации. Используется знание того, как устроена rst ansi escape code.
* ': ' - 2 символа. Использует знание того, что всю типизированную информацию люди часто выводят в формате key: value. Находит ошибки, предупреждения, несработавшие configure опции, и так далее
GitHub
GitHub - Textualize/rich: Rich is a Python library for rich text and beautiful formatting in the terminal.
Rich is a Python library for rich text and beautiful formatting in the terminal. - Textualize/rich
https://www.opennet.ru/opennews/art.shtml?num=56518 #law #yeswecan #provider
Опять наезжают на youtube-dl. Надеюсь, Европа с ее continental law, с этими говнюками справится лучше.
Отмечу, что уже хорошо то, что идут в суд, а не в github. И провайдер молодцы - не отключают по первому требованию.
Не могу удержаться от того, чтобы не запостить этот коммент с opennet:
"Надо заметить: плеер из веб-интерфейса сильнее греет камень, нежели тот же mpv, получающий видеопоток через сабж (или его форки).
Пользователей у ютуба -- почти целая планета (минус китай).
Это значит, что ютуб серьёзно увеличивает человеческий углеродный след, что сильно влияет на изменение климата и всякое другое.
Поэтому почему ещё не подключены зелёные активисты с гретой тумберг, которые ратовали бы за запрет просмотра ютуба в браузерах или андройд-приложениях и требовали бы принудительного перехода ютуба на youtube-dl?"
———
https://cp4space.hatsya.com/2022/01/14/conway-conjecture-settled/
Тема огонь. И сам факт(что существуют принципиально неизменяемые(и вечные) объекты(то есть, если они есть во время T, то они должны были быть и во время T-1), это автоматически доказывает утверждение, что существуют non-glider-constructible объекты), и то, как он доказан(SAT).
А ведь еще лет 10 - 15 назад математики утверждали, что их-то ну никогда-никогда.
Короче, не текст, а полчаса истинного удовольствия.
———
https://github.com/leandromoreira/ffmpeg-libav-tutorial
Девочка Антон продолжает исследовать мир AV в Linux.
Скажите, а зумеры уже полностью захватили мир, и теперь даже сложные темы будут вот так, в картинках?
———
https://vlang.io/ #vlang
Я тут ищу язык, который:
* быстро собирается
* работает под все unix платформы
* нормально "бутстрепается"
Для того, чтобы писать на нем сборочные утилиты, которые будут выполняться на host системе во время сборки.
Python был бы неплох, но он просто люто, бешено тормозит в последние годы. Если я на нем пишу, скажем, враппер для clang(https://github.com/pg83/mix/blob/main/pkgs/lib/c++/std/mix.sh#L47, для исправления кривых опций от автора какой-нить системы сборки), то время сборки легко увеличивается в 2 раза.
V похож на Go, но более хорошо "бутстрепается".
———
https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.17-Page-Table-Check
https://www.opennet.ru/opennews/art.shtml?num=56523
Все #хорошее в ядро идет из Google.
———
https://tass.ru/politika/13441081
Как вы уже понимаете/помните, "инфраструктурная площадка не может bla-bla-bla", но вот в этом случае даже я не хочу быть адвокатом дьявола.
Опять наезжают на youtube-dl. Надеюсь, Европа с ее continental law, с этими говнюками справится лучше.
Отмечу, что уже хорошо то, что идут в суд, а не в github. И провайдер молодцы - не отключают по первому требованию.
Не могу удержаться от того, чтобы не запостить этот коммент с opennet:
"Надо заметить: плеер из веб-интерфейса сильнее греет камень, нежели тот же mpv, получающий видеопоток через сабж (или его форки).
Пользователей у ютуба -- почти целая планета (минус китай).
Это значит, что ютуб серьёзно увеличивает человеческий углеродный след, что сильно влияет на изменение климата и всякое другое.
Поэтому почему ещё не подключены зелёные активисты с гретой тумберг, которые ратовали бы за запрет просмотра ютуба в браузерах или андройд-приложениях и требовали бы принудительного перехода ютуба на youtube-dl?"
———
https://cp4space.hatsya.com/2022/01/14/conway-conjecture-settled/
Тема огонь. И сам факт(что существуют принципиально неизменяемые(и вечные) объекты(то есть, если они есть во время T, то они должны были быть и во время T-1), это автоматически доказывает утверждение, что существуют non-glider-constructible объекты), и то, как он доказан(SAT).
А ведь еще лет 10 - 15 назад математики утверждали, что их-то ну никогда-никогда.
Короче, не текст, а полчаса истинного удовольствия.
———
https://github.com/leandromoreira/ffmpeg-libav-tutorial
Девочка Антон продолжает исследовать мир AV в Linux.
Скажите, а зумеры уже полностью захватили мир, и теперь даже сложные темы будут вот так, в картинках?
———
https://vlang.io/ #vlang
Я тут ищу язык, который:
* быстро собирается
* работает под все unix платформы
* нормально "бутстрепается"
Для того, чтобы писать на нем сборочные утилиты, которые будут выполняться на host системе во время сборки.
Python был бы неплох, но он просто люто, бешено тормозит в последние годы. Если я на нем пишу, скажем, враппер для clang(https://github.com/pg83/mix/blob/main/pkgs/lib/c++/std/mix.sh#L47, для исправления кривых опций от автора какой-нить системы сборки), то время сборки легко увеличивается в 2 раза.
V похож на Go, но более хорошо "бутстрепается".
———
https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.17-Page-Table-Check
https://www.opennet.ru/opennews/art.shtml?num=56523
Все #хорошее в ядро идет из Google.
———
https://tass.ru/politika/13441081
Как вы уже понимаете/помните, "инфраструктурная площадка не может bla-bla-bla", но вот в этом случае даже я не хочу быть адвокатом дьявола.
www.opennet.ru
Звукозаписывающие компании подали иск за предоставление хостинга проекту Youtube-dl
Звукозаписывающие компании Sony Entertainment, Warner Music Group и Universal Music подали в Германии судебный иск против провайдера Uberspace, который предоставляет хостинг для официального сайта проекта youtube-dl. В ответ на ранее отправленный внесудебный…
https://www.opennet.ru/opennews/art.shtml?num=56525
https://nakst.gitlab.io/essence
"Система может работать на устаревшем оборудовании с менее чем 64 МБ ОЗУ и занимает около 30 МБ дискового пространства. Для экономии ресурсов выполняется только активное приложение, а все фоновые программы приостанавливаются."
Класс, а я-то думал, чего у автора шелла нет в поставке. А он там просто работать не может же - потому что две программы должны одновременно выполняться.
———
https://www.phoronix.com/scan.php?page=news_item&px=GCC-12-Enters-Stage-4
"One fundamental change made by GCC developers upon entering stage four development was the decision to rename all .c C source files comprising the GCC compiler to now using a .cc extension."
"Fundamental"
OK.jpg
———
http://matrixmultiplication.xyz/
В продолжении темы зумеров и картинок. Интересно, скоро на мехмате?
———
https://lemire.me/blog/2022/01/17/what-is-the-range-of-a-number-type/
Интерпретация #Lemire, конечно, приятнее.
Что я могу добавить, как человек, закончивший кафедру вычмата мехмата МГУ?
* Придумывать численно устойчивые алгоритмы с матрицами - это какая-то магия, я так и не научился
* В своем коде я любыми способами избегаю чисел с плавающей точкой. Всегда предпочту рациональную дробь, и ручные манипуляции с ней.
* Авторы работ по deep learning - шарлатаны. По крайней мере, когда они пытаются объяснить, что их алгоритм почему-то работает, апеллируя к тем или иным свойствам результата алгоритма на матрицах. Апеллировать к свойствам этих алгоритмов, особенно на какой-нить там 16-битной арифметике - ну такое. Лучше бы честно писали что-то типа "мы проверили 100500 разных вариантов, вот такие почему-то работают".
https://nakst.gitlab.io/essence
"Система может работать на устаревшем оборудовании с менее чем 64 МБ ОЗУ и занимает около 30 МБ дискового пространства. Для экономии ресурсов выполняется только активное приложение, а все фоновые программы приостанавливаются."
Класс, а я-то думал, чего у автора шелла нет в поставке. А он там просто работать не может же - потому что две программы должны одновременно выполняться.
———
https://www.phoronix.com/scan.php?page=news_item&px=GCC-12-Enters-Stage-4
"One fundamental change made by GCC developers upon entering stage four development was the decision to rename all .c C source files comprising the GCC compiler to now using a .cc extension."
"Fundamental"
OK.jpg
———
http://matrixmultiplication.xyz/
В продолжении темы зумеров и картинок. Интересно, скоро на мехмате?
———
https://lemire.me/blog/2022/01/17/what-is-the-range-of-a-number-type/
Интерпретация #Lemire, конечно, приятнее.
Что я могу добавить, как человек, закончивший кафедру вычмата мехмата МГУ?
* Придумывать численно устойчивые алгоритмы с матрицами - это какая-то магия, я так и не научился
* В своем коде я любыми способами избегаю чисел с плавающей точкой. Всегда предпочту рациональную дробь, и ручные манипуляции с ней.
* Авторы работ по deep learning - шарлатаны. По крайней мере, когда они пытаются объяснить, что их алгоритм почему-то работает, апеллируя к тем или иным свойствам результата алгоритма на матрицах. Апеллировать к свойствам этих алгоритмов, особенно на какой-нить там 16-битной арифметике - ну такое. Лучше бы честно писали что-то типа "мы проверили 100500 разных вариантов, вот такие почему-то работают".
www.opennet.ru
Essence - самобытная операционная система со своим ядром и графической оболочкой
Доступна для начального тестирования новая операционная система Essence, поставляемая со своим ядром и графическим интерфейсом пользователя. Проект развивается одним энтузиастом с 2017 года, создан с нуля и примечателен самобытным подходом к построению рабочего…
https://news.microsoft.com/2022/01/18/microsoft-to-acquire-activision-blizzard-to-bring-the-joy-and-community-of-gaming-to-everyone-across-every-device/
Чо, теперь Diablo только на Xbox будет?
———
https://habr.com/ru/news/t/646145/
50000 ноутов - это немало. Интересно, на какую часть дохода наше уважаемое минцифры решило нагнуть этих товарищей?
———
https://wiki.linuxfoundation.org/realtime/rtl/blog#the_real-time_endgame_is_moving_quickly_now
Оказывается, недавно в ядро вмержили патч про realtime, с 20-летней историей.
Текст про текущее состояние RT в Linux. Я все еще не отчаиваюсь победить лагающий браузер.
А вот что пишут коллеги про тестирование RT в ядре:
https://lwn.net/Articles/830660/
Ideally, each new stable kernel would be downloaded automatically, built, and run through a series of realtime-specific tests.
Все же понимают, в чем тут facepalm? *
———
https://www.phoronix.com/scan.php?page=news_item&px=Qt-Digital-Advertising-1.0
"Qt Launches Digital Advertising Platform To Integrate Ads Into App UIs"
Нематерных слов у меня по этой теме нет, простите.
———
Одной строкой:
https://github.com/zevlg/telega.el - клиент телеги для emacs. Жалко, что я использую другую OS.
https://krebsonsecurity.com/2022/01/norton-360-now-comes-with-a-cryptominer/comment-page-1/ - а чо, тоже способ монетизации.
https://www.nginx.com/blog/do-svidaniya-igor-thank-you-for-nginx/ - Игорь всё.
* - берем стабильное ядро, и проверяем, есть ли в нем баги. В стабильном ядре. После релиза. Сначала делаем релиз стабильного ядра, потом проверяем, работает ли в нем RT.
Чо, теперь Diablo только на Xbox будет?
———
https://habr.com/ru/news/t/646145/
50000 ноутов - это немало. Интересно, на какую часть дохода наше уважаемое минцифры решило нагнуть этих товарищей?
———
https://wiki.linuxfoundation.org/realtime/rtl/blog#the_real-time_endgame_is_moving_quickly_now
Оказывается, недавно в ядро вмержили патч про realtime, с 20-летней историей.
Текст про текущее состояние RT в Linux. Я все еще не отчаиваюсь победить лагающий браузер.
А вот что пишут коллеги про тестирование RT в ядре:
https://lwn.net/Articles/830660/
Ideally, each new stable kernel would be downloaded automatically, built, and run through a series of realtime-specific tests.
Все же понимают, в чем тут facepalm? *
———
https://www.phoronix.com/scan.php?page=news_item&px=Qt-Digital-Advertising-1.0
"Qt Launches Digital Advertising Platform To Integrate Ads Into App UIs"
Нематерных слов у меня по этой теме нет, простите.
———
Одной строкой:
https://github.com/zevlg/telega.el - клиент телеги для emacs. Жалко, что я использую другую OS.
https://krebsonsecurity.com/2022/01/norton-360-now-comes-with-a-cryptominer/comment-page-1/ - а чо, тоже способ монетизации.
https://www.nginx.com/blog/do-svidaniya-igor-thank-you-for-nginx/ - Игорь всё.
* - берем стабильное ядро, и проверяем, есть ли в нем баги. В стабильном ядре. После релиза. Сначала делаем релиз стабильного ядра, потом проверяем, работает ли в нем RT.
Microsoft
Microsoft to acquire Activision Blizzard to bring the joy and community of gaming to everyone, across every device
Legendary games, immersive interactive entertainment and publishing expertise accelerate growth in Microsoft’s Gaming business across mobile, PC, console and cloud. REDMOND, Wash. and Santa Monica, Calif. – Jan. 18, 2022 – With three billion people actively…
https://www.phoronix.com/scan.php?page=news_item&px=LibreOffice-WASM-2022 #wasm #WASI
Писал про WASM в Firefox. Мне кажется, что за WASM, конечно, большое будущее(а все же помнят, что я мастер предсказывать уже произошедшие события, да?):
* Оно достаточно вменяемое в среднем. Без встроенного GC там, например.
* Насколько я понял, WASM bytecode сохраняет более полный граф выполнения программы(условно говоря, не goto label, а if - then - else) в сериализованном виде. Я недавно читал статью(к сожалению не сохранил, если вдруг есть под рукой - скиньте, pls), что такая структура позволяет процессору лучше оптимизировать выполнение кода.
* Ну и самая мякотка - легион JS-разрабов, которые затащут этот WASM везде. И, знаете ли, в какой-то момент может показаться очень заманчивым начать исполнять браузер и Electron на реальном железе.
Короче, вот вам прогноз - на горизонте в 15 лет мы увидим соревнование WASM и RISC-V, в реальном железе(я вот только не очень понял, насколько WASM memory safe по дефолту, поэтому в реальном железе может быть немного другой вариант).
Хотя, конечно, я часто бываю черезчур оптимистичным.
https://medium.com/@losfair/a-comparison-between-webassembly-and-risc-v-e8fb9d37e6cc
То, что WASM заточено на JIT, IMHO, как раз будет только в плюс, потому что процессоры все больше и больше становятся похожи на hi-perf VM.
Почему это не произошло с Java, или на мобильных платформах уже? А все заметили, что сейчас случился ренессанс процессоростроения, и процы в железе под разные задачи не отливает разве что ленивый?
———
Я иногда люблю чем-нить упороться, а теперь у меня для этого есть новая игрушка - мой Mix.
Я его строю не только как пакетный менеджер, но и как (мета) систему сборки, построенную по enterprise лекалам. Например: #ix #gold #dev_shell #ix_run
* кросс-компиляция
* из этого следует возможность собрать произвольный код с произвольным набором флагов и опций.
То есть, я могу построить всю программу целиком, включая библиотеки, с такими фичами, как:
* санитайзеры
* debug/release
* разные optimization levels
Конечно, без спроса и согласия авторов этого кода, потому что ждать, пока везде добавят поддержку санитайзеров можно до морковкиного заговения.
Для всяких bazel/buck/ya/etc это очевидные свойства, но для OSS систем это достаточно свежая вещь.
Короче, мне всегда было интересно, что будет, если там разные программы пособирать с С++ garbage collector в качестве аллокатора.
* Quake работает like a charm, без лагов, памяти жрет раза в полтора больше.
* Браузер не запускается, какие-то проблемы в выделении drm буффера.
Кстати, gc не такая уж и глупость, оно помогает для того, чтобы заставить работать какую-нить бажную программу с use after free, а у меня такие есть(например, M4 некоторых версий).
Писал про WASM в Firefox. Мне кажется, что за WASM, конечно, большое будущее(а все же помнят, что я мастер предсказывать уже произошедшие события, да?):
* Оно достаточно вменяемое в среднем. Без встроенного GC там, например.
* Насколько я понял, WASM bytecode сохраняет более полный граф выполнения программы(условно говоря, не goto label, а if - then - else) в сериализованном виде. Я недавно читал статью(к сожалению не сохранил, если вдруг есть под рукой - скиньте, pls), что такая структура позволяет процессору лучше оптимизировать выполнение кода.
* Ну и самая мякотка - легион JS-разрабов, которые затащут этот WASM везде. И, знаете ли, в какой-то момент может показаться очень заманчивым начать исполнять браузер и Electron на реальном железе.
Короче, вот вам прогноз - на горизонте в 15 лет мы увидим соревнование WASM и RISC-V, в реальном железе(я вот только не очень понял, насколько WASM memory safe по дефолту, поэтому в реальном железе может быть немного другой вариант).
Хотя, конечно, я часто бываю черезчур оптимистичным.
https://medium.com/@losfair/a-comparison-between-webassembly-and-risc-v-e8fb9d37e6cc
То, что WASM заточено на JIT, IMHO, как раз будет только в плюс, потому что процессоры все больше и больше становятся похожи на hi-perf VM.
Почему это не произошло с Java, или на мобильных платформах уже? А все заметили, что сейчас случился ренессанс процессоростроения, и процы в железе под разные задачи не отливает разве что ленивый?
———
Я иногда люблю чем-нить упороться, а теперь у меня для этого есть новая игрушка - мой Mix.
Я его строю не только как пакетный менеджер, но и как (мета) систему сборки, построенную по enterprise лекалам. Например: #ix #gold #dev_shell #ix_run
* кросс-компиляция
* из этого следует возможность собрать произвольный код с произвольным набором флагов и опций.
То есть, я могу построить всю программу целиком, включая библиотеки, с такими фичами, как:
* санитайзеры
* debug/release
* разные optimization levels
Конечно, без спроса и согласия авторов этого кода, потому что ждать, пока везде добавят поддержку санитайзеров можно до морковкиного заговения.
Для всяких bazel/buck/ya/etc это очевидные свойства, но для OSS систем это достаточно свежая вещь.
Короче, мне всегда было интересно, что будет, если там разные программы пособирать с С++ garbage collector в качестве аллокатора.
* Quake работает like a charm, без лагов, памяти жрет раза в полтора больше.
* Браузер не запускается, какие-то проблемы в выделении drm буффера.
Кстати, gc не такая уж и глупость, оно помогает для того, чтобы заставить работать какую-нить бажную программу с use after free, а у меня такие есть(например, M4 некоторых версий).
Phoronix
LibreOffice Sees New Activity For Compiling To WebAssembly
Last May there was some work on compiling LibreOffice to WebAssembly as another means of getting this open-source office suite executing within the web browser and other environments
Дополню тему про кросс-компиляцию и про сборку с разными флагами.
Actually, я умею собирать с отдельным набором флагов произвольное поддерево сборки.
Пример: https://github.com/pg83/mix/blob/main/pkgs/bld/compiler/mix.sh#L4
Что тут происходит? Я говорю, что цель bld/compiler(мета-цель для указания зависимости от компилятора c++) собирается с thin lto + icf(== fast), и по стандарту С++14. То есть, я с этими опциями собираю все поддерево библиотек, нужных для bin/clang/13.
Еще пример - https://github.com/pg83/mix/blob/main/pkgs/mix/template/std/stdenv.sh#L10
Собираем мега-оптимизированный распаковщик, так как распаковка архивов с исходниками занимает существенное время.
Библиотеки, собранные с этими флагами для этих целей, не конфликтуют друг с другом и с библиотеками для других целей(без этих флагов).
Еще отмечу, что, если собрать бинарник с -O0 -g -fno-pic(блин, божественный ассемблер без GOT/PLT говна!), и чтобы в fs лежали все исходники, то даже дебажить с gdb становится приятно. Для корпоративных систем сборки это само собой разумеющееся, для OSS это довольно непривычный опыт.
———
Я ненавижу naming problem, и трачу на нее непозволительно много времени.
В Mix я запустил эксперимент - программы раскладывал в какую-то иерархию, а все библиотеки складывал в lib/.
Эксперимент закончен, дерево программ я расформировал, переложил все плоским списком в bin/: https://github.com/pg83/mix/tree/main/pkgs/bin
Больше не надо задумываться, куда положить gcc(lang? gnu?), или wget(net? gnu?), или как там расклассифицировать toybox.
Плохая иерархия - хуже отсутствия иерархии. Плохая иерархия ведет тебя по ложному пути, а потом обманывает тебя(например, говорит, что в lang/ нет gcc, и ты думаешь, что gcc вообще нет в иерархии).
Удобно было бы раскладывать папочки по списку тегов, но fs так не умеет.
Замечу, что список плоский только в среднем, немного ad hoc иерархии там есть, но она не вымученная, и только помогает.
Nix имеет иерархию, brew, например, нет. В brew искать пакеты мне удобнее, хотя их там много тысяч штук.
Actually, я умею собирать с отдельным набором флагов произвольное поддерево сборки.
Пример: https://github.com/pg83/mix/blob/main/pkgs/bld/compiler/mix.sh#L4
Что тут происходит? Я говорю, что цель bld/compiler(мета-цель для указания зависимости от компилятора c++) собирается с thin lto + icf(== fast), и по стандарту С++14. То есть, я с этими опциями собираю все поддерево библиотек, нужных для bin/clang/13.
Еще пример - https://github.com/pg83/mix/blob/main/pkgs/mix/template/std/stdenv.sh#L10
Собираем мега-оптимизированный распаковщик, так как распаковка архивов с исходниками занимает существенное время.
Библиотеки, собранные с этими флагами для этих целей, не конфликтуют друг с другом и с библиотеками для других целей(без этих флагов).
Еще отмечу, что, если собрать бинарник с -O0 -g -fno-pic(блин, божественный ассемблер без GOT/PLT говна!), и чтобы в fs лежали все исходники, то даже дебажить с gdb становится приятно. Для корпоративных систем сборки это само собой разумеющееся, для OSS это довольно непривычный опыт.
———
Я ненавижу naming problem, и трачу на нее непозволительно много времени.
В Mix я запустил эксперимент - программы раскладывал в какую-то иерархию, а все библиотеки складывал в lib/.
Эксперимент закончен, дерево программ я расформировал, переложил все плоским списком в bin/: https://github.com/pg83/mix/tree/main/pkgs/bin
Больше не надо задумываться, куда положить gcc(lang? gnu?), или wget(net? gnu?), или как там расклассифицировать toybox.
Плохая иерархия - хуже отсутствия иерархии. Плохая иерархия ведет тебя по ложному пути, а потом обманывает тебя(например, говорит, что в lang/ нет gcc, и ты думаешь, что gcc вообще нет в иерархии).
Удобно было бы раскладывать папочки по списку тегов, но fs так не умеет.
Замечу, что список плоский только в среднем, немного ad hoc иерархии там есть, но она не вымученная, и только помогает.
Nix имеет иерархию, brew, например, нет. В brew искать пакеты мне удобнее, хотя их там много тысяч штук.
👍1
Короче, я сделал, можно поздравлять(не, реально!)
Mix, на голом железе, real 3D accel, network, no systemd, no .so, no /lib/.
Mix, на голом железе, real 3D accel, network, no systemd, no .so, no /lib/.
🎉18🔥16