commit -m "better"
2.96K subscribers
874 photos
106 videos
3 files
2.08K links
just random thoughts
Download Telegram
https://twitter.com/marcan42/status/1455634359499706372

Было беспокойство, что, так как Apple M1 - это SoC, то придется портировать Linux на каждое новое поколение снова и снова. Но, видимо, Apple решила сохранять некоторую преемственность, и наработки #asahi Linux работают и на M1 Pro.

———
https://t.iss.one/dlemire

Оказывается, наш любимый Daniel Lemire ведет блог в TG. Или вот подкаст с его участием. https://corecursive.com/frontiers-of-performance-with-daniel-lemire/

"All sorts of people should be writing research papers. This is very important." Right?

———
https://habr.com/ru/post/586772/
https://habr.com/ru/news/t/579308/
https://3dnews.ru/1050336/sotrudniki-blue-origin-priznalis-chto-boyatsya-letet-na-kosmicheskih-korablyah-sobstvennoy-kompanii
https://vc.ru/legal/298692-activision-blizzard-vyplatit-postradavshim-sotrudnikam-po-delu-o-domogatelstvah-18-mln

Еще 15 лет назад все было бы просто - сотрудники хорошие, корпорации плохие. После появления SJW и cancel culture любая такая новость у меня вызывает вопрос - это действительно корпорации гнобят сотрудников, или очередной SJW-активист решил получить свой PR? Проверить у меня это нет никакой возможности, поэтому я такие новости просто игнорирую :) Если бы SJW движения не существовало, то корпорациям стоило бы его придумать.
👍2
Новости бутстрапа.

Я собрал 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://asahilinux.org/2021/12/progress-report-oct-nov-2021/

Срочно в номер! #asahi

Красивое, интересное(правда!), но только показывают. C GPU я не понимаю, что происходит. "Userspace in good shape, kernel work starting soon". Вот совершенно не понимаю. Казалось бы, ядерная часть должна быть проще - фактически, в ядре живет диспатчер буферов для отрисовки, kms(довольно сложная часть), и диспетчер очереди команд на буфера для отрисовки. Сложная часть(компиляция шейдеров в код для GPU) живет как раз в user space. Возможно, у Apple GPU есть какой-то прообраз(Mali?), для которого уже есть готовая реализация шейдеров, но я этого не заметил.
https://mobile.twitter.com/marcan42/status/1494213855387734019 #asahi

У меня чет знатно долбануло от заявления этого долбоеба разработчика Asahi Linux Гектора Мартина:

"Well, this is unfortunate. It turns out Apple's custom NVMe drives are amazingly fast - if you don't care about data integrity."

Давайте я вам расскажу, что там происходит.

Гектор жалуется, что macos "читит" - некорректно реализует семантику fsync(а я, кстати, позволю себе напомнить, что macos - сертифицированный Unix, в отличие от), и, за счет этого, обгоняет его драгоценный Ляликс на бенчмарках NVMe. И отмечает, что, если в Apple ткнуть паяльником, то после ребута она потеряет данные.

Коллега просто не понимает, что такое "делать хорошо" и "полагаться на хорошо спроектированный и реализованный нижележащий слой".

Вы в macos теряли данные после ребута? Я не терял.

Если инженеры Apple:

* Хорошо отладили свою ОС, настолько, что ГАРАНТИРОВАТЬ, что OS сбросит буфера FS и контроллера на диск при нажатии на кнопку Reset.

* На всякий случай добавили туда батарейку, и написали код, который по исчерпании батарейки сбросит буфер и выключит комп.

То им просто не надо реализовывать ту семантику fsync, о которой говорит Гектор, чтобы обеспечить целостность данных.

Я напомню, что вот та семантика fsync, о которой пишет Гектор, нужна, когда твою OS пишут красноглазые пионеры без тестов. Потому что заставить весь зоопарк FS флашить данные пофайлово - невозможно. Заставить FS флашить данные корректно - невозможно https://danluu.com/file-consistency/ https://www.deconstructconf.com/2019/dan-luu-files Убедиться, что весь зоопарк контроллеров флашит данные корректно - невозможно.

