https://www.opennet.ru/opennews/art.shtml?num=56233
"Проект Airyx развивает редакцию FreeBSD, совместимую с приложениями macOS"
Иногда я не понимаю, что думать, про OSS проекты. Вот этот похож на откровенный стеб - посмотрите на скриншоты, где MacOS, и где вот это поделие? (судя по всему, это вариация GnuSTEP). Сайт(https://airyx.org/) - привет из 80-ых, вырвиглазное нечто. Но Issue tracker и forum живые. Короче, вот про что это? Кто все эти люди, которые качают и ставят себе это поделие?
———
https://www.gwern.net/docs/www/0xeb.net/86e4b3bee45b08ac9249c10b4d649637df73074a.pdf
Феерическая презентация про эмуляцию buffer overflow. Long story short - в оригинальном starcraft от 98 года был проезд по памяти, который эксплуатировался картоделами. Например, благодаря ему запилили карту под starcraft, которая представляет из себя super mario. Карт таких создано было приличное количество, и нужно было, чтобы они продолжили работать в starcraft: remastered от 2017 года. Короче, эпичненько.
———
Мне тут в личных переписках предлагают завести аккаунт на Патреон, или где-то еще. Денег мне не надо, пишу я с гораздо более интересной целью - у меня наполеоновские планы на Mix, но двигать целый дистрибутив в одиночку - ну так себе план. Короче, я ищу себе компанию для этого нелегкого дела. Поэтому лучшее, что вы можете для меня сделать - это привлечь сюда таких же энтузиастов(или, например, рассказать, где их еще можно поискать).
Зачем мне вообще двигать свой дистрибутив? Мне он нравится, но развивать его всю жизнь одному - сложно. Если найдется 100 - 1000 заинтересованных пользователя(а это норм тема, гораздо более странные поделия находят себе пользователей еще больше, выше привел пример), сообща делать это гораздо проще.
"Проект Airyx развивает редакцию FreeBSD, совместимую с приложениями macOS"
Иногда я не понимаю, что думать, про OSS проекты. Вот этот похож на откровенный стеб - посмотрите на скриншоты, где MacOS, и где вот это поделие? (судя по всему, это вариация GnuSTEP). Сайт(https://airyx.org/) - привет из 80-ых, вырвиглазное нечто. Но Issue tracker и forum живые. Короче, вот про что это? Кто все эти люди, которые качают и ставят себе это поделие?
———
https://www.gwern.net/docs/www/0xeb.net/86e4b3bee45b08ac9249c10b4d649637df73074a.pdf
Феерическая презентация про эмуляцию buffer overflow. Long story short - в оригинальном starcraft от 98 года был проезд по памяти, который эксплуатировался картоделами. Например, благодаря ему запилили карту под starcraft, которая представляет из себя super mario. Карт таких создано было приличное количество, и нужно было, чтобы они продолжили работать в starcraft: remastered от 2017 года. Короче, эпичненько.
———
Мне тут в личных переписках предлагают завести аккаунт на Патреон, или где-то еще. Денег мне не надо, пишу я с гораздо более интересной целью - у меня наполеоновские планы на Mix, но двигать целый дистрибутив в одиночку - ну так себе план. Короче, я ищу себе компанию для этого нелегкого дела. Поэтому лучшее, что вы можете для меня сделать - это привлечь сюда таких же энтузиастов(или, например, рассказать, где их еще можно поискать).
Зачем мне вообще двигать свой дистрибутив? Мне он нравится, но развивать его всю жизнь одному - сложно. Если найдется 100 - 1000 заинтересованных пользователя(а это норм тема, гораздо более странные поделия находят себе пользователей еще больше, выше привел пример), сообща делать это гораздо проще.
www.opennet.ru
Проект Airyx развивает редакцию FreeBSD, совместимую с приложениями macOS
Доступен первый бета-выпуск операционной системы Airyx, предлагающей окружение в стиле macOS и нацеленной на предоставление определённого уровня совместимости с приложениями для macOS. Airyx базируется на FreeBSD и используется графический стек на основе…
commit -m "better"
Я тут хотел накатать большой текст, но решил, что много чести. https://github.com/rust-lang/rust/issues/40174 "For those following various links to this issue, it is important to note that you can compile code using proc_macro to statically-linked musl binaries…
Мужик сказал - мужик сделал. Перешел с Alacritty на #kitty. Правда, это оказалось не так просто, как я ожидал.
#terminal
Kitty разрабатывает индус. Не, натурально, зовут его, кстати, #Ковид, и у него есть скрипт для подсчета объема его лапшеобразного кода - https://github.com/kovidgoyal/kitty/blob/master/count-lines-of-code. Код соответствующего качества.
Например, он зачем-то импортировал цельнотянутые исходники glfw в свой проект, наверное, чтобы увеличить line count. https://github.com/kovidgoyal/kitty/tree/master/glfw
Собирать статически слинкованный бинарь это решительно не помогает.
Так же мне очень нравился рендеринг шрифтов в alacritty(они там более crispy), и я долгое время искал, какую функцию рендера шрифтов MacOS нужно дернуть, чтобы получить нужный результат. Нашел, держите:
https://github.com/kovidgoyal/kitty/blob/master/kitty/core_text.m#L504
Так же #alacritty химичит с вертикальным размером шрифта - почти pixel to pixel я получил, когда обрезал шрифт на 85% исходной высоты. В коде Alacritty я с ходу этого не нашел, там слишком много вхождений литерала 85.
https://www.reddit.com/r/archlinux/comments/n9noje/alacritty_vs_kitty/ - вот, например, сравнение этих двух эмуляторов терминала.
https://wezfurlong.org/wezterm/config/files.html - пока занимался сборкой Kitty, ознакомился и с другими эмуляторами. Этот меня порадовал своим подходом к конфигурации. Конфиг - это код на lua, который должен вернуть dict. Кто-то еще помнит поисковый балансер? Гениальная же штука!
Оказывается, зря я гнал на авторов терминалов - все они понимают, что протокол терминала не позволяет нормально НЕ делать апдейты посреди процесса вывода программой своего интерфейса. Вот, пожалуйста, документ про это - https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2. Кстати, наш друг Ковид там тоже засветился. Но если понимают - то что же так криво реализуют существующую схему-то?
Кстати, Kitty мерцает существенно меньше, чем Alacritty, хотя и несколько медленнее.
#terminal
Kitty разрабатывает индус. Не, натурально, зовут его, кстати, #Ковид, и у него есть скрипт для подсчета объема его лапшеобразного кода - https://github.com/kovidgoyal/kitty/blob/master/count-lines-of-code. Код соответствующего качества.
Например, он зачем-то импортировал цельнотянутые исходники glfw в свой проект, наверное, чтобы увеличить line count. https://github.com/kovidgoyal/kitty/tree/master/glfw
Собирать статически слинкованный бинарь это решительно не помогает.
Так же мне очень нравился рендеринг шрифтов в alacritty(они там более crispy), и я долгое время искал, какую функцию рендера шрифтов MacOS нужно дернуть, чтобы получить нужный результат. Нашел, держите:
https://github.com/kovidgoyal/kitty/blob/master/kitty/core_text.m#L504
Так же #alacritty химичит с вертикальным размером шрифта - почти pixel to pixel я получил, когда обрезал шрифт на 85% исходной высоты. В коде Alacritty я с ходу этого не нашел, там слишком много вхождений литерала 85.
https://www.reddit.com/r/archlinux/comments/n9noje/alacritty_vs_kitty/ - вот, например, сравнение этих двух эмуляторов терминала.
https://wezfurlong.org/wezterm/config/files.html - пока занимался сборкой Kitty, ознакомился и с другими эмуляторами. Этот меня порадовал своим подходом к конфигурации. Конфиг - это код на lua, который должен вернуть dict. Кто-то еще помнит поисковый балансер? Гениальная же штука!
Оказывается, зря я гнал на авторов терминалов - все они понимают, что протокол терминала не позволяет нормально НЕ делать апдейты посреди процесса вывода программой своего интерфейса. Вот, пожалуйста, документ про это - https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2. Кстати, наш друг Ковид там тоже засветился. Но если понимают - то что же так криво реализуют существующую схему-то?
Кстати, Kitty мерцает существенно меньше, чем Alacritty, хотя и несколько медленнее.
GitHub
kitty/count-lines-of-code at master · kovidgoyal/kitty
Cross-platform, fast, feature-rich, GPU based terminal - kovidgoyal/kitty
Купил тут себе новую игрушку. #xiaomi
Давно хотел себе мощный ноутбук с Linux, при этом:
* Желательно AMD. Intel объективно отстали на много лет, при сравнимой производительности у них бешеный теплопакет, и наоборот. От AMD можно взять 16 потоков, от Intel max 8.
* Желательно, без дискретной видеокарты. Меня душит жаба платить за то, что я не использую. Хочется хорошую встроенную - чтобы рисовать ускоренный десктоп, не более того.
* OLED, 4K. Ноутбук с плохим экраном(Apple) у меня уже есть, хочется хорошего.
* Чтобы Linux без танцев с бубном.
Долго искал, пробовал разные варианты, и вот, тададам!!!
https://www.ixbt.com/news/2021/05/24/oled-3-5k-ryzen-7-5800h-100-1055-xiaomi-mi-notebook-pro-15-ryzen-edition.html
https://www.reddit.com/r/linuxhardware/comments/p4a148/2021_xiaomi_mi_notebook_pro_15_ryzen_edition/
Все, как я хотел(не работает только сенсор отпечатков пальцев), и даже лучше:
* Отличная сборка - лучше, чем у dell xps, asus rog
* Цельнопизженный дизайн от Apple. Мне нравится, нечего тут выделываться, и надо воровать лучшее решение на рынке.
* Благодаря AMD сборка в 16 потоков не жарит коленки, как было в моем Mac Book Pro от 19 года.
Что так себе(но было ожидаемо):
* Батарею держит плохо. Ну, топовое ядро + Linux - это заведомо беспроигрышное сочетание. Не думаю, что я со своими требованиями могу найти что-то лучше.
* Ядро хуже, чем M1. Сборка clang где-то 20 минут(топовые результаты можно почитать где-то тут).
Что просто так себе:
* На клавиатуре есть честные pgup/home/end/pgdown, поэтому fn + arrow не работают. В биосе починки я не нашел.
* Тачпад кажется дубовым. Думаю, это особенность libinput, дойдут руки собрать ее - попробую зафиксить.
Что хочу особо отметить:
* ЭКРАН. Экран просто божественный. Он просто бескомпромиссно хороший. Черный - черный. Белый - белый. Везде. Без бликов. При любой скорости скроллинга. Цвета огонь. Шрифты четкие(нет разницы включать AA, или нет - это значит, что точки достаточно мелкие) - на мониторе от Apple вокруг белых шрифтов на черном фоне видно гало. Я не знаю, как это описать - возьмите телефон с хорошим OLED, и представьте, что у вас весь экран такой. Яркость экрана тоже на высоте. Кажется, это первый ноутбук, где я выкрутил яркость не на 100%.
* Не забываем в загрузку ядра добавлять mitigations=off, это 5 - 10% перфа.
* Китайцы не постеснялись сделать в BIOS по умолчанию китайские иероглифы. Я считаю, это правильно. Вот Apple выебы;%ется, и ничего, все равно ее железки раскупают, как горячие пирожки.
В первый раз провел bootstrap с fedora linux, узнал еще много разных и нетривиальных способов, какими сборочные скрипты лезут в систему. perl, например, запускает linker, и по путям к .so пролезает в host систему.
Давно хотел себе мощный ноутбук с Linux, при этом:
* Желательно AMD. Intel объективно отстали на много лет, при сравнимой производительности у них бешеный теплопакет, и наоборот. От AMD можно взять 16 потоков, от Intel max 8.
* Желательно, без дискретной видеокарты. Меня душит жаба платить за то, что я не использую. Хочется хорошую встроенную - чтобы рисовать ускоренный десктоп, не более того.
* OLED, 4K. Ноутбук с плохим экраном(Apple) у меня уже есть, хочется хорошего.
* Чтобы Linux без танцев с бубном.
Долго искал, пробовал разные варианты, и вот, тададам!!!
https://www.ixbt.com/news/2021/05/24/oled-3-5k-ryzen-7-5800h-100-1055-xiaomi-mi-notebook-pro-15-ryzen-edition.html
https://www.reddit.com/r/linuxhardware/comments/p4a148/2021_xiaomi_mi_notebook_pro_15_ryzen_edition/
Все, как я хотел(не работает только сенсор отпечатков пальцев), и даже лучше:
* Отличная сборка - лучше, чем у dell xps, asus rog
* Цельнопизженный дизайн от Apple. Мне нравится, нечего тут выделываться, и надо воровать лучшее решение на рынке.
* Благодаря AMD сборка в 16 потоков не жарит коленки, как было в моем Mac Book Pro от 19 года.
Что так себе(но было ожидаемо):
* Батарею держит плохо. Ну, топовое ядро + Linux - это заведомо беспроигрышное сочетание. Не думаю, что я со своими требованиями могу найти что-то лучше.
* Ядро хуже, чем M1. Сборка clang где-то 20 минут(топовые результаты можно почитать где-то тут).
Что просто так себе:
* На клавиатуре есть честные pgup/home/end/pgdown, поэтому fn + arrow не работают. В биосе починки я не нашел.
* Тачпад кажется дубовым. Думаю, это особенность libinput, дойдут руки собрать ее - попробую зафиксить.
Что хочу особо отметить:
* ЭКРАН. Экран просто божественный. Он просто бескомпромиссно хороший. Черный - черный. Белый - белый. Везде. Без бликов. При любой скорости скроллинга. Цвета огонь. Шрифты четкие(нет разницы включать AA, или нет - это значит, что точки достаточно мелкие) - на мониторе от Apple вокруг белых шрифтов на черном фоне видно гало. Я не знаю, как это описать - возьмите телефон с хорошим OLED, и представьте, что у вас весь экран такой. Яркость экрана тоже на высоте. Кажется, это первый ноутбук, где я выкрутил яркость не на 100%.
* Не забываем в загрузку ядра добавлять mitigations=off, это 5 - 10% перфа.
* Китайцы не постеснялись сделать в BIOS по умолчанию китайские иероглифы. Я считаю, это правильно. Вот Apple выебы;%ется, и ничего, все равно ее железки раскупают, как горячие пирожки.
В первый раз провел bootstrap с fedora linux, узнал еще много разных и нетривиальных способов, какими сборочные скрипты лезут в систему. perl, например, запускает linker, и по путям к .so пролезает в host систему.
iXBT.com
Экран OLED 3,5K, Ryzen 7 5800H, 100 Вт и тонкий металлический корпус за 1055 долларов. Стартовали продажи Xiaomi Mi Notebook Pro…
Xiaomi сегодня официально представила на домашнем рынке ноутбук Mi Notebook Pro 15 Ryzen Edition — это версия ранее выпущенной модели, но вместо CPU Intel в ней используются мощные APU AMD линейки Ryzen 5000H.
https://www.opennet.ru/opennews/art.shtml?num=56246
Чинят сборку с Emscripten. А я еще удивлялся - чего у меня сломалась статическая сборка питона в 3.11. А это, оказывается, ее шатают для такой благородной задачи. Статическая сборка питона, традиционно, всегда сломана, причем, от релиза к релизу, всегда разным способом. В 3.11 сломали каким-то новым, доселе невиданным, способом(в Modules/Setup оставили модули, часть из которых перенесли в принудительную сборку в Makefile.pre, если кто-то понимает, о чем я), но, надеюсь, раз решили поддержать Emscripten, то больше ломаться не будет. Надо понимать, что сборка под #WASM всегда статическая, сами понимаете, под js в браузере нет никаких .so.
———
https://www.openswr.org/index.html
Начал собирать Mesa, и вот порция свежих знаний. Оказывается, Intel запилил ОЧЕНЬ быстрый software rasterizer для Mesa OpenGL, в десятки раз быстрее, чем llvmpipe. Сравнения с GPU я не нашел, но это уже близко.
———
https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.17-AF_UNIX-Optimization
Оказывается, в Linux все AF_UNIX сокеты живут под одним big lock. Я из текста не понял, это один lock на все, или это только изначальное отображение int fd на внутриядерную структуру(которая сама уже живет без этого big lock). В любом случае, это жесть, и разработчики решили это дело поменять хотя бы на шардированный lock. Дело хорошее, всяким local rpc, типа Wayland, D-Bus, etc, должно стать хорошЕе.
Чинят сборку с Emscripten. А я еще удивлялся - чего у меня сломалась статическая сборка питона в 3.11. А это, оказывается, ее шатают для такой благородной задачи. Статическая сборка питона, традиционно, всегда сломана, причем, от релиза к релизу, всегда разным способом. В 3.11 сломали каким-то новым, доселе невиданным, способом(в Modules/Setup оставили модули, часть из которых перенесли в принудительную сборку в Makefile.pre, если кто-то понимает, о чем я), но, надеюсь, раз решили поддержать Emscripten, то больше ломаться не будет. Надо понимать, что сборка под #WASM всегда статическая, сами понимаете, под js в браузере нет никаких .so.
———
https://www.openswr.org/index.html
Начал собирать Mesa, и вот порция свежих знаний. Оказывается, Intel запилил ОЧЕНЬ быстрый software rasterizer для Mesa OpenGL, в десятки раз быстрее, чем llvmpipe. Сравнения с GPU я не нашел, но это уже близко.
———
https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.17-AF_UNIX-Optimization
Оказывается, в Linux все AF_UNIX сокеты живут под одним big lock. Я из текста не понял, это один lock на все, или это только изначальное отображение int fd на внутриядерную структуру(которая сама уже живет без этого big lock). В любом случае, это жесть, и разработчики решили это дело поменять хотя бы на шардированный lock. Дело хорошее, всяким local rpc, типа Wayland, D-Bus, etc, должно стать хорошЕе.
www.opennet.ru
В основной ветке Python появилась возможность сборки для работы в браузере
Итан Смит (Ethan Smith), один из основных разработчиков MyPyC, компилятора модулей Python в код на языке Си, сообщил о добавлении в кодовую базу CPython (базовая реализация Python) изменений, позволяющих собрать основную ветку CPython для работы внутри браузера…
Новости бутстрапа.
Я собрал opengl, во всех его ипостасях(egl, gles[1, 2, 3], etc). Про то, что у меня теперь драйвер видеокарты влинкован в Sway, я расскажу отдельно. А сегодня - про Mesa(https://www.mesa3d.org/). Mesa - это:
1) Реализация различных API(OpenGL, Vulkan, D3D(да, да, он там есть, нативный, но разработчики это скрывают, потому что не хотят, чтобы им пользовался кто-то, кроме Wine))
2) OSS ускоренные драйвера(AMD, Intel, Noveau, Mali, etc)
Вы знаете, я был очень приятно удивлен. Я никогда не видел такой хорошей кодовой базы на C. Чистый, понятный, код, разумное разделение на слои и разделение ответственности. Если вы хотите(хз, правда, зачем) научиться, как хорошо писать на С - почитайте кодовую базу Mesa.
Я почитал(зачем? проект загружает драйвера в виде .so, это требует некой творческой доработки для статической линковки), и имею вам сказать следующее:
1) Что-то я разуверился, что #asahi linux достигнет какого-то разумного прогресса в плане ускоренного десктопа. Все очень просто. Код для asahi в Mesa - это 200 килобайт, драйвер и компилятор шейдеров. Код развитого драйвера в #Mesa - 5 и более мегабайт. Я не верю в чудо, что разработчики asahi смогли уместить такую сложную штуку, как Apple GPU, в 200К. Я не видел там реализации по существу, все это больше похоже на какой-то boilerplate. :(
2) Благодаря Mesa появилась система сборки Meson(https://mesonbuild.com/). На ней основана сборка практически всего графического стека Linux. И это очень хорошая(не побоюсь сказать, что лучшая OSS) система сборки:
* Мало внешних зависимостей. Фактически, только Python. Python собрать проще и быстрее, чем CMake.
* Сборочные файлы основаны на кастрированном подмножестве Python, чтобы не жестить(https://mesonbuild.com/GuiTutorial.html). Skylark украл эту идею из Meson. Сборочные файлы по большей части декларативные, но немного императивщины дозволено - все же, OSS, много настроек, вариабельность.
* Действительно хорошая поддержка тулзов - Meson знает про clang, lld, и умеет с ними обращаться.
* Сборочные скрипты очень чистые и понятные - без жести, все очень по существу вопроса.
* Хорошо поддерживает вариабельность сборки(настройки). Настройки лежат в отдельном файле, их можно узнать, не читая сборочные скрипты. Это реально удобно. В gnu #autohell для этого нужно запустить configure, и не факт, что он выдаст все настройки. В CMake это IMHO вообще невозможно - любой -DXXX - это настройка, выгрепать их все - невозможно.
* Поддержка кросс-компиляции.
* Идеальный custom_command - {'inputs': [...], 'outputs': [...], 'descr': '...', cmd: ['A', 'B', 'C']}. Кто занимается системами сборки, тот поймет. Я аж прослезился.
* Не мешает, и даже помогает, задаче герметичной сборки. Это редкость.
* Очень быстрый configure stage.
* Не совсем про Meson, но. Оно поддерживает coverity из коробки. И werror из коробки. Это многое говорит о проектах, которые ее используют.
Подобное есть в Bazel, но он очень тяжелый, и зависит от Java.
В общем, я свои проекты портирую на #Meson, и вам желаю того же. Хорошая, годная, вещь.
Ну и вот еще - https://gms.tf/the-rise-of-meson.html Meson очень быстро набирает популярность!
Я собрал opengl, во всех его ипостасях(egl, gles[1, 2, 3], etc). Про то, что у меня теперь драйвер видеокарты влинкован в Sway, я расскажу отдельно. А сегодня - про Mesa(https://www.mesa3d.org/). Mesa - это:
1) Реализация различных API(OpenGL, Vulkan, D3D(да, да, он там есть, нативный, но разработчики это скрывают, потому что не хотят, чтобы им пользовался кто-то, кроме Wine))
2) OSS ускоренные драйвера(AMD, Intel, Noveau, Mali, etc)
Вы знаете, я был очень приятно удивлен. Я никогда не видел такой хорошей кодовой базы на C. Чистый, понятный, код, разумное разделение на слои и разделение ответственности. Если вы хотите(хз, правда, зачем) научиться, как хорошо писать на С - почитайте кодовую базу Mesa.
Я почитал(зачем? проект загружает драйвера в виде .so, это требует некой творческой доработки для статической линковки), и имею вам сказать следующее:
1) Что-то я разуверился, что #asahi linux достигнет какого-то разумного прогресса в плане ускоренного десктопа. Все очень просто. Код для asahi в Mesa - это 200 килобайт, драйвер и компилятор шейдеров. Код развитого драйвера в #Mesa - 5 и более мегабайт. Я не верю в чудо, что разработчики asahi смогли уместить такую сложную штуку, как Apple GPU, в 200К. Я не видел там реализации по существу, все это больше похоже на какой-то boilerplate. :(
2) Благодаря Mesa появилась система сборки Meson(https://mesonbuild.com/). На ней основана сборка практически всего графического стека Linux. И это очень хорошая(не побоюсь сказать, что лучшая OSS) система сборки:
* Мало внешних зависимостей. Фактически, только Python. Python собрать проще и быстрее, чем CMake.
* Сборочные файлы основаны на кастрированном подмножестве Python, чтобы не жестить(https://mesonbuild.com/GuiTutorial.html). Skylark украл эту идею из Meson. Сборочные файлы по большей части декларативные, но немного императивщины дозволено - все же, OSS, много настроек, вариабельность.
* Действительно хорошая поддержка тулзов - Meson знает про clang, lld, и умеет с ними обращаться.
* Сборочные скрипты очень чистые и понятные - без жести, все очень по существу вопроса.
* Хорошо поддерживает вариабельность сборки(настройки). Настройки лежат в отдельном файле, их можно узнать, не читая сборочные скрипты. Это реально удобно. В gnu #autohell для этого нужно запустить configure, и не факт, что он выдаст все настройки. В CMake это IMHO вообще невозможно - любой -DXXX - это настройка, выгрепать их все - невозможно.
* Поддержка кросс-компиляции.
* Идеальный custom_command - {'inputs': [...], 'outputs': [...], 'descr': '...', cmd: ['A', 'B', 'C']}. Кто занимается системами сборки, тот поймет. Я аж прослезился.
* Не мешает, и даже помогает, задаче герметичной сборки. Это редкость.
* Очень быстрый configure stage.
* Не совсем про Meson, но. Оно поддерживает coverity из коробки. И werror из коробки. Это многое говорит о проектах, которые ее используют.
Подобное есть в Bazel, но он очень тяжелый, и зависит от Java.
В общем, я свои проекты портирую на #Meson, и вам желаю того же. Хорошая, годная, вещь.
Ну и вот еще - https://gms.tf/the-rise-of-meson.html Meson очень быстро набирает популярность!
https://www.youtube.com/watch?v=9vyh1APsMAE #abi
IMHO C++ тоже постепенно тонет. И, вот, IBM зачерпывает водички из-за борта, и заботливо подливает в трюм - https://reviews.llvm.org/D111323
TL;DR - поддержка EBCDIC в libc++. На поддержку ICU у IBM мейнфрейма не нашлось(https://icu.unicode.org/#h.fnv22un0oe4t), а тут на тебе!
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4210.pdf - труп их же триграфов еще остыть не успел.
———
https://www.opennet.ru/opennews/art.shtml?num=56265
Про #Vizio и GPL я тут уже писал. Дело принимает интересный оборот, я даже не знаю, кто из сторон бОльший негодяй. Vizio просит прекратить суд, потому что правообладателям кода типа пофиг. Е;%ла жаба гадюку, что называется.
———
https://dwheeler.com/trusting-trust/
Про технику diverse double compiling для защиты от trusting trust я тут тоже писал, вот, текст с комментариями про это, и с кучей интересных ссылок. Мне особенно зашла https://static.lwn.net/images/conf/rtlws11/random-hardware.pdf - "Analysis of inherent randomness of the Linux kernel"
IMHO C++ тоже постепенно тонет. И, вот, IBM зачерпывает водички из-за борта, и заботливо подливает в трюм - https://reviews.llvm.org/D111323
TL;DR - поддержка EBCDIC в libc++. На поддержку ICU у IBM мейнфрейма не нашлось(https://icu.unicode.org/#h.fnv22un0oe4t), а тут на тебе!
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4210.pdf - труп их же триграфов еще остыть не успел.
———
https://www.opennet.ru/opennews/art.shtml?num=56265
Про #Vizio и GPL я тут уже писал. Дело принимает интересный оборот, я даже не знаю, кто из сторон бОльший негодяй. Vizio просит прекратить суд, потому что правообладателям кода типа пофиг. Е;%ла жаба гадюку, что называется.
———
https://dwheeler.com/trusting-trust/
Про технику diverse double compiling для защиты от trusting trust я тут тоже писал, вот, текст с комментариями про это, и с кучей интересных ссылок. Мне особенно зашла https://static.lwn.net/images/conf/rtlws11/random-hardware.pdf - "Analysis of inherent randomness of the Linux kernel"
YouTube
009. Why C++ Sails When the Vasa Sank - Scott Meyers
The Vasa was a 17th-century Swedish warship which suffered such feature creep during construction that it sank shortly after leaving the harbour on its maiden voyage. In the early 1990s, the C++ standardisation committee adopted the Vasa as a cautionary tale…
Жесть, самый странный #debug в моей жизни.
Я собрал sway, который вместо 6 и 7(пишу с другого хоста) печатает вот то, что вы видите сверху. Я, короче, в шоке. libinput:
Вывод - приходит 1 нажатие, которое далее преобразуется в этот текст. Wayland передает клиентам keystrokes, значит, ошибка в коде клиента. Проверяем:
Единственная подозрительная библиотека, с которой слинкованы все клиенты:
С%ка, я чуть не поседел... Один, печатаю в терминале, и тут на экране появляется "HELLO YES THIS IS DOG"...
Как оно пролезло из теста в реальный бинарь - в следующей серии.
pg@:~/sources/mix strings ~/mix/realm/stable/bin/sway | grep hello
pg@:~/sources/mix ldd ~/mix/realm/stable/bin/sway
не является динамическим исполняемым файлом
pg@:~/sources/mix HELLO YES THIS IS DOGHELLOYES THIS IS DOG^C
pg@:~/sources/mix
pg@:~/sources/mix ldd ~/mix/realm/stable/bin/sway
не является динамическим исполняемым файлом
pg@:~/sources/mix strings ~/mix/realm/stable/bin/sway | grep HELLO
pg@:~/sources/mix strings ~/mix/realm/stable/bin/sway | grep DOG
HB_SCRIPT_DOGRA
G_UNICODE_SCRIPT_DOGRA
pg@:~/sources/mix 12345HELLOYES THIS IS DOG890
bash: 12345HELLOYES: команда не найдена
pg@:~/sources/mix 12345 HELLO YES THIS IS DOG 890
Я собрал sway, который вместо 6 и 7(пишу с другого хоста) печатает вот то, что вы видите сверху. Я, короче, в шоке. libinput:
5 event4 KEYBOARD_KEY +1.513s *** (-1) released
event4 KEYBOARD_KEY +1.967s *** (-1) pressed
HELLO event4 KEYBOARD_KEY +2.059s *** (-1) released
event4 KEYBOARD_KEY +2.345s *** (-1) pressed
YES THIS IS DOG event4 KEYBOARD_KEY +2.433s ***
(-1) released
event4 KEYBOARD_KEY +3.082s *** (-1) pressed
event4 KEYBOARD_KEY +3.330s *** (-1) pressed
^C
Вывод - приходит 1 нажатие, которое далее преобразуется в этот текст. Wayland передает клиентам keystrokes, значит, ошибка в коде клиента. Проверяем:
recvmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=
[{iov_base="\34\0\0\0\3\0\30\0n\n\0\0
\376\251d\5\10\0\0\0\1\0\0\0", iov_len=3128}, {iov_base=
"", iov_len=968}], msg_iovlen=2, msg_controllen=0,
msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 24
write(7, "YES THIS IS DOG", 15) = 15
timerfd_settime(6, 0, {it_interval={tv_sec=0,
tv_nsec=40000000}, it_value={tv_sec=0, tv_nsec=600000000}},
NULL) = 0
epoll_pwait(3, [{events=EPOLLIN,
data={u32=2820241184, u64=5633522366240}}], 8, -1, [], 8) = 1
read(7, "YES THIS IS DOG", 24576) = 15
read(7, 0x7ffecfe04050, 24576) = -1 EAGAIN
(Ресурс временно недоступен)
[root@dynamic-vpn pg]# ls -la /proc/3101931/fd/7
lrwx------. 1 pg pg 64 дек 3 07:42 /proc/3101931/fd/7
-> /dev/ptmx
Единственная подозрительная библиотека, с которой слинкованы все клиенты:
/* Multiple keysyms. */
TEST_KEY(KEY_6, "HELLO", 0);
TEST_KEY(KEY_7, "YES THIS IS DOG", 0);
libxkbcommon-xkbcommon-1.3.1/test cat state.c | grep DOG
TEST_KEY(KEY_7, "YES THIS IS DOG", 0);
TEST_KEY(KEY_7, "YES THIS IS DOG", 0);
С%ка, я чуть не поседел... Один, печатаю в терминале, и тут на экране появляется "HELLO YES THIS IS DOG"...
Как оно пролезло из теста в реальный бинарь - в следующей серии.
commit -m "better"
Жесть, самый странный #debug в моей жизни. pg@:~/sources/mix strings ~/mix/realm/stable/bin/sway | grep hello pg@:~/sources/mix ldd ~/mix/realm/stable/bin/sway не является динамическим исполняемым файлом pg@:~/sources/mix HELLO YES THIS IS DOGHELLOYES THIS…
Вот починка, из одной строчки. Дело в том, что make install этого пакета не ставил необходимые данные. Я посмотрел, что с установленной системе эти файлики похожи на содержимое test/data, и просто скопировал тестовые данные в production. Получилось то, что получилось. Где живут настоящие данные, я пока не нашел, поэтому копирую их из системы, чтобы можно было двигаться дальше.
https://github.com/pg83/mix/commit/df138dda7508c7024a372262b8f593bb8fcfb84d#diff-041427458f79449f1c1f36bb41796c56acaaa27b91363293fb6cb62af04a209eR33
https://github.com/pg83/mix/commit/df138dda7508c7024a372262b8f593bb8fcfb84d#diff-041427458f79449f1c1f36bb41796c56acaaa27b91363293fb6cb62af04a209eR33
GitHub
better · pg83/mix@df138dd
statically build packages, for darwin/linux, with clang - better · pg83/mix@df138dd
Forwarded from Daniel Lemire's blog
Science and Technology links (December 4th 2021)
It used to be that all the exciting new processors came from Intel and AMD, and they were meant for your PC. The mobile revolution changed that: it lead to the production of fantastic processors that used little energy. We are now moving back into laptops and servers. The leading supplier of servers is probably Amazon: if you want to run servers for your business, your first choice is often Amazon and its cloud computing infrastructure. And Amazon now makes their own processors. Initially, they made low-cost chips that were secondary to Intel and AMD powerful processors. Amazon released its latest processor, Graviton 3. It is a much wider and deeper chip: The N1 core used in the Graviton2 chip had an instruction fetch unit that was 4 to 8 instructions wide and 4 wide instruction decoder that fed into an 8 wide issue unit that included two SIMD units, two load/store units, three arithmetic units, and a branch unit. With the Perseus N2 core used in the Graviton3, there is an 8 wide fetch unit that feeds into a…
https://lemire.me/blog/2021/12/04/science-and-technology-links-december-4th-2021/
It used to be that all the exciting new processors came from Intel and AMD, and they were meant for your PC. The mobile revolution changed that: it lead to the production of fantastic processors that used little energy. We are now moving back into laptops and servers. The leading supplier of servers is probably Amazon: if you want to run servers for your business, your first choice is often Amazon and its cloud computing infrastructure. And Amazon now makes their own processors. Initially, they made low-cost chips that were secondary to Intel and AMD powerful processors. Amazon released its latest processor, Graviton 3. It is a much wider and deeper chip: The N1 core used in the Graviton2 chip had an instruction fetch unit that was 4 to 8 instructions wide and 4 wide instruction decoder that fed into an 8 wide issue unit that included two SIMD units, two load/store units, three arithmetic units, and a branch unit. With the Perseus N2 core used in the Graviton3, there is an 8 wide fetch unit that feeds into a…
https://lemire.me/blog/2021/12/04/science-and-technology-links-december-4th-2021/
https://repositories.lib.utexas.edu/bitstream/handle/2152/86210/P-2018-02_Intel_Address_Hashing.pdf?sequence=3 (TACC уполномочен заявить!)
Тут вот коллега* прислал красивое. Long story short - у ядер процессора, помимо приватных L1/L2 есть общий LLC. Он устроен примерно так - у каждого ядра есть своя частичка LLC, они все объединены общей шиной, все это организовано в 12-way associative hash table(по хешу от адреса мы понимаем, в какое ядро и в какую его ячейку идти за нужным нам cache line).
Статья про свойства этого хеша, и про то, что false sharing иногда бывает очень сильным.
Статья из тех, что, если бы я ее встретил в дикой природе, я бы прочитал, подивился красивому, и отложил в никуда - построить какую-то разумную мысленную модель вокруг этого IMHO нереально.
Но коллега* прислал статью из-за вполне конкретной причины - одна наша программа с его новым аллокатором ведет себя не очень, судя по всему, из-за причин, описанных в этой статье. Бывает же.
*: Гулин
———
https://tvl.fyi/blog/rewriting-nix
Товарищи решили переписать пакетный менеджер Nix. Причина - он тормозной, что пипец(подтверждаю, обновить 10 пакетов пустым обновлением у меня занимает секунд 20).
1) Товарищи решили поддержать динамическую генерацию графа(когда ноды могут сгенерить новые ноды). Я считаю, что это жесть и путь в никуда.
2) Интересное - "PS: TVL is international, but a lot of the development will take place in our office in Moscow. Say hi if you're around and interested!" - а я вот не знал.
———
https://riscv.org/announcements/2021/12/riscv-ratifies-15-new-specifications/
Теперь risc-v можно официально использовать в серьезных вещах - векторные расширения и гипервизор, в официальных спеках.
Тут вот коллега* прислал красивое. Long story short - у ядер процессора, помимо приватных L1/L2 есть общий LLC. Он устроен примерно так - у каждого ядра есть своя частичка LLC, они все объединены общей шиной, все это организовано в 12-way associative hash table(по хешу от адреса мы понимаем, в какое ядро и в какую его ячейку идти за нужным нам cache line).
Статья про свойства этого хеша, и про то, что false sharing иногда бывает очень сильным.
Статья из тех, что, если бы я ее встретил в дикой природе, я бы прочитал, подивился красивому, и отложил в никуда - построить какую-то разумную мысленную модель вокруг этого IMHO нереально.
Но коллега* прислал статью из-за вполне конкретной причины - одна наша программа с его новым аллокатором ведет себя не очень, судя по всему, из-за причин, описанных в этой статье. Бывает же.
*: Гулин
———
https://tvl.fyi/blog/rewriting-nix
Товарищи решили переписать пакетный менеджер Nix. Причина - он тормозной, что пипец(подтверждаю, обновить 10 пакетов пустым обновлением у меня занимает секунд 20).
1) Товарищи решили поддержать динамическую генерацию графа(когда ноды могут сгенерить новые ноды). Я считаю, что это жесть и путь в никуда.
2) Интересное - "PS: TVL is international, but a lot of the development will take place in our office in Moscow. Say hi if you're around and interested!" - а я вот не знал.
———
https://riscv.org/announcements/2021/12/riscv-ratifies-15-new-specifications/
Теперь risc-v можно официально использовать в серьезных вещах - векторные расширения и гипервизор, в официальных спеках.
https://codeberg.org/dnkl/foot/wiki/Performance #terminal
Я вот решил попробовать какой-то другой эмулятор терминала, один из самых популярных not hardware-accelerated - #foot. Автор, конечно, всячески пытается сделать вид, что он не конкурирует с alacritty:
1) Но вот в тест, где он рвет #alacritty, "срежиссирован" специально - он строчкой ранее пишет, что alacritty гораздо быстрее рендерит пустые глифы, чем заполненные, и, чтобы показать преимущество своего damage control, показывает этот damage control на полностью заполненном терминале. На терминале с небольшим числом непустых глиф даже его damage control не показал бы преимущества.
2) Чтобы его foot не совсем сильно тормозил, он сделал оптимизацию с копированием части буфера через memcpy, если он считает, что она не изменилась. И набажил - у меня при скроллинге, если предыдущие строки немного похожи на следующие, начинаются глюки отрисовки.
Ну не соревнуешься - так не соревнуйся, сделай простую, как 5 копеек, вещь, которой можно пользоваться без hardware acceleration.
———
https://github.com/dvdhrm/kmscon
#kmscon
Какой-то странный проект по замене линуксовой консоли во frame buffer. Я тоже задумался о такой штуке, но мне показалось, что гораздо проще взять киоск-style композитор на основе wlroots, и слинковать в одну программу эмулятор терминала(любой), киоск-style композитор, libinput, и все такое. Получаем бинарь с клиентом-терминалом и сервером-композитором, который умеет в консоль в fb.
———
Я хочу признаться в одной странности, которая меня никак не отпускает. Я строю prefix trie из путей к проектам в своей системе сборки Mix. Что это значит?
lib/pcre, lib/pcre/2, а не lib/pcre2. lib/tom/math, lib/tom/crypt, а не lib/tommath, lib/tomcrypt. lib/z, а не lib/zlib(а это уже что, граф?), net/wget и net/wget/2, и самое любимое - lib/curses/n, lib/curses/netbsd. Пока не сжал dev/build/autoconf, dev/build/automake, но руки чешутся.
Я хз, зачем я это делаю, но мне нравится!
———
У меня было время почитать интернеты про #Vizio и ее предполагаемое нарушение GPL, понял, что зря записал ее в негодяи в прошлый раз. Вот то, что она пытается отменить суд на основе того, что иск подал не владелец кода, это не значит, что они негодяи, и у них нет возможности доказать, что они не используют GPL в своей прошивке, а это просто очень "техническая" вещь - так дешевле.
Я вот решил попробовать какой-то другой эмулятор терминала, один из самых популярных not hardware-accelerated - #foot. Автор, конечно, всячески пытается сделать вид, что он не конкурирует с alacritty:
1) Но вот в тест, где он рвет #alacritty, "срежиссирован" специально - он строчкой ранее пишет, что alacritty гораздо быстрее рендерит пустые глифы, чем заполненные, и, чтобы показать преимущество своего damage control, показывает этот damage control на полностью заполненном терминале. На терминале с небольшим числом непустых глиф даже его damage control не показал бы преимущества.
2) Чтобы его foot не совсем сильно тормозил, он сделал оптимизацию с копированием части буфера через memcpy, если он считает, что она не изменилась. И набажил - у меня при скроллинге, если предыдущие строки немного похожи на следующие, начинаются глюки отрисовки.
Ну не соревнуешься - так не соревнуйся, сделай простую, как 5 копеек, вещь, которой можно пользоваться без hardware acceleration.
———
https://github.com/dvdhrm/kmscon
#kmscon
Какой-то странный проект по замене линуксовой консоли во frame buffer. Я тоже задумался о такой штуке, но мне показалось, что гораздо проще взять киоск-style композитор на основе wlroots, и слинковать в одну программу эмулятор терминала(любой), киоск-style композитор, libinput, и все такое. Получаем бинарь с клиентом-терминалом и сервером-композитором, который умеет в консоль в fb.
———
Я хочу признаться в одной странности, которая меня никак не отпускает. Я строю prefix trie из путей к проектам в своей системе сборки Mix. Что это значит?
lib/pcre, lib/pcre/2, а не lib/pcre2. lib/tom/math, lib/tom/crypt, а не lib/tommath, lib/tomcrypt. lib/z, а не lib/zlib(а это уже что, граф?), net/wget и net/wget/2, и самое любимое - lib/curses/n, lib/curses/netbsd. Пока не сжал dev/build/autoconf, dev/build/automake, но руки чешутся.
Я хз, зачем я это делаю, но мне нравится!
———
У меня было время почитать интернеты про #Vizio и ее предполагаемое нарушение GPL, понял, что зря записал ее в негодяи в прошлый раз. Вот то, что она пытается отменить суд на основе того, что иск подал не владелец кода, это не значит, что они негодяи, и у них нет возможности доказать, что они не используют GPL в своей прошивке, а это просто очень "техническая" вещь - так дешевле.
Codeberg.org
Performance
A fast, lightweight and minimalistic Wayland terminal emulator
Будни #bootstrap.
Собирал тут правильные данные для xkbcommon(ага, те самые "YES THIS IS DOG"). Думал, задачка на 5 минут, но пришлось собрать Perl с вкомпиленными в него модулями. Не то, чтобы я очень хотел это делать, но по цепочке из GNU-того говна из Perl и Bash в проект приехала зависимость от XML::Parser модуля, которому нужен expat. Я сделал это как-то очень странно - подложил в сборку Perl из исходников модуль из Cpan, и он его каким-то чудом подхватил. Магия.
https://github.com/pg83/mix/blob/main/pkgs/dev/lang/perl5/full/mix.sh#L16
Еще из интересных технических решений(в этом же файлике ниже) - сборке этого модуля не хватает miniperl, поэтому я ловко подсовываю вместо miniperl интерпретатор, собранный ранее.
———
https://github.com/nineties/planckforth/blob/main/bootstrap.fs
Потихоньку изучаю Forth, и мне таки начинает казаться(кажется, в этом чате мне об этом уже писали), что для задачи бутстрапа из ничего Forth подходит лучше, чем даже Lisp. Есть что-то магическое, когда поток токенов становится все более и более насыщенным смыслом.
———
Решил тут попробовать воспользоваться firefox, а то chrome у меня в Sway глючит. Мне даже понравилось - с помощью расширения Tree Style Tabs получилось настроить Firefox так, как должен выглядеть браузер(скриншот будет в комментариях, если скриншотилка заработает под Wayland).
IMHO Firefox нужно выкинуть свою реализацию Java Script. Это не то, что придает уникальный привкус браузеру(когда у меня clang начинает побеждать gcc, я выкидываю gcc, и не рефлексирую), на это уходит много ресурсов разработки, и в Мозилле работают не самые крутые инженеры. Java Script от Гугла круче.
Собирал тут правильные данные для xkbcommon(ага, те самые "YES THIS IS DOG"). Думал, задачка на 5 минут, но пришлось собрать Perl с вкомпиленными в него модулями. Не то, чтобы я очень хотел это делать, но по цепочке из GNU-того говна из Perl и Bash в проект приехала зависимость от XML::Parser модуля, которому нужен expat. Я сделал это как-то очень странно - подложил в сборку Perl из исходников модуль из Cpan, и он его каким-то чудом подхватил. Магия.
https://github.com/pg83/mix/blob/main/pkgs/dev/lang/perl5/full/mix.sh#L16
Еще из интересных технических решений(в этом же файлике ниже) - сборке этого модуля не хватает miniperl, поэтому я ловко подсовываю вместо miniperl интерпретатор, собранный ранее.
———
https://github.com/nineties/planckforth/blob/main/bootstrap.fs
Потихоньку изучаю Forth, и мне таки начинает казаться(кажется, в этом чате мне об этом уже писали), что для задачи бутстрапа из ничего Forth подходит лучше, чем даже Lisp. Есть что-то магическое, когда поток токенов становится все более и более насыщенным смыслом.
———
Решил тут попробовать воспользоваться firefox, а то chrome у меня в Sway глючит. Мне даже понравилось - с помощью расширения Tree Style Tabs получилось настроить Firefox так, как должен выглядеть браузер(скриншот будет в комментариях, если скриншотилка заработает под Wayland).
IMHO Firefox нужно выкинуть свою реализацию Java Script. Это не то, что придает уникальный привкус браузеру(когда у меня clang начинает побеждать gcc, я выкидываю gcc, и не рефлексирую), на это уходит много ресурсов разработки, и в Мозилле работают не самые крутые инженеры. Java Script от Гугла круче.
#LLVM news.
https://reviews.llvm.org/rG6a9487df73e9 - полезная проверка, что строки не конструируются от nullptr. Впрочем, начиная с С++2023 соответствующие конструкторы просто забанены.
llvm считает важным упомянуть вот об этом замечательном событии, и мы тоже, вслед за всем прогрессивным человечеством!
"The next Women in Compilers and Tools meetup will take place on December 9th. It will feature Sangeeta Chowdhary’s talk, Fast and Precise Approaches to Detect, Debug, and Repair Numerical Errors."
———
https://www.opennet.ru/opennews/art.shtml?num=56291 #yeswecan #provider
Несколько раз уже писал, что инфраструктурная площадка не может сама себе быть судьей, и решать, кто может пользоваться ее сервисом, а кто нет. Вот пример правильного поведения инфраструктурной площадки, всем бы брать с нее пример. С самим решением суда я не согласен*, но это правильный путь.
*: если кому-то, вдруг, интересно, то я не считаю копирование байт воровством. Впрочем, за контент я стараюсь всегда платить, но не потому что не заплатить было бы кражей, а потому что я хочу, чтобы и завтра у меня был новый контент тоже.
———
https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)
"every frame is perfect", ага.
1) Разработчики Firefox умудрились устроить мне мерцание даже в Wayland, хорошо заметно под нагрузкой.
2) Авторы Sway вообще не понимают, как надо делать композитор. При переключении рабочих столов они сначала рендерят frame, показывают его, а потом уже применяют накопившиеся(пока рабочий стол был скрыт) изменения к итоговой картинке. Это приводит к тому, что первый кадр всегда содержит stale данные. И, соответственно, к мерцанию.
Кстати, лет 10 назад, когда про Wayland еще никто ничего не знал, Я любил мне показывать фотографии вот этой замечательной женщины, когда я что-то искал на тему.
https://yandex.ru/images/search?from=tabbar&text=wayland%20susann
Так я и полюбил латекс.
https://reviews.llvm.org/rG6a9487df73e9 - полезная проверка, что строки не конструируются от nullptr. Впрочем, начиная с С++
llvm считает важным упомянуть вот об этом замечательном событии, и мы тоже, вслед за всем прогрессивным человечеством!
"The next Women in Compilers and Tools meetup will take place on December 9th. It will feature Sangeeta Chowdhary’s talk, Fast and Precise Approaches to Detect, Debug, and Repair Numerical Errors."
———
https://www.opennet.ru/opennews/art.shtml?num=56291 #yeswecan #provider
Несколько раз уже писал, что инфраструктурная площадка не может сама себе быть судьей, и решать, кто может пользоваться ее сервисом, а кто нет. Вот пример правильного поведения инфраструктурной площадки, всем бы брать с нее пример. С самим решением суда я не согласен*, но это правильный путь.
*: если кому-то, вдруг, интересно, то я не считаю копирование байт воровством. Впрочем, за контент я стараюсь всегда платить, но не потому что не заплатить было бы кражей, а потому что я хочу, чтобы и завтра у меня был новый контент тоже.
———
https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)
"every frame is perfect", ага.
1) Разработчики Firefox умудрились устроить мне мерцание даже в Wayland, хорошо заметно под нагрузкой.
2) Авторы Sway вообще не понимают, как надо делать композитор. При переключении рабочих столов они сначала рендерят frame, показывают его, а потом уже применяют накопившиеся(пока рабочий стол был скрыт) изменения к итоговой картинке. Это приводит к тому, что первый кадр всегда содержит stale данные. И, соответственно, к мерцанию.
Кстати, лет 10 назад, когда про Wayland еще никто ничего не знал, Я любил мне показывать фотографии вот этой замечательной женщины, когда я что-то искал на тему.
https://yandex.ru/images/search?from=tabbar&text=wayland%20susann
Так я и полюбил латекс.
😁1
Галопом по Европам.
А вы знали, что можно писать не sed -e s///, а sed -e s|||? Я вот узнал всего полгода назад, и мне это уже сэкономило кучу нервов и сил на эскейпинге /. Наверняка это всем давно известно, и никому не интересно, но я вот не знал.
———
https://hacks.mozilla.org/2021/12/webassembly-and-back-again-fine-grained-sandboxing-in-firefox-95/
Мозилла начала делать какую-то очень странную вещь. Часть библиотек они компилируют не в исполняемый код, а в #WASM, и джитят во время работы. Это им дает возможность установить менее большую surface для особо опасного кода, и, типа, так безопаснее. Я имею сказать:
1) Норм тащить в проект 1000000 строк кода, чтобы обезопасить 10000? Впрочем, JIT для WASM и так и так бы был.
2) А почему бы не сделать на WASM весь браузер? https://pbs.twimg.com/media/ELxt9LSXUAMlmIp.jpg А, было же такое - https://en.wikipedia.org/wiki/HotJava , не полетело.
———
https://codeberg.org/dnkl/foot/pulls/461 #foot
https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2
#terminfo
Я тут пару раз писал про разные эмуляторы терминала, и сокрушался, что их авторы не хотят реализовывать нормальный протокол для tear-free rendering. Потом я написал, что, оказывается, разработчики терминалов в курсе этой проблемы, и даже изобрели syncronized updates, но почему-то все равно не хотят реализовывать правильный протокол. Я еще раз перечитал доступные тексты, и понял, что разработчики терминалов считают проблему решенной - кому надо(я, например), могут использовать syncronized updates, а проблемы негров(ncurses, например) шерифа не волнуют.
Пока читал, выяснил, что эти прекрасные люди не смогли договориться до одного варианта, и придумали аж целых два. Я оба и реализовал: #kitty #foot
https://github.com/pg83/ted/commit/a0aa84567efb7ac0760fde048dae0acf805fd188
В ncurses, наверное, не появится никогда.
А вы знали, что можно писать не sed -e s///, а sed -e s|||? Я вот узнал всего полгода назад, и мне это уже сэкономило кучу нервов и сил на эскейпинге /. Наверняка это всем давно известно, и никому не интересно, но я вот не знал.
———
https://hacks.mozilla.org/2021/12/webassembly-and-back-again-fine-grained-sandboxing-in-firefox-95/
Мозилла начала делать какую-то очень странную вещь. Часть библиотек они компилируют не в исполняемый код, а в #WASM, и джитят во время работы. Это им дает возможность установить менее большую surface для особо опасного кода, и, типа, так безопаснее. Я имею сказать:
1) Норм тащить в проект 1000000 строк кода, чтобы обезопасить 10000? Впрочем, JIT для WASM и так и так бы был.
2) А почему бы не сделать на WASM весь браузер? https://pbs.twimg.com/media/ELxt9LSXUAMlmIp.jpg А, было же такое - https://en.wikipedia.org/wiki/HotJava , не полетело.
———
https://codeberg.org/dnkl/foot/pulls/461 #foot
https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2
#terminfo
Я тут пару раз писал про разные эмуляторы терминала, и сокрушался, что их авторы не хотят реализовывать нормальный протокол для tear-free rendering. Потом я написал, что, оказывается, разработчики терминалов в курсе этой проблемы, и даже изобрели syncronized updates, но почему-то все равно не хотят реализовывать правильный протокол. Я еще раз перечитал доступные тексты, и понял, что разработчики терминалов считают проблему решенной - кому надо(я, например), могут использовать syncronized updates, а проблемы негров(ncurses, например) шерифа не волнуют.
Пока читал, выяснил, что эти прекрасные люди не смогли договориться до одного варианта, и придумали аж целых два. Я оба и реализовал: #kitty #foot
https://github.com/pg83/ted/commit/a0aa84567efb7ac0760fde048dae0acf805fd188
В ncurses, наверное, не появится никогда.
Mozilla Hacks – the Web developer blog
WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95
In Firefox 95, we're shipping a sandboxing technology called RLBox — developed with researchers at UC San Diego and the University of Texas
Давеча писал, что перешел с git на svn при использовании github. Увы, недолго музыка играла, не работает переименование каталогов. Пришлось откатиться назад, на inferior решение.
———
Про #monospace шрифты! #font
Мне очень нравится шрифт Input Mono, он вышел 7 лет назад, я его эти 7 лет и использую. Это не очень популярный шрифт, и, когда я заметил его использование на одном там скриншоте в одном там чате, я спросил, "не Input ли это Mono". Оказалось, что это JetBrains Mono. Короче, шрифт 1 в 1. Ммм, не то чтобы они похожи, они 1 в 1, пару отличий я искал с лупой, в side by side terminal.
https://habr.com/ru/post/237179/
https://input.djr.com/
https://fonts.google.com/specimen/JetBrains+Mono
Input круче, потому что это не 1 шрифт, это конструктор шрифтов - можно выбрать много разных вариантов(толщина линий, межстрочный интервал, ширина символов, начертание символов). При некоторых настройках, повторю, получается JetBrains Mono. Кажется, единственное заметное визуальное отличие - это написание буквы "u".
С одной стророны, я рад, что самый лучший шрифт наконец-то стал популярным, с другой - жалко, что не под своим оригинальным именем(думаю, Jet Brains просто купили на него лицензию, упоминания этого факта я нигде не нашел).
———
Assembler porn!
https://github.com/haileys/doslinux/tree/master/script
DOS services for Linux, нет, really. Я думал, шутка, почитал исходники - все честно. Запускаем dos, запускаем в нем TSR, которая будет обслуживать прерывание для входа в Linux, входим в unreal mode(офигенный режим, кстати!), копируем ядро в высокую область памяти, входим в него, вместо init запускаем код, который будет передавать управление в dos TSR, и наоборот(потому что важно, чтобы вызов из dos приходил в контексте какого-нибудь существующего процесса Linux). Что-то по типу того, как работал DOS4GW. Я сначала было подумал, что там MMU-less сборка ядра, но нет, все честно.
https://trixter.oldskool.org/2012/12/17/maze-generation-in-thirteen-bytes/
Или вот генерация лабиринта за 10 байт ассемблера i386(все же, у x86 очень компактная кодировка)!
———
Про #monospace шрифты! #font
Мне очень нравится шрифт Input Mono, он вышел 7 лет назад, я его эти 7 лет и использую. Это не очень популярный шрифт, и, когда я заметил его использование на одном там скриншоте в одном там чате, я спросил, "не Input ли это Mono". Оказалось, что это JetBrains Mono. Короче, шрифт 1 в 1. Ммм, не то чтобы они похожи, они 1 в 1, пару отличий я искал с лупой, в side by side terminal.
https://habr.com/ru/post/237179/
https://input.djr.com/
https://fonts.google.com/specimen/JetBrains+Mono
Input круче, потому что это не 1 шрифт, это конструктор шрифтов - можно выбрать много разных вариантов(толщина линий, межстрочный интервал, ширина символов, начертание символов). При некоторых настройках, повторю, получается JetBrains Mono. Кажется, единственное заметное визуальное отличие - это написание буквы "u".
С одной стророны, я рад, что самый лучший шрифт наконец-то стал популярным, с другой - жалко, что не под своим оригинальным именем(думаю, Jet Brains просто купили на него лицензию, упоминания этого факта я нигде не нашел).
———
Assembler porn!
https://github.com/haileys/doslinux/tree/master/script
DOS services for Linux, нет, really. Я думал, шутка, почитал исходники - все честно. Запускаем dos, запускаем в нем TSR, которая будет обслуживать прерывание для входа в Linux, входим в unreal mode(офигенный режим, кстати!), копируем ядро в высокую область памяти, входим в него, вместо init запускаем код, который будет передавать управление в dos TSR, и наоборот(потому что важно, чтобы вызов из dos приходил в контексте какого-нибудь существующего процесса Linux). Что-то по типу того, как работал DOS4GW. Я сначала было подумал, что там MMU-less сборка ядра, но нет, все честно.
https://trixter.oldskool.org/2012/12/17/maze-generation-in-thirteen-bytes/
Или вот генерация лабиринта за 10 байт ассемблера i386(все же, у x86 очень компактная кодировка)!
Хабр
Input — новый шрифт для программирования
Компания Font Bureau разработала новое семейство шрифтов Input, важнейшим из которых в данном случае для нас является шрифт Input Mono. Кириллица присутствует. Для персонального использования шрифты...
https://www.phoronix.com/scan.php?page=news_item&px=More-Apple-M1-For-Linux-5.17
Вот тут вот пишут, что в ядро добавили еще больше M1. В mesa я никакой активности про драйвер не вижу, увы. И, если уж начал про mesa и аппаратное ускорение, то я осилил статически слинкованный opengl и аппаратно ускоренные драйвера в одном бинаре.
Я думал, будет раза в 3 больше. Впрочем, я нашел интересный способ не линковать #LLVM в каждый бинарь.
https://docs.mesa3d.org/drivers/zink.html - реализация opengl поверх vulkan. #zink
https://www.opennet.ru/opennews/art.shtml?num=51026 - компилятор шейдеров от Valve, который не требует LLVM. Все #хорошее в графическом стеке Linux делают корпорации!
Совместно это дает ускоренный OpenGL, не зависящий от LLVM.
К сожалению, Vulkan мне пока не удалось завести. Разработчики Khronos Group - какие-то невменозы. Я тут уже однажды писал, что делают разрабы, когда у них заканчиваются задачи. Ответ - начинают их себе выдумывать на ровном месте. Вот это и делает Khronos Group. Мегабайты кода аццкого качества, задача которого - загрузить .so, экспортировать из нее функцию, которая вернет структуру, заполненную коллбеками(короче, интерфейс). Где-то там происходит нечто, из-за чего какой-то коллбек от драйвера становится nullptr, и все падает. Копипаста между разными репозиториями одного проекта, где-то заголовки используются из системы, в виде библиотеки, где-то их нужно положить рядышком, во время сборки. Разные репозитории имеют не совместимые друг с другом версии. Там 4 важных репозитория, если взять их последние релизы, они не совместимы друг с другом. У этих гондонов даже есть файлик с номерами ревизий, с которыми, типа, работает. Не с зарелиженными версиями, с ревизиями! https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/scripts/known_good.json
Стык загрузчика от Khronos Group и кода Mesa - это жесть. Им там не хватает информации в передаваемых контекстах, поэтому там вовсю всякие пертредные хештаблицы со всякими недостающими запчастями.
Зато я впервые трассировал графический драйвер, это интересно.
Нашел странную упячку в Mesa - там есть шейдерный кеш, и там есть часть ключа в этом кеше, которая зависит от dl_iterate_phdr на какую-то определенную функцию в библиотеке(https://github.com/mesa3d/mesa/blob/main/src/util/build_id.c#L118). Мне кажется, они таким странным способом хотели сказать, что кеш нужно инвалидировать при смене версии библиотеки, очень интересным способом(название исходника как бы намекает на это).
Дело осложнилось тем, что на границе кода #Mesa <-> Khronos Group происходит потеря информации в возвращаемой ошибке, поэтому драйвер просто возвращал "не могу проинициализироваться", без указания из-за чего, и где. Кстати, как эта проблема решается в языках без динамических исключений, типа Rust, когда коллбек имеет более богатую ошибку, чем вызывающий код может прокинуть наверх?
Отдельно, конечно, хочу сказать, что все эти графические API делают люди, которые вообще ничего не понимают в дизайне систем. Компилятор шейдеров в виде библиотеки, которая линкуется в каждую программу? Ну такое. О том, что можно и нужно для этого запустить демон - не, не слышали.
Вот тут вот пишут, что в ядро добавили еще больше M1. В mesa я никакой активности про драйвер не вижу, увы. И, если уж начал про mesa и аппаратное ускорение, то я осилил статически слинкованный opengl и аппаратно ускоренные драйвера в одном бинаре.
pg@:~/sources/mix ls -la /home/pg/mix/store/
106d22493865f8686a8eb38db12e4711
-b-shell-sway/bin/sway
-rwxr-xr-x 1 pg pg 206469240 Dec 10 17:10
/home/pg/mix/store/
106d22493865f8686a8eb38db12e4711
-b-shell-sway/bin/sway
pg@:~/sources/mix strip
/home/pg/mix/store/
106d22493865f8686a8eb38db12e4711
-b-shell-sway/bin/sway
pg@:~/sources/mix ls -la
/home/pg/mix/store/
106d22493865f8686a8eb38db12e4711
-b-shell-sway/bin/sway
-rwxr-xr-x 1 pg pg 78393840 Dec 10 18:51
/home/pg/mix/store/
106d22493865f8686a8eb38db12e4711
-b-shell-sway/bin/sway
Я думал, будет раза в 3 больше. Впрочем, я нашел интересный способ не линковать #LLVM в каждый бинарь.
https://docs.mesa3d.org/drivers/zink.html - реализация opengl поверх vulkan. #zink
https://www.opennet.ru/opennews/art.shtml?num=51026 - компилятор шейдеров от Valve, который не требует LLVM. Все #хорошее в графическом стеке Linux делают корпорации!
Совместно это дает ускоренный OpenGL, не зависящий от LLVM.
К сожалению, Vulkan мне пока не удалось завести. Разработчики Khronos Group - какие-то невменозы. Я тут уже однажды писал, что делают разрабы, когда у них заканчиваются задачи. Ответ - начинают их себе выдумывать на ровном месте. Вот это и делает Khronos Group. Мегабайты кода аццкого качества, задача которого - загрузить .so, экспортировать из нее функцию, которая вернет структуру, заполненную коллбеками(короче, интерфейс). Где-то там происходит нечто, из-за чего какой-то коллбек от драйвера становится nullptr, и все падает. Копипаста между разными репозиториями одного проекта, где-то заголовки используются из системы, в виде библиотеки, где-то их нужно положить рядышком, во время сборки. Разные репозитории имеют не совместимые друг с другом версии. Там 4 важных репозитория, если взять их последние релизы, они не совместимы друг с другом. У этих гондонов даже есть файлик с номерами ревизий, с которыми, типа, работает. Не с зарелиженными версиями, с ревизиями! https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/scripts/known_good.json
Стык загрузчика от Khronos Group и кода Mesa - это жесть. Им там не хватает информации в передаваемых контекстах, поэтому там вовсю всякие пертредные хештаблицы со всякими недостающими запчастями.
Зато я впервые трассировал графический драйвер, это интересно.
Нашел странную упячку в Mesa - там есть шейдерный кеш, и там есть часть ключа в этом кеше, которая зависит от dl_iterate_phdr на какую-то определенную функцию в библиотеке(https://github.com/mesa3d/mesa/blob/main/src/util/build_id.c#L118). Мне кажется, они таким странным способом хотели сказать, что кеш нужно инвалидировать при смене версии библиотеки, очень интересным способом(название исходника как бы намекает на это).
Дело осложнилось тем, что на границе кода #Mesa <-> Khronos Group происходит потеря информации в возвращаемой ошибке, поэтому драйвер просто возвращал "не могу проинициализироваться", без указания из-за чего, и где. Кстати, как эта проблема решается в языках без динамических исключений, типа Rust, когда коллбек имеет более богатую ошибку, чем вызывающий код может прокинуть наверх?
Отдельно, конечно, хочу сказать, что все эти графические API делают люди, которые вообще ничего не понимают в дизайне систем. Компилятор шейдеров в виде библиотеки, которая линкуется в каждую программу? Ну такое. О том, что можно и нужно для этого запустить демон - не, не слышали.
Phoronix
More Apple Silicon M1 Bring-Up On The Way For Linux 5.17
The enablement work for supporting Apple's M1 SoC under Linux continues and with the v5.17 kernel next year will be yet more additions.
commit -m "better"
https://www.phoronix.com/scan.php?page=news_item&px=More-Apple-M1-For-Linux-5.17 Вот тут вот пишут, что в ядро добавили еще больше M1. В mesa я никакой активности про драйвер не вижу, увы. И, если уж начал про mesa и аппаратное ускорение, то я осилил статически…
https://suricrasia.online/no-knowledge.html
Какая-то очень крутая тема(НЕ zero knowledge proof, это тоже красивое, но другое) - решение задачи "как бы передать кому-то строку, которая выглядит как hash, но не является хешом от каких-то известных тебе данных". Зачем это надо я ХЗ, но прикольно.
———
Продолжение темы про #Mesa и Vulkan. Я таки заставил его работать, это мне стоило 6 часов напряженной отладки. Бага причудливая. Товарищи сделали такой хак - пометили 100 экспортируемых функций как weak, но реализовали только те, что нужны. Драйвер вулкана в такой ситуации получал непустые реализации + nullptr для пустых. В случае статической линковки weak сработал не так, и в качестве реализаций взялись первые нулевые weak символы.
Vulkan, в целом, работоспособен, Sway с ним - нет. Если включить WLR_RENDERER=vulkan, то получаю черный экран, и это неудивительно, поддержка Vulkan в Sway появилась месяц назад. Если делаю MESA_LOADER_DRIVER_OVERRIDE=zink(фактически, форсирую реализацию OpenGL, которая работает поверх Vulkan), то получаю слегонца битую картинку. Неудивительно, думаю, Sway в таком интересном setup запускал только я.
Надо сказать, своей цели "собрать LLVM-free hardware accelerated stack" я достиг, бинарник Sway стал занимать 20 мегабайт.
Немного в сторону - прикольно осознавать, что подобную инсталляцию(musl + static build + clang + #zink + vulkan + sway) на этой планете, скорее всего, соорудил только 1 человек, хотя это тот еще неуловимый Джо.
Узнал прекрасное - в Linux есть 3 драйвера для AMD(Mesa, #AMDVLK, AMDVLK + proprietary code). https://www.linux.org.ru/forum/talks/16466478 Попробовал завести AMDVLK, но он требует X.
Valve топит за Mesa, потому что LLVM генерит медленные шейдеры.
Какая-то очень крутая тема(НЕ zero knowledge proof, это тоже красивое, но другое) - решение задачи "как бы передать кому-то строку, которая выглядит как hash, но не является хешом от каких-то известных тебе данных". Зачем это надо я ХЗ, но прикольно.
———
Продолжение темы про #Mesa и Vulkan. Я таки заставил его работать, это мне стоило 6 часов напряженной отладки. Бага причудливая. Товарищи сделали такой хак - пометили 100 экспортируемых функций как weak, но реализовали только те, что нужны. Драйвер вулкана в такой ситуации получал непустые реализации + nullptr для пустых. В случае статической линковки weak сработал не так, и в качестве реализаций взялись первые нулевые weak символы.
Vulkan, в целом, работоспособен, Sway с ним - нет. Если включить WLR_RENDERER=vulkan, то получаю черный экран, и это неудивительно, поддержка Vulkan в Sway появилась месяц назад. Если делаю MESA_LOADER_DRIVER_OVERRIDE=zink(фактически, форсирую реализацию OpenGL, которая работает поверх Vulkan), то получаю слегонца битую картинку. Неудивительно, думаю, Sway в таком интересном setup запускал только я.
Надо сказать, своей цели "собрать LLVM-free hardware accelerated stack" я достиг, бинарник Sway стал занимать 20 мегабайт.
Немного в сторону - прикольно осознавать, что подобную инсталляцию(musl + static build + clang + #zink + vulkan + sway) на этой планете, скорее всего, соорудил только 1 человек, хотя это тот еще неуловимый Джо.
Узнал прекрасное - в Linux есть 3 драйвера для AMD(Mesa, #AMDVLK, AMDVLK + proprietary code). https://www.linux.org.ru/forum/talks/16466478 Попробовал завести AMDVLK, но он требует X.
Valve топит за Mesa, потому что LLVM генерит медленные шейдеры.
www.linux.org.ru
О наболевшем: RADV vs AMDVLK. Почему Valve поддерживает RADV и как это в будущем может аукнуться?
Привет. Многие наверняка знают, что на Линукс существует два опен-сурсных драйвера для видеокарт АМД: AMDVLK (официальный) RADV (неофициальный, из Mesa) AMDVLK является кросс-платформенным драйвером (Windows, Linux, Stadia и др), и именно поэтому АМД...
👍1
commit -m "better"
https://suricrasia.online/no-knowledge.html Какая-то очень крутая тема(НЕ zero knowledge proof, это тоже красивое, но другое) - решение задачи "как бы передать кому-то строку, которая выглядит как hash, но не является хешом от каких-то известных тебе данных".…
Good news, everyone!
Я прочел https://www.phoronix.com/scan.php?page=article&item=zink-sub-alloc&num=2, установил себе #Mesa посвежее, и у меня заработала связка Sway + #zink + Vulkan!
Вообще, имею вам сказать, что аппаратные драйвера OpenGL, скорее всего, просто умрут, потому что зачем? По словам разработчиков Mesa Vulkan - это такой Gallium 2.0(не могу найти цитату), поэтому логично реализацию OpenGL строить поверх них. Ну и в MacOS будет рулить MoltenVK(https://moltengl.com/moltenvk/, + OpenGL поверх него), потому что никто в своем уме на Metal разрабатывать не будет.
———
https://www.ee.ryerson.ca/~elf/hack/recovery.html
Очень старый текст, напомнил мне ситуацию, в которой приходится запускать скрипты для сборки самых ранних пакетов. Например, первую сборку musl приходится делать в ситуации, когда у меня есть только dash + компилятор. Нет даже cat, echo.
Зацените, как я ловко вывожу блок текста в файл, пользуясь только shell builtin!
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L18
Или как ловко, сразу после сборки libmusl.a, собираю себе с ним подручный вариант cat, чтобы заполнить все файлы, требующиеся для пакета:
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L96
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L121
Самый главный хак этого сборочного скрипта - что сборку сразу ведем в outdir, чтобы не заморачиваться с копированием файлов после сборки(команда cp появится позже).
Я считаю, что за этот файл мне нужно дать Нобелевку по posix sh!
———
https://www.kernel.org/doc/html/latest/admin-guide/syscall-user-dispatch.html
Читал тут про Wine 7.0, и случайно узнал, что современный Linux умеет обрабатывать любой способ захода в ядро, чтобы более хорошо эмулировать всякие чужеродные системы.
———
https://arxiv.org/abs/2110.01098
Говорят, что, если в Rust добавить GC, то студенты быстрее его осваивают. Норм же тема!
Я прочел https://www.phoronix.com/scan.php?page=article&item=zink-sub-alloc&num=2, установил себе #Mesa посвежее, и у меня заработала связка Sway + #zink + Vulkan!
Вообще, имею вам сказать, что аппаратные драйвера OpenGL, скорее всего, просто умрут, потому что зачем? По словам разработчиков Mesa Vulkan - это такой Gallium 2.0(не могу найти цитату), поэтому логично реализацию OpenGL строить поверх них. Ну и в MacOS будет рулить MoltenVK(https://moltengl.com/moltenvk/, + OpenGL поверх него), потому что никто в своем уме на Metal разрабатывать не будет.
———
https://www.ee.ryerson.ca/~elf/hack/recovery.html
Очень старый текст, напомнил мне ситуацию, в которой приходится запускать скрипты для сборки самых ранних пакетов. Например, первую сборку musl приходится делать в ситуации, когда у меня есть только dash + компилятор. Нет даже cat, echo.
Зацените, как я ловко вывожу блок текста в файл, пользуясь только shell builtin!
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L18
Или как ловко, сразу после сборки libmusl.a, собираю себе с ним подручный вариант cat, чтобы заполнить все файлы, требующиеся для пакета:
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L96
https://github.com/pg83/mix/blob/main/pkgs/boot/1/lib/musl/mix.sh#L121
Самый главный хак этого сборочного скрипта - что сборку сразу ведем в outdir, чтобы не заморачиваться с копированием файлов после сборки(команда cp появится позже).
Я считаю, что за этот файл мне нужно дать Нобелевку по posix sh!
———
https://www.kernel.org/doc/html/latest/admin-guide/syscall-user-dispatch.html
Читал тут про Wine 7.0, и случайно узнал, что современный Linux умеет обрабатывать любой способ захода в ядро, чтобы более хорошо эмулировать всякие чужеродные системы.
———
https://arxiv.org/abs/2110.01098
Говорят, что, если в Rust добавить GC, то студенты быстрее его осваивают. Норм же тема!
Phoronix
Zink Mesa 21.3-dev Benchmarks - Increasingly Capable Of Running OpenGL Games Atop Vulkan
The open-source DDraceNetwork cooperative platformer game was seeing some nice improvements thanks to the Zink sub-allocator code.
https://twitter.com/nicuveo/status/1469963644775682049
Красивое, просто показываю.
———
https://www.phoronix.com/scan.php?page=article&item=bsd-linux-eo2021&num=4
Не люблю perf тесты, которые делаю не сам. Вот zstd на FreeBSD - это что? Так же не бывает, что cpu intensive задача на разных OS в 10 раз отличалась.
———
https://github.com/NixOS/nixpkgs/issues/136926 - сломана кросс-сборка #Mesa.
https://habr.com/ru/post/591979/ - про основы кросс-компиляции в разных OSS системах сборки. Спойлер - Meson OK, #autohell и CMake - жесть.
Представление о 6 действиях, как собрать cross-gcc https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
Про CMake скажу отдельно - у него разных способов контролировать пути поиска тех или иных артефактов штук 10, разных, странных - поштырьте по ссылкам(https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PREFIX_PATH.html#cmake-system-prefix-path).
Насколько я понимаю, для Mix это нормальное дело. Я строю Nix так, что он всегда кросс-компилирует, даже когда host == target. Это приводит к следующему:
1) Собрать программу полностью в debug/asan/msan/etc - плевое дело. Пользователи интерпрайзных систем сборки к этому привыкли, для OSS это внове.
2) Несколько необычный режим сборки промежуточных артефактов - каждый таргет может быть собран в 3 режимах - lib, bin, data. Нужно это потому, что разные артефакты нужны под host и target платформы, а еще библиотека может зависеть сама от себя, но от своих данных(это достаточно странно, но больше никак не сделать возможность удаления .a файлов, оставляя данные для них(кстати, вот как раз с динамической сборкой это проще - никого не удивляет, что .so живет рядом с share/)).
https://github.com/pg83/mix/blob/main/pkgs/lib/wayland/protocols/mix.sh - вот прекрасный пример, программа может зависеть от библиотеки lib/wayland, от бинарников из lib/wayland, и во время работы ей тоже нужны бинарники из lib/wayland. Если посчитать, то это 3 разных таргета в случае кросс-сборки. В случае host == target часть можно пооптимизировать, но я пока не занимался.
Красивое, просто показываю.
———
https://www.phoronix.com/scan.php?page=article&item=bsd-linux-eo2021&num=4
Не люблю perf тесты, которые делаю не сам. Вот zstd на FreeBSD - это что? Так же не бывает, что cpu intensive задача на разных OS в 10 раз отличалась.
———
https://github.com/NixOS/nixpkgs/issues/136926 - сломана кросс-сборка #Mesa.
https://habr.com/ru/post/591979/ - про основы кросс-компиляции в разных OSS системах сборки. Спойлер - Meson OK, #autohell и CMake - жесть.
Представление о 6 действиях, как собрать cross-gcc https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
Про CMake скажу отдельно - у него разных способов контролировать пути поиска тех или иных артефактов штук 10, разных, странных - поштырьте по ссылкам(https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PREFIX_PATH.html#cmake-system-prefix-path).
Насколько я понимаю, для Mix это нормальное дело. Я строю Nix так, что он всегда кросс-компилирует, даже когда host == target. Это приводит к следующему:
1) Собрать программу полностью в debug/asan/msan/etc - плевое дело. Пользователи интерпрайзных систем сборки к этому привыкли, для OSS это внове.
2) Несколько необычный режим сборки промежуточных артефактов - каждый таргет может быть собран в 3 режимах - lib, bin, data. Нужно это потому, что разные артефакты нужны под host и target платформы, а еще библиотека может зависеть сама от себя, но от своих данных(это достаточно странно, но больше никак не сделать возможность удаления .a файлов, оставляя данные для них(кстати, вот как раз с динамической сборкой это проще - никого не удивляет, что .so живет рядом с share/)).
https://github.com/pg83/mix/blob/main/pkgs/lib/wayland/protocols/mix.sh - вот прекрасный пример, программа может зависеть от библиотеки lib/wayland, от бинарников из lib/wayland, и во время работы ей тоже нужны бинарники из lib/wayland. Если посчитать, то это 3 разных таргета в случае кросс-сборки. В случае host == target часть можно пооптимизировать, но я пока не занимался.
Twitter
Antoine Leblanc
"Two hosts are considered equivalent if both host names can be resolved into the same IP addresses[.] Since hosts comparison requires name resolution, this operation is a blocking operation." Oh no. OH NO. twitter.com/floydophone/st…
https://www.opennet.ru/opennews/art.shtml?num=56295 #lust
https://harmful.cat-v.org/software/c++/linus
С одной стороны, перестать писать ядро на C - это must have, это давно понимают все большие корпорации(которые и пишут ядро). С другой - для Линуса начать использовать C++ означало бы потерять лицо. Поэтому это будет Rust. Нет, я не думаю, что Rust для этой цели подошел бы значительно лучше С++, но это неважно, оба подходят для этой задачи существенно лучше, чем С.
———
https://github.com/harfbuzz/harfbuzz/issues/2524
Столкнулся тут с прекрасным. Коллеги, на самом деле, еще не поняли, что там по настоящему происходит. Цикл включает в себя не только freetype и #harfbuzz, но и cairo, и #fontconfig.
"Another problem is that currently we include hb-ft in libharfbuzz.so. So removing it will be an ABI break for linux distros. I suggest we do that for harfbuzz 4.0.0. We are just about to release harfbuzz 3.0.0. That gives us about a year to figure out what to do."
"And sadly our package manager cannot automatically do the first-without-then-with-harfbuzz shuffle."
Им разрешение кольцевых зависимостей в пакетных менеджерах подавай. "Дебилы, бл;%:" (с), слов нет.
———
https://github.com/inconvergent/weird
Красивые картинки. Их автору бы познакомиться со Стивеном "Наше все" Вольфрамом(https://habr.com/ru/post/518206/).
https://harmful.cat-v.org/software/c++/linus
С одной стороны, перестать писать ядро на C - это must have, это давно понимают все большие корпорации(которые и пишут ядро). С другой - для Линуса начать использовать C++ означало бы потерять лицо. Поэтому это будет Rust. Нет, я не думаю, что Rust для этой цели подошел бы значительно лучше С++, но это неважно, оба подходят для этой задачи существенно лучше, чем С.
———
https://github.com/harfbuzz/harfbuzz/issues/2524
Столкнулся тут с прекрасным. Коллеги, на самом деле, еще не поняли, что там по настоящему происходит. Цикл включает в себя не только freetype и #harfbuzz, но и cairo, и #fontconfig.
"Another problem is that currently we include hb-ft in libharfbuzz.so. So removing it will be an ABI break for linux distros. I suggest we do that for harfbuzz 4.0.0. We are just about to release harfbuzz 3.0.0. That gives us about a year to figure out what to do."
"And sadly our package manager cannot automatically do the first-without-then-with-harfbuzz shuffle."
Им разрешение кольцевых зависимостей в пакетных менеджерах подавай. "Дебилы, бл;%:" (с), слов нет.
———
https://github.com/inconvergent/weird
Красивые картинки. Их автору бы познакомиться со Стивеном "Наше все" Вольфрамом(https://habr.com/ru/post/518206/).
www.opennet.ru
Третья редакция патчей для ядра Linux с поддержкой языка Rust
Мигель Охеда (Miguel Ojeda), автор проекта Rust-for-Linux, предложил для рассмотрения разработчиками ядра Linux третий вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже согласована…
❤1👎1
https://chromium.googlesource.com/angle/angle/
#ANGLE
Я, давеча, писал про #zink - это OpenGL, реализованный поверх Vulkan(у меня сейчас на нем крутится Sway). Вот это похожая штука, только от Гугла. Я люблю код от Гугла, он у меня не вызывает неприятных эмоций(кроме ограничения на длину строки, но это лечится clang-format). Поэтому надо попробовать! Вырисовывается такой Mesa-free stack - ANGLE + #AMDVLK, или дрова от #Mesa для Vulkan + ANGLE.
———
Меня раздражают фанатики Rust.
Вернее, нет. Меня раздражают фанатики, фанатики Rust в том числе, никаких исключений.
Фанатики Rust хотят, чтобы все было через Rust, никаких исключений. Поэтому они, например, оборачивают C-код в свои crate. Например, libgit2 в Rust - это обернутый C libgit2. При этом, так как это же, все таки, фанатики, они хотят делать вид, что никакого C там нет, поэтому эмбеддят исходники libgit2 прямо в свой crate. А чо, удобно, не нужно возиться с пакетным менеджером, все сделает cargo. Проблемы maintainer никого не волнуют, конечно.
Так как я не люблю фанатизм ни в каком виде, то я такую деятельность не одобряю. К счастью, есть GPL(враг моего врага - мой друг!), поэтому обернуть libiconv таким образом нельзя. Поэтому я очень радуюсь, как у меня обламывается cargo, и просит libiconv из системы.
Ну, и, к счастью, есть проекты, до которых Rust вряд ли когда-нить доберется, типа Qemu. Желание писать на верхнеуровневых безопасных языках чаще всего антикореллирует с желанием копаться в хардверных мануалах, это хуже чем C.
"К счастью", "радуюсь" - потому что я против фанатизма, а вот эти конкретные факты этому конкретно фанатизму мешают. Забавно, что эти факты сами по себе мне тоже не очень ОК, GPL я не люблю, и в Qemu не помешало бы немного C++/Rust.
Это НЕ анти-Rust пост, я уверен, что однажды Rust и его поклонники переживут эти детские болезни, и не будут бояться(а то, вдруг, кто-то ткнет пальцем, и скажет, что чей-та у вас эта либа не на Rust!) использовать код из системы(и из системного пакетного менеджера).
#ANGLE
Я, давеча, писал про #zink - это OpenGL, реализованный поверх Vulkan(у меня сейчас на нем крутится Sway). Вот это похожая штука, только от Гугла. Я люблю код от Гугла, он у меня не вызывает неприятных эмоций(кроме ограничения на длину строки, но это лечится clang-format). Поэтому надо попробовать! Вырисовывается такой Mesa-free stack - ANGLE + #AMDVLK, или дрова от #Mesa для Vulkan + ANGLE.
———
Меня раздражают фанатики Rust.
Вернее, нет. Меня раздражают фанатики, фанатики Rust в том числе, никаких исключений.
Фанатики Rust хотят, чтобы все было через Rust, никаких исключений. Поэтому они, например, оборачивают C-код в свои crate. Например, libgit2 в Rust - это обернутый C libgit2. При этом, так как это же, все таки, фанатики, они хотят делать вид, что никакого C там нет, поэтому эмбеддят исходники libgit2 прямо в свой crate. А чо, удобно, не нужно возиться с пакетным менеджером, все сделает cargo. Проблемы maintainer никого не волнуют, конечно.
Так как я не люблю фанатизм ни в каком виде, то я такую деятельность не одобряю. К счастью, есть GPL(враг моего врага - мой друг!), поэтому обернуть libiconv таким образом нельзя. Поэтому я очень радуюсь, как у меня обламывается cargo, и просит libiconv из системы.
Ну, и, к счастью, есть проекты, до которых Rust вряд ли когда-нить доберется, типа Qemu. Желание писать на верхнеуровневых безопасных языках чаще всего антикореллирует с желанием копаться в хардверных мануалах, это хуже чем C.
"К счастью", "радуюсь" - потому что я против фанатизма, а вот эти конкретные факты этому конкретно фанатизму мешают. Забавно, что эти факты сами по себе мне тоже не очень ОК, GPL я не люблю, и в Qemu не помешало бы немного C++/Rust.
Это НЕ анти-Rust пост, я уверен, что однажды Rust и его поклонники переживут эти детские болезни, и не будут бояться(а то, вдруг, кто-то ткнет пальцем, и скажет, что чей-та у вас эта либа не на Rust!) использовать код из системы(и из системного пакетного менеджера).