Единственное, на что можно(а на самом деле и нельзя) полагаться - что fsync сделает большой мега-барьер по всему стеку, и скинет данные на диск насколько это возможно надежно, в такой ситуации.

Короче, Кисо обиделось, что кто-то хорошо проделал свою работу, и может на это полагаться, и срезать пару острых углов на этом, и хорошо смотреться на бенчмарках. И что не рассчитывает на паяльник. А его красноглазое поделие такой роскошью не обладает. И что это поделие не способно эффективно работать в той модели sync, на которую рассчитывает macos.

Ну чо, норм, но не надо говорить, что macos "читит", это вводит людей в заблуждение. "if you don't care about data integrity" - Гектор просто не понимает, насколько, а самое главное, КАК, Apple заботится о integrity.

И, кстати, еще такая мысль - подобные штуки поясняют, почему Apple против Хакинтошей, и почему Хакинтоши - так себе мысль. macOS работает на железе, которое сделано по несколько другой философии, это нужно учитывать
👍20👎11😁5🤮1
https://asahilinux.org/2022/03/asahi-linux-alpha-release/ #asahi

Вышла альфа. Не работает мультимедиа и тачпад. В то, что там когда-нибудь заработает 3d accel, я уже практически не верю.

———
Новости бутстрапа.

Мне понадобилось собрать yasm.

* У него есть две системы сборки - новая, на cmake, и старая, на autohell. Как я уже говорил, cmake не умеет в кросс-компиляцию, а yasmу нужно в процессе сборки себя построить парочку хостовых инструментов. Сборка на autohell про это знает и поддерживает, поэтому we are stuck с autohell.

* yasm вендорит очень старый re2c, родом из 2003 года. Я так понимаю, потому что это одна из последних версий до перехода re2c на С++. Этот re2c падает в процессе сборки:

  GEN      genmacro
GEN genversion
GEN genstring
GEN genperf
GEN re2c
make: *** [Makefile:4426:
gas-token.c] Segmentation fault
make: *** Deleting file 'gas-token.c'
make: *** Waiting for unfinished jobs....
make: *** [Makefile:4429:
nasm-token.c] Segmentation fault
make: *** Deleting file 'nasm-token.c'

причем каким-то очень всратым образом(за 15 минут я не раздебажил). Я решил, какого хрена, и собрал самый старый доступный re2c из реп - https://github.com/skvadrik/re2c/tags?after=0.13.7.2

После небольшой магии с патчингом сборочных файлов(https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/yasm/mix.sh#L21), оно собралось и заработало. Замечу, re2c 2013 года отработал грамматику 2003 года, good, good.

* Я решил на этом не останавливаться, и собрал современный re2c. Он тоже корректно отработал грамматику 2003 года выпуска, поэтому промежуточный re2c я выпилил.

Отдельно хочу рассказать про re2c:

2003 год - 10 файлов на C.
2013 год - 5 файлов на С++.
2022 год - 250!!! объектных файлов из исходников на С++. Сука, 250!!! Они там написали свое вообще все, что можно - регулярки, парсера, utf8, все.

Я уже как-то, когда рассказывал про #ncurses #Хуйкин, писал, что, когда проект, по сути, завершен, и программисту нечего делать, то он начинает вылизывать себе яйца этот проект возможными и невозможными способами.

Ничего хорошего тут нет, это code bloat, и отсюда стремление вменяемых людей запилить что-то типа suckless.org, или вот мой mix.
🔥3👍2
Про лицензии.

https://news.ycombinator.com/item?id=30710032

Мое первое появление на Hacker News. Не ожидал, что оно будет именно таким.

https://beny23.github.io/posts/on_weaponisation_of_open_source/

Прагматичный взгляд на всю эту катавасию про "код как оружие". В целом, довольно очевидные мысли, но все хорошо и аккуратно разложено по полочкам. Можно кидать ссылку в интернет срачиках.

https://lwn.net/Articles/888453/

Связь всего этого УГ с #GPL.

———
https://www.undeadly.org/cgi?action=article;sid=20220320115932

Без всякой помпы анонсирован порт OpenBSD на Apple M1. On par с #asahi Linux, судя по тексту.

———
https://philippegroarke.com/posts/2018/c++_ui_solutions/

Очень полный и подробный обзор различных библиотек виджетов. Я думал, что я хорошо разбираюсь в теме, но оказалось, что я знаю примерно треть от этого списка.

К сожалению, идеальной библиотеки виджетов я для себя пока не нашел :)
👍8😁1
https://www.phoronix.com/review/apple-m2-compilers

Тут вот Миша экспериментирует с clang и gcc в #asahi Linux.

Я довольно скептически отношусь к подобного рода исследованиям. Потому что мой опыт говорит, что выигрывает тот компилятор, которым чаще всего собирают конкретный код.

Это, кажется, довольно очевидная вещь, потому что я, как разработчик, тюню код под то окружение, в котором его запускаю.

У нас в Я тоже довольно долго была ситуация, что мы не могли переключиться на clang, потому что важный код под gcc работал на несколько процентов быстрее.

Я воспользовался этим аргументом, и сказал, что мы так никогда не переключимся, а вот если переключимся, и все начнут пользоваться clang, то, через какое-то время, ситуация поменяется.

Так и случилось, буквально, за пару лет.

Что там сейчас, и кто побеждает, я не знаю, потому что там теперь PGO/LTO, а они довольно радикально меняют ситуацию.
👍6👎1🤔1
https://nitter.it/linaasahi/status/1583444549648543744

Между прочим, у #asahi linux какой-то серьезный прогресс за последние несколько месяцев. То год ничего не происходило(с точки зрения графического стека), то на тебе - проходят 99% dEQP - https://chromium.googlesource.com/angle/angle/+/main/doc/dEQP.md - в первый раз слышу, но:

"drawElements (dEQP) is a very robust and comprehensive set of open-source tests for GLES2, GLES3+ and EGL. They provide a huge net of coverage for almost every GL API feature. ANGLE by default builds dEQP testing targets for testing against GLES 2, GLES 3, EGL, and GLES 3.1 (on supported platforms)"

Ну, то есть, явно случилось что-то хорошее.

Еще отмечу, что раньше разработчик(хехе) проверял все на mac(ну, то есть, modesetting занимался mac, а он генерил и слал команды в карточку), то теперь там, в наличии, и modesetting driver для ядра(на rust, ага).

(в фанфары бить пока рановато, прогресс на уровне nouveau, но пользоваться уже можно)
👍7🔥5🍌2
https://asahilinux.org/2022/11/november-2022-report/

Очередной status update от #asahi Linux.

Интересно почитать про пляски вокруг firmware(потому что Apple не нужно заморачиваться с кучей платформ, и они хранят firmware прямо в своем ядре!), и про power management.

Про GPU ни слова.
🔥5👍2🤔1🤮1
commit -m "better"
https://asahilinux.org/2022/11/november-2022-report/ Очередной status update от #asahi Linux. Интересно почитать про пляски вокруг firmware(потому что Apple не нужно заморачиваться с кучей платформ, и они хранят firmware прямо в своем ядре!), и про power…
#asahi

https://www.opennet.ru/opennews/art.shtml?num=59648

У коллег, судя по всему, прямо прорыв в поддержке 3D.

Интересно, конечно, что у них с питаловом, то есть, сколько жрет GPU с этим drm driver.

Напомню, что это были основные проблемы с open source nvidia driver, что, без изпользования подписанного nvidia firmware, все работало не самым оптимальным образом.

Но, вообще, конечно, это очень и очень круто. Надо будет как-нибудь попробовать там запустить #stal/ix. Прямо сейчас мне мешает только тот факт, что drm driver написан на Rust.
🔥5😁3🤔1
commit -m "better"
#asahi https://www.opennet.ru/opennews/art.shtml?num=59648 У коллег, судя по всему, прямо прорыв в поддержке 3D. Интересно, конечно, что у них с питаловом, то есть, сколько жрет GPU с этим drm driver. Напомню, что это были основные проблемы с open source…
https://asahilinux.org/2024/01/fedora-asahi-new/ #asahi

Кажется, проблемы с батарейкой коллеги тоже научились решать.

Я, конечно, понимаю, что такой радужный отчет стоит воспринимать несколько скептически, но, все равно, прогресс доставляет.

Печалит то, что, для того, чтобы достигать приемлемого уровня качества сервиса, коллегам приходится распихивать по всему стеку Linux подпорки для оборудования от Apple, что-то типа "классной психоакустической модели для встроенных в ноутбук колонок в виде plugin к pipewire", и написано оно все на Rust - https://github.com/chadmed/bankstown, то есть, повторить (в #stal/ix) это будет совсем не просто.

Я уже как-то писал, что совсем не понимаю экономику этого проекта. Вот откуда у них там человек, который разбирается в психоакустике, и может, основываясь на результате каких-то измерений, запилить плагин к pipewire на rust?

Я или переоцениваю сложность этой задачи (например, потому что ничего в этом не понимаю), или там какое-то совершенно дикое количество энтузиастов, среди которых есть и такие специалисты. Кода там не очень много, но он весьма специфичный - https://github.com/chadmed/bankstown/blob/main/src/lib.rs
🔥7👍5🤔43💯1
commit -m "better"
https://asahilinux.org/2024/01/fedora-asahi-new/ #asahi Кажется, проблемы с батарейкой коллеги тоже научились решать. Я, конечно, понимаю, что такой радужный отчет стоит воспринимать несколько скептически, но, все равно, прогресс доставляет. Печалит то…
https://rosenzweig.io/blog/conformant-gl46-on-the-m1.html #asahi

Последений opengl для Apple M1. Правда, пока только под Linux, хехе.

Вся прелесть в том, что железа M1 недостаточно, чтобы сделать полноценную реализацию, поэтому часть недостающего железа запилили с помощью шейдеров и дополнительных pass:

"How do we break the 4.1 barrier? Without hardware support, new features need new tricks. Geometry shaders, tessellation, and transform feedback become compute shaders. Cull distance becomes a transformed interpolated value. Clip control becomes a vertex shader epilogue. The list goes on."
🤔5👍32🐳2
https://news.ycombinator.com/item?id=39593647
https://www.opennet.ru/opennews/art.shtml?num=60721

Меня тут спрашивают, почему я не пишу про эти две истории.

Потому, что считаю, что эти две злые корпорации не только в своем праве, но и даже поступают довольно этично. И что тут нет какого-то повода для сенсации.

Я считаю, что можно делать clean room reimplementation. https://en.wikipedia.org/wiki/Clean_room_design

Если ты так сделал (вот, как делают, например, разработчики драйверов для #asahi (ладно, заявляют, что делают, я свечку не держал)), то ты молодец, и к тебе нельзя прикопаться.

Но если ты для этого нарушил правила пользования товаром или услугой, то ты не прав.

Ну, то есть, если ты купил видеокарту nvidia, скачал себе CUDA, согласился с EULA, в которой написано, что нельзя декомпилировать результат, то все, ты не можешь это использовать для производства конкурирующего продукта. Тебя за руку никто не тянул, мог не соглашаться, и не использовать тогда этот hard & soft. А если согласился и нарушил договор, то все, результат труда "испорчен".

И далее, по цепочке, пользоваться "испорченным" продуктом не стоит.
💩10🤡10👍31👎1🐳1
https://www.opennet.ru/opennews/art.shtml?num=62029 #asahi

"Используемый для запуска игр стек построен на основе Vulkan-драйвера Honeykrisp, эмулятора FEX, позволяющего выполнять x86-приложений на системах ARM, проекта Wine и прослоек DXVK и vkd3d-proton с реализацией API DirectX поверх Vulkan"

"Проблемы с выравниванием из-за несоответствия размера страниц памяти, используемого в операционной системе и необходимого приложениям (программы собранные для x86 рассчитаны на страницы 4К, в то время как на системах Apple используются страницы 16K), удалось решить через запуск в виртуальном окружении второго ядра Linux, собранного с другим размером страниц памяти. Для запуска игр в отдельных виртуальных машинах со своим ядром задействован инструментарий muvm"

"В салон выходит стюардесса:
Дамы и господа, для того, чтобы помочь вам скоротать время полета, на борту нашего лайнера имеются библиотека, кинозал, три бара, ресторан, бассейн и два теннисных корта. А теперь я попрошу вас пристегнуть ремни безопасности, потому что сейчас вместе со всей этой хуйней мы попытаемся взлететь!"

Интересно, зачем это пилят (кроме спортивного интереса)?

Заставить эту конструкцию работать надежно не получится никому и никогда.
😁15👍6🤡41
https://lwn.net/ml/all/[email protected]/

https://lwn.net/ml/all/CAHk-=wi=ZmP2=TmHsFSUGq8vUZAOWWSK1vrJarMaOhReDRQRYQ@mail.gmail.com/

Схватился дед с батей автор #asahi, и Linus.

Гектор решил поиграть в SJW, и пошеймить процесс разработки ядра (в связи со всей этой растоисторией https://t.iss.one/itpgchannel/2683), и получил ответ.

"However, I will say that the social media brigading just makes me not want to have anything at all to do with your approach.

Because if we have issues in the kernel development model, then social media sure as hell isn't the solution. The same way it sure as hell wasn't the solution to politics."

"И эти люди мне будут рассказывать, что расто community не токсичное", ага:

https://lwn.net/ml/all/[email protected]/

"Rust folks: Please don't waste your time and mental cycles on drama like this. It's not worth your time. Either Linus likes it, or he doesn't. Everything else is distractions orchestrated by a subset of saboteur maintainers who are trying to demoralize you until you give up, because they know they're going to be on the losing side of history sooner or later. No amount of sabotage from old entrenched maintainers is going to stop the world from moving forward towards memory-safe languages"

Вот за это и не любят, за "blazingly fast more memory safe изо всех щелей No amount of sabotage from old entrenched maintainers is going to stop the world from moving forward towards memory-safe languages".

(kernel community так-то тоже не очень, но это не извиняет)
😁19🤡9👍6🐳2🔥1
commit -m "better"
Схватился дед с батей автор #asahi, и Linus.
https://marcan.st/2025/02/resigning-as-asahi-linux-project-lead/

Штош, закономерный результат всей этой истории:

"I’m resigning as lead of the Asahi Linux project, effective immediately. The project will continue on without me, and I’m working with the rest of the team to handle transfer of responsibilities and administrative credentials. My personal Patreon will be paused, and those who supported me personally are encouraged to transfer their support to the Asahi Linux OpenCollective (GitHub Sponsors does not allow me to unilaterally pause payments, but my sponsors will be notified of this change so they can manually cancel their sponsorship)"

#asahi
😢17🤣8🔥3👍2🤡2
commit -m "better"
"I’m resigning as lead of the Asahi Linux project, effective immediately. The project will continue on without me, and I’m working with the rest of the team to handle transfer of responsibilities and administrative credentials. My personal Patreon will be paused, and those who supported me personally are encouraged to transfer their support to the Asahi Linux OpenCollective (GitHub Sponsors does not allow me to unilaterally pause payments, but my sponsors will be notified of this change so they can manually cancel their sponsorship)"
https://www.phoronix.com/news/Asahi-Lina-Steps-Down-Linux-GPU

"Following Hector Martin stepping down from the Asahi Linux project that he founded for bringing Linux to Apple Silicon hardware, Asahi Lina announced today that she is pausing work on all of the Apple GPU driver development she had been pursuing for Asahi Linux with the open-source DRM kernel driver as well as Mesa contributions"

#asahi

UPD: в первый раз в жизни вижу, что Миша с фороникса закрыл обсуждение темы - https://www.phoronix.com/forums/node/1534870
😢19🤡7🍾5😁3🎉3😍1🐳1