commit -m "better"
В продолжении темы регулярных рестартов. У меня завис unbound. Ну завис и завис, где-то в select/poll/etc, не отвечал на запросы и сам ничего не делал. Можно, конечно, побороться с ветряными мельницами, заслать совершенно ничего не говорящий stack trace…
Как говорится, доверяй, но проверяй!
Я тут, случайно, в выводе pstree увидел красивое:
Глаз за это зацепился, потому что я сразу подумал, что тут что-то не то, дерево процессов должно было выглядеть так:
Ну, то есть, логично же - я запускаю команду timeout, которая должна следить за временем выполнения своего child, и убивать его к херам, по необходимости.
Посмотрел логи - да, действительно, мой вызов timeout не возымел эффекта. Как будто его и не было.
Не буду утомлять себя рассказом про подробности #debug, сразу расскажу, что было.
https://git.busybox.net/busybox/tree/coreutils/timeout.c#n101
Что там написано?
Там написано, что команда timeout в качестве child запускает код, который демонизируется, и, далее следит за временем выполнения основного процесса, а потом основной процесс делает exec на нужную команду.
Это бы работало, если бы слежка выполнялась в прямом потомке основого процесса, но, видимо, чтобы не плодить зомбаков, следит внук, как я написал выше.
А этого внука прибивает мой процесс, следящий за тем, чтобы в системе не было бесхозных процессов.
Починил я это тем, что добавил в цепочку subreaper, https://unix.stackexchange.com/questions/250153/what-is-a-subreaper-process https://github.com/stal-ix/ix/blob/main/pkgs/bin/unbound/runit/ix.sh#L9
Зачем timeout устроен так сложно?
Я не очень понял их объяснение в коде, но, в целом, это довольно понятно, с точки зрения обработки сигналов, чтобы процесс timeout не стоял между parent и выполняющейся командой, и не занимался ерундой по проксированию сигналов.
Пока я не разобрался, что же там происходит, выглядело это ну очень дико.
Я тут, случайно, в выводе pstree увидел красивое:
flock---unbound
Глаз за это зацепился, потому что я сразу подумал, что тут что-то не то, дерево процессов должно было выглядеть так:
flock---timeout---unbound
Ну, то есть, логично же - я запускаю команду timeout, которая должна следить за временем выполнения своего child, и убивать его к херам, по необходимости.
Посмотрел логи - да, действительно, мой вызов timeout не возымел эффекта. Как будто его и не было.
Не буду утомлять себя рассказом про подробности #debug, сразу расскажу, что было.
https://git.busybox.net/busybox/tree/coreutils/timeout.c#n101
Что там написано?
Там написано, что команда timeout в качестве child запускает код, который демонизируется, и, далее следит за временем выполнения основного процесса, а потом основной процесс делает exec на нужную команду.
Это бы работало, если бы слежка выполнялась в прямом потомке основого процесса, но, видимо, чтобы не плодить зомбаков, следит внук, как я написал выше.
А этого внука прибивает мой процесс, следящий за тем, чтобы в системе не было бесхозных процессов.
Починил я это тем, что добавил в цепочку subreaper, https://unix.stackexchange.com/questions/250153/what-is-a-subreaper-process https://github.com/stal-ix/ix/blob/main/pkgs/bin/unbound/runit/ix.sh#L9
Зачем timeout устроен так сложно?
Я не очень понял их объяснение в коде, но, в целом, это довольно понятно, с точки зрения обработки сигналов, чтобы процесс timeout не стоял между parent и выполняющейся командой, и не занимался ерундой по проксированию сигналов.
Пока я не разобрался, что же там происходит, выглядело это ну очень дико.
Unix & Linux Stack Exchange
What is a "subreaper" process?
The word "subreaper" is used in some answers. Searching Google also turn up entries where the word is "just used".
How can I understand what a "subreaper" is?
How can I understand what a "subreaper" is?
🤔5👍4🔥2🤡1
Дебажил тут один скрипт, который под python2 (да, есть еще легаси в русских селеньях) работал нормально, а под третьим питоном зависал на попытке вывести в stdout кучу (примерно 15 гигабайт) бинарных нулей.
Строчка, приводящая к такой забавной ошибке:
Сломанный скрипт - часть рантайма большой production системы, которую починят, но не "прямо сейчас".
А мне же надо "прямо щас", ну и я испорчен взаимодействием с open source, поэтому я сделал в своем скрипте вот так:
Вообще, это хорошо бьется с моим принципом: у любой задачи есть два решения - одно быстрое, которое нужно сделать прямо сейчас, и второе - более сложное, более правильное, которое нужно сделать в порядке очереди. Надо делать оба решения, а не выбирать между ними.
Мораль?
Мне интересно, сделал бы я так два года назад, еще до активного взаимодействия с open source, или, все же, нет. Не знаю.
Строчка, приводящая к такой забавной ошибке:
print(six.binary_type(some_func()["id"]))Динамические типы, приводящие к такой ошибке, вы и сами себе нафантазируете(подсказка - 15 гигабайт - это какой-то ID), а вот как я с этим поборолся, довольно забавно.
Сломанный скрипт - часть рантайма большой production системы, которую починят, но не "прямо сейчас".
А мне же надо "прямо щас", ну и я испорчен взаимодействием с open source, поэтому я сделал в своем скрипте вот так:
cp $(which mega_script) ./Моя джоба побежала. В будни, когда коллеги обновят сервис, я это уберу, конечно.
sed -e 's|six.binary_type||' \
-i mega_script
export PATH=${PWD}:${PATH}
Вообще, это хорошо бьется с моим принципом: у любой задачи есть два решения - одно быстрое, которое нужно сделать прямо сейчас, и второе - более сложное, более правильное, которое нужно сделать в порядке очереди. Надо делать оба решения, а не выбирать между ними.
Мораль?
Мне интересно, сделал бы я так два года назад, еще до активного взаимодействия с open source, или, все же, нет. Не знаю.
👍15🤯5😱3😁2
Можно ли быть святее папы римского?
Сборки llvm, который можно скачать с их релизной страницы, bootstrapped.
Что это значит?
Что они в процессе сборки собирают новую версию host c++ компилятором, а потом уже им собирают релизную версию нового llvm.
То есть, оно, в каком-то смысле, "самособрано" - мы используем компилятор, собранный этим же компилятором.
Так же они, в процессе, собирают себе libc++, и, скорее всего, какие-то рантаймы.
Но, например, они не собирают себе libc, и прочие zlib/ncurses, от которых будет зависеть этот компилятор.
По ссылке https://github.com/pg83/ix/blob/main/pkgs/bin/clang/16/bootstrapped/ix.sh компилятор, не просто bootstrapped, а еще и все зависимости которого собраны им самим же (конечно, логически, физически это невозможно).
Так что, ответ на поставленный вопрос - да, можно!
Сборки llvm, который можно скачать с их релизной страницы, bootstrapped.
Что это значит?
Что они в процессе сборки собирают новую версию host c++ компилятором, а потом уже им собирают релизную версию нового llvm.
То есть, оно, в каком-то смысле, "самособрано" - мы используем компилятор, собранный этим же компилятором.
Так же они, в процессе, собирают себе libc++, и, скорее всего, какие-то рантаймы.
Но, например, они не собирают себе libc, и прочие zlib/ncurses, от которых будет зависеть этот компилятор.
По ссылке https://github.com/pg83/ix/blob/main/pkgs/bin/clang/16/bootstrapped/ix.sh компилятор, не просто bootstrapped, а еще и все зависимости которого собраны им самим же (конечно, логически, физически это невозможно).
Так что, ответ на поставленный вопрос - да, можно!
GitHub
ix/ix.sh at main · pg83/ix
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
❤12👏5🔥4🤯1
Запилил ix respawn https://github.com/pg83/ix/blob/main/pkgs/bin/ix/respawn/unwrap/main.c
Это такая штука, которая ищет бинарник ix "где-то" (например, во всех предках текущей директории), и вызывает его с переданными аргументами.
Довольно общая штука для всякого рода инструментов, которые не привязаны к рутовой файловой системе и к PATH.
Запилил и запилил, но у нее был какой-то конский размер, несколько сот килобайт. Я подумал, что меня за это зачморят старшие товарищи, и всю жизнь будут тыкать палочкой, мол, "ерунда эта ваша статическая линковка".
Ужал ее размер до 10к, можно было и меньше, но уже было лень.
Как?
* Выпилил stdio, он даже в musl довольно большой. Оставил только сисколлы и строковые функции.
* Не освобождаю память. А зачем это делать в one shot тулзах?
* Заменил аллокатор. Даже самый тонкий аллокатор давал footprint порядка 50 - 200к. Заменил его на bump allocator своего изготовления - https://github.com/pg83/ix/blob/main/pkgs/lib/bumpalloc/alloc.c
Чем он интересен?
* В нем нет ни единого syscall, потому что он распределяет память из заранее выделенного в программе массива.
* Ну и вообще, он не зависит от libc.
Это все довольно странные свойства, но мне он как-то понадобился в цепочке bootstrap - знаете, когда ты собираешь аллокатор, а он в процессе сборки хочет собрать какую-то программу и запустить ее. В этот момент нам нужен аллокатор попроще, я и запилил эту ерундовину.
Прикольная штука, в хозяйстве уже пригодилась не раз.
Это такая штука, которая ищет бинарник ix "где-то" (например, во всех предках текущей директории), и вызывает его с переданными аргументами.
Довольно общая штука для всякого рода инструментов, которые не привязаны к рутовой файловой системе и к PATH.
Запилил и запилил, но у нее был какой-то конский размер, несколько сот килобайт. Я подумал, что меня за это зачморят старшие товарищи, и всю жизнь будут тыкать палочкой, мол, "ерунда эта ваша статическая линковка".
Ужал ее размер до 10к, можно было и меньше, но уже было лень.
Как?
* Выпилил stdio, он даже в musl довольно большой. Оставил только сисколлы и строковые функции.
* Не освобождаю память. А зачем это делать в one shot тулзах?
* Заменил аллокатор. Даже самый тонкий аллокатор давал footprint порядка 50 - 200к. Заменил его на bump allocator своего изготовления - https://github.com/pg83/ix/blob/main/pkgs/lib/bumpalloc/alloc.c
Чем он интересен?
* В нем нет ни единого syscall, потому что он распределяет память из заранее выделенного в программе массива.
* Ну и вообще, он не зависит от libc.
Это все довольно странные свойства, но мне он как-то понадобился в цепочке bootstrap - знаете, когда ты собираешь аллокатор, а он в процессе сборки хочет собрать какую-то программу и запустить ее. В этот момент нам нужен аллокатор попроще, я и запилил эту ерундовину.
Прикольная штука, в хозяйстве уже пригодилась не раз.
GitHub
ix/pkgs/bin/ix/respawn/unwrap/main.c at main · pg83/ix
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
👍11🔥10❤3🏆2😐2🤔1
commit -m "better"
Потихоньку собираю запчасти, которые я использую, в единое целое. Ну, вот, знаете, чтобы ссылки из разных программ открывались единообразно, чтобы привязки программ к типам файлов работали единообразно (без специальных настроек), и так далее. Для этого начал…
"блеск и нищета С"
Еще одной причиной, почему я решил запилить свой портал - это качество существующих решений.
Я, перед тем, как начать говнокодить, прочел исходники wlr portal, от simon ser'а, и это тот еще говнокод:
* race condition - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L120https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L120
* утечка номер раз - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L133
* утечка номер два - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L273 (тут их две - одна - при ошибке в выделении памяти, а вторая, более серьезная - если кто-то не позовет remote Close() на созданный хендл xdpw_*)
Ну и решил, что мне это не нужно.
Еще одной причиной, почему я решил запилить свой портал - это качество существующих решений.
Я, перед тем, как начать говнокодить, прочел исходники wlr portal, от simon ser'а, и это тот еще говнокод:
* race condition - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L120https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L120
* утечка номер раз - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L133
* утечка номер два - https://github.com/emersion/xdg-desktop-portal-wlr/blob/master/src/screenshot/screenshot.c#L273 (тут их две - одна - при ошибке в выделении памяти, а вторая, более серьезная - если кто-то не позовет remote Close() на созданный хендл xdpw_*)
Ну и решил, что мне это не нужно.
GitHub
xdg-desktop-portal-wlr/src/screenshot/screenshot.c at master · emersion/xdg-desktop-portal-wlr
xdg-desktop-portal backend for wlroots. Contribute to emersion/xdg-desktop-portal-wlr development by creating an account on GitHub.
👍8🤔3🤡3
https://j3s.sh/thought/write-posix-shell.html
Хороший текст про shell, например.
Полностью согласен с "simply: because shell is an insanely productive language. in fact, i believe that shell is the *most* productive language"
У меня, когда я пишу на shell, в голове всегда борются два начала:
* чистоплюйское, которое говорит, что надо писать на языках, в которых команды пишутся вот так: ['x', 'y', 'z'], потому что не надо думать про пути, про escaping, и про прочую хрень, которая всегда мешает в sh.
и
* getting things done, которое говорит мне, что, если я напишу "x y z", то я сделаю работу в 10 раз быстрее, хотя и не без потенциальных косяков.
Для кода, который пишется один раз, и который потом проще переписать, чем аугментировать, shell куда как продуктивнее.
Очень рад, что, еще на ранней стадии развития #ix, выкинул все попытки погрузить проблематику в скрипты на python, потому что я бы не успел сделать все то, что сделал к текущему моменту времени, если бы выбрал homebrew/nix-like подход.
Хороший текст про shell, например.
Полностью согласен с "simply: because shell is an insanely productive language. in fact, i believe that shell is the *most* productive language"
У меня, когда я пишу на shell, в голове всегда борются два начала:
* чистоплюйское, которое говорит, что надо писать на языках, в которых команды пишутся вот так: ['x', 'y', 'z'], потому что не надо думать про пути, про escaping, и про прочую хрень, которая всегда мешает в sh.
и
* getting things done, которое говорит мне, что, если я напишу "x y z", то я сделаю работу в 10 раз быстрее, хотя и не без потенциальных косяков.
Для кода, который пишется один раз, и который потом проще переписать, чем аугментировать, shell куда как продуктивнее.
Очень рад, что, еще на ранней стадии развития #ix, выкинул все попытки погрузить проблематику в скрипты на python, потому что я бы не успел сделать все то, что сделал к текущему моменту времени, если бы выбрал homebrew/nix-like подход.
👍9👌5
Я просто оставлю это здесь:
https://www.cnews.ru/news/top/2023-03-01_ssha_pytaetsya_razvalit_mir
"США медленно, но верно закрывает доступ к открытому коду своему главному технологическому конкуренту — Китаю"
"Кроме того, ничто не мешает сотруднику китайской разведки загружать OSS, находясь за границей. И все же, учитывая испорченные отношения между западом и востоком, кажется неизбежным, что западные демократии начнут мешать Китаю получить бесплатный код, они могут попросту сократить его производство"
Сука, что творится в головах у этих людей?
https://www.cnews.ru/news/top/2023-03-01_ssha_pytaetsya_razvalit_mir
"США медленно, но верно закрывает доступ к открытому коду своему главному технологическому конкуренту — Китаю"
"Кроме того, ничто не мешает сотруднику китайской разведки загружать OSS, находясь за границей. И все же, учитывая испорченные отношения между западом и востоком, кажется неизбежным, что западные демократии начнут мешать Китаю получить бесплатный код, они могут попросту сократить его производство"
Сука, что творится в головах у этих людей?
CNews.ru
США уничтожают единый мир Open Source. Разработку разваливают на восточный и западный лагеря - CNews
США медленно, но верно закрывает доступ к открытому коду своему главному технологическому конкуренту — Китаю....
🤡15😁4🤬4🐳2
commit -m "better"
https://www.phoronix.com/news/Linux-DRM-Process-Start-With-X Опять кто-то возбухает про хак про определение имени процесса, и выключении какой-то функциональности в ядре, если есть совпадение. Так-то это нормальная практика, я несколько раз писал, что это…
#mesa
Вот пример точно такого же (неприятного) поведения в винде, тоже в драйверах GPU - https://habr.com/ru/company/yandex/blog/721374/
Хаки над хаками, а потом драйвера научатся понимать что-то про "хаки над хаками", и нахуевертят еще всякого говна.
Вот пример точно такого же (неприятного) поведения в винде, тоже в драйверах GPU - https://habr.com/ru/company/yandex/blog/721374/
Хаки над хаками, а потом драйвера научатся понимать что-то про "хаки над хаками", и нахуевертят еще всякого говна.
Хабр
Название имеет значение: как получить оптимизацию, переименовав браузер
Всем привет! Меня зовут Максим Смирнов, я руковожу командой, которая работает над производительностью Яндекс Браузера и отвечает за его графическую подсистему. В этой статье я расскажу об одном...
🤯5❤3😁3😱2💩1🐳1🌚1
https://www.audioasylum.com/messages/pcaudio/119979/
Украдено у https://discuss.systems/@dan/110008052977994607, пишут, что С++ звучит лучше, чем malloc()
Вы знали? Я раньше не знал, знал только, что провода надо брать специальные, за 5K$.
Украдено у https://discuss.systems/@dan/110008052977994607, пишут, что С++ звучит лучше, чем malloc()
Вы знали? Я раньше не знал, знал только, что провода надо брать специальные, за 5K$.
discuss.systems
Dan Ports (@dan@discuss.systems)
This is your periodic reminder that 10 years ago an audiophile forum started debating which versions of memcpy had the highest sound quality.
And that C++ new sounds better than malloc.
https://www.audioasylum.com/messages/pcaudio/119979/
And that C++ new sounds better than malloc.
https://www.audioasylum.com/messages/pcaudio/119979/
😁8🤡6🔥3🐳2🤔1
commit -m "better"
https://lore.kernel.org/all/20230314103316.313e5f61@kernel.org/
Продолжение темы на phoronix: https://www.phoronix.com/news/Linux-STMAC-Russian-Sanctions
Горячо, конечно, в каментах - https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1378146-linux-kernel-networking-driver-development-impacted-by-russian-sanctions, их число растет быстрее, чем я читаю.
Горячо, конечно, в каментах - https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1378146-linux-kernel-networking-driver-development-impacted-by-russian-sanctions, их число растет быстрее, чем я читаю.
Phoronix
Linux Kernel Networking Driver Development Impacted By Russian Sanctions
The US and western government sanctions around the Russian government and its defense industry/companies due to their war in Ukraine has caused interesting issues in the open-source world
🤯6👍4🤔2🤮1
https://www.phoronix.com/news/Codon-Faster-Python
https://www.opennet.ru/opennews/art.shtml?num=58395
Судя по всему, какая-то горячая тема, что-то по типу #nuitka/cython/etc.
По мне так https://github.com/exaloop/codon - начали за здравие, а кончили уже не так оптимистично.
Любой, любой такой проект сразу, на первой странице, должен говорить, поддерживает ли он стандартные протоколы питона, или нет.
Ну вот реально - если там семантика лукапа методов такая же как в cpython (через 5 лукапов в dict, а иногда и еще больше), то там нет простора для оптимизаций, они всем давно известны, и реализованы в том же pypy.
А если стандартные протоколы не реализованы, и x.y - это что-то другое, нежели в cpython - ну да, можно сделать быстро, но интересный код там не выполнить.
https://www.opennet.ru/opennews/art.shtml?num=58395
Судя по всему, какая-то горячая тема, что-то по типу #nuitka/cython/etc.
По мне так https://github.com/exaloop/codon - начали за здравие, а кончили уже не так оптимистично.
Любой, любой такой проект сразу, на первой странице, должен говорить, поддерживает ли он стандартные протоколы питона, или нет.
Ну вот реально - если там семантика лукапа методов такая же как в cpython (через 5 лукапов в dict, а иногда и еще больше), то там нет простора для оптимизаций, они всем давно известны, и реализованы в том же pypy.
А если стандартные протоколы не реализованы, и x.y - это что-то другое, нежели в cpython - ну да, можно сделать быстро, но интересный код там не выполнить.
Phoronix
Codon Looks Very Promising For Super-Fast Python Code
While there is Pyston, PyPy, and various other alternative Python implementations being done in the name of performance, Codon is one of the newer ones and is talking up 10~100x faster performance.
👍8
Есть такая очень смешная шутка - "мне не нужен язык с GC, потому что моя программа не производит мусора".
Достаточно понятная и глубокая мысль - вместо того, чтобы героически решать какую-то искуственную проблему, прежде всего нужно сделать так, чтобы эта проблема не появилась.
К чему это я?
С-style printf - страшное говнище.
И не потому, что страшные и глючные varargs от C, а по очень простой баге в дизайне - способ форматирования, и аргументы для этого способа задаются отдельно, что приводит к тому, что очень легко нарушить какой-то инвариант.
Например, по числу аргументов - printf("%d %d", 1). Или по несовпадению типов аргументов.
Мой поинт в том, что, конечно, можно героически пытаться решить эти проблемы, как пытается делать compile time std::format в С++ (тоже, очевидно, страшное говнище, как наследник C printf), а можно сделать так, чтобы такое нарушение инварианта не могло возникнуть в принципе.
Мне известно два способа сделать это:
* f-strings в куче языков, f"{a} {b} {a}"
* std iostreams в С++. У них есть свои проблемы (например, они stateful), но вот класс проблем выше в них не может возникнуть: cout<<a<<" "<<b<<" "a;
Если вы приглядитесь, то поймете, что суть этих двух подходов совершенно одинакова, просто первый подход часть работы по токенизации делает чуть более удобной.
Вот их и надо использовать. В С++, конечно, лучше взять стороннюю реализацию потоков, которая не будет делать миллиарды inline вызовов, приводя к ухудшению времени компиляции и разбуханию кода.
А то, что std::format в текущем виде попал в стандарт, это, конечно, стыд и срам С++. Вот, реально, мало что хорошо было сделано в С++, ну так синтаксис форматированного вывода был сделан неплохо, надо было его и улучшать, в сторону f-strings, которые могли выглядеть "как в python", но, under the hood, превращаясь в вызов operator<<.
Если имеете возможность - не используйте C printf-like форматирование, нигде. Это очевидная ошибка дизайна из 70-х годов, которую упертые фанатики тащат в каждый новый язык.
Достаточно понятная и глубокая мысль - вместо того, чтобы героически решать какую-то искуственную проблему, прежде всего нужно сделать так, чтобы эта проблема не появилась.
К чему это я?
С-style printf - страшное говнище.
И не потому, что страшные и глючные varargs от C, а по очень простой баге в дизайне - способ форматирования, и аргументы для этого способа задаются отдельно, что приводит к тому, что очень легко нарушить какой-то инвариант.
Например, по числу аргументов - printf("%d %d", 1). Или по несовпадению типов аргументов.
Мой поинт в том, что, конечно, можно героически пытаться решить эти проблемы, как пытается делать compile time std::format в С++ (тоже, очевидно, страшное говнище, как наследник C printf), а можно сделать так, чтобы такое нарушение инварианта не могло возникнуть в принципе.
Мне известно два способа сделать это:
* f-strings в куче языков, f"{a} {b} {a}"
* std iostreams в С++. У них есть свои проблемы (например, они stateful), но вот класс проблем выше в них не может возникнуть: cout<<a<<" "<<b<<" "a;
Если вы приглядитесь, то поймете, что суть этих двух подходов совершенно одинакова, просто первый подход часть работы по токенизации делает чуть более удобной.
Вот их и надо использовать. В С++, конечно, лучше взять стороннюю реализацию потоков, которая не будет делать миллиарды inline вызовов, приводя к ухудшению времени компиляции и разбуханию кода.
А то, что std::format в текущем виде попал в стандарт, это, конечно, стыд и срам С++. Вот, реально, мало что хорошо было сделано в С++, ну так синтаксис форматированного вывода был сделан неплохо, надо было его и улучшать, в сторону f-strings, которые могли выглядеть "как в python", но, under the hood, превращаясь в вызов operator<<.
Если имеете возможность - не используйте C printf-like форматирование, нигде. Это очевидная ошибка дизайна из 70-х годов, которую упертые фанатики тащат в каждый новый язык.
👍12🤔7👎4🔥3🤮2🐳1
#раньшевсех
Вышел новый llvm. https://github.com/llvm/llvm-project/releases/tag/llvmorg-16.0.0
Я, конечно, проснулся с уже обновленным на него ноутбуком, и ничего такого не случилось.
Так же вышел #gnome 44. Вроде, нигде еще не написали, но он уже вышел, как говорится, "круги по воде" - зафризили версию новой libadwaita, webkitgtk получил новый stable (2.40.0), ну и теги местами расставили.
Вышел новый llvm. https://github.com/llvm/llvm-project/releases/tag/llvmorg-16.0.0
Я, конечно, проснулся с уже обновленным на него ноутбуком, и ничего такого не случилось.
Так же вышел #gnome 44. Вроде, нигде еще не написали, но он уже вышел, как говорится, "круги по воде" - зафризили версию новой libadwaita, webkitgtk получил новый stable (2.40.0), ну и теги местами расставили.
GitHub
Release LLVM 16.0.0 · llvm/llvm-project
LLVM 16.0.0 Release
👍6
commit -m "better"
В комментариях как раз обсуждали landlock, и на тебе, Justin подогнала gnu make + landlock: #justine https://justine.lol/make/ TL;DR; - make сам ограничивает свои ноды выполнения по тому, куда им можно писать и что можно читать. ЖЫР: "To demonstrate this…
Видимо, Жастин вполне осознано троллирует почтеннейшую публику своими изысканиями, иначе я более никак не могу объяснить вот этот текст - https://justine.lol/rusage/ #justine
Казалось бы, запилила портабельный rusage в своей cosmopolitan libc, ну и ладно.
Но нет, надо показать, как он работает именно на коде датасатанистов:
"The usefulness of this tool becomes apparent when running beefier programs, like an artificial general intelligence model with thirteen billion parameters. Here's what happens if we use llama.cpp to load Facebook's 13B LLaMA model."
Либо код от датасатанистов особенно хорошо оптимизируем (что не удивительно), либо это вполне осознанный способ проехаться на хайпе от ML, как раньше получилось у python.
Казалось бы, запилила портабельный rusage в своей cosmopolitan libc, ну и ладно.
Но нет, надо показать, как он работает именно на коде датасатанистов:
"The usefulness of this tool becomes apparent when running beefier programs, like an artificial general intelligence model with thirteen billion parameters. Here's what happens if we use llama.cpp to load Facebook's 13B LLaMA model."
Либо код от датасатанистов особенно хорошо оптимизируем (что не удивительно), либо это вполне осознанный способ проехаться на хайпе от ML, как раньше получилось у python.
justine.lol
Portable rusage command
The best tool for reporting command resource usage across platforms.
👍7😁2
AI-generated пресс-релиз для #stal/ix.
Запрос:
"Write press-release for alpha version of stal/IX - statically linked, source based, bootstrapped rolling Linux, based on IX package manager with Nix-inspired file system layout"
Кожаные не нужны не то что завтра, а уже даже сегодня:
"FOR IMMEDIATE RELEASE
Alpha Version of Stal/IX: The Future of Linux is Here
Stal/IX, the new statically linked, source-based, bootstrapped rolling Linux operating system, is pleased to announce the release of its alpha version. Based on the popular IX package manager, Stal/IX offers a cutting-edge file system layout inspired by Nix which provides users with a modern, streamlined, and efficient experience.
Stal/IX is a completely new take on Linux, offering an innovative approach to package management and distribution. Unlike traditional Linux distributions that rely on dynamic linking and shared libraries, Stal/IX is statically linked, meaning that it includes all of the libraries needed to run the operating system and its applications. This approach provides numerous benefits, including increased security, better performance, and simpler management.
Stal/IX also features a source-based build system, which allows users to compile their packages from source code, providing them with complete control over their system. This approach also ensures that packages are optimized for the user's specific hardware, resulting in faster and more efficient performance.
One of the most exciting features of Stal/IX is its bootstrapped rolling release model. This means that the operating system is constantly updated with the latest software, without the need for major version upgrades. This ensures that users always have access to the latest features and security updates.
In addition, Stal/IX features a file system layout inspired by Nix, which allows for efficient management of packages and dependencies. The file system is organized in a way that allows for easy rollback to previous versions, making it an ideal platform for development and experimentation.
"We're thrilled to release the alpha version of Stal/IX," said the Stal/IX development team. "We believe that our innovative approach to package management and distribution will provide users with a faster, more secure, and more efficient Linux experience."
The alpha version of Stal/IX is available for download now. For more information, please visit the Stal/IX website at<https://stalix.org/> https://stal-ix.github.io/.
About Stal/IX:
Stal/IX is a new statically linked, source-based, bootstrapped rolling Linux operating system "
Запрос:
"Write press-release for alpha version of stal/IX - statically linked, source based, bootstrapped rolling Linux, based on IX package manager with Nix-inspired file system layout"
Кожаные не нужны не то что завтра, а уже даже сегодня:
"FOR IMMEDIATE RELEASE
Alpha Version of Stal/IX: The Future of Linux is Here
Stal/IX, the new statically linked, source-based, bootstrapped rolling Linux operating system, is pleased to announce the release of its alpha version. Based on the popular IX package manager, Stal/IX offers a cutting-edge file system layout inspired by Nix which provides users with a modern, streamlined, and efficient experience.
Stal/IX is a completely new take on Linux, offering an innovative approach to package management and distribution. Unlike traditional Linux distributions that rely on dynamic linking and shared libraries, Stal/IX is statically linked, meaning that it includes all of the libraries needed to run the operating system and its applications. This approach provides numerous benefits, including increased security, better performance, and simpler management.
Stal/IX also features a source-based build system, which allows users to compile their packages from source code, providing them with complete control over their system. This approach also ensures that packages are optimized for the user's specific hardware, resulting in faster and more efficient performance.
One of the most exciting features of Stal/IX is its bootstrapped rolling release model. This means that the operating system is constantly updated with the latest software, without the need for major version upgrades. This ensures that users always have access to the latest features and security updates.
In addition, Stal/IX features a file system layout inspired by Nix, which allows for efficient management of packages and dependencies. The file system is organized in a way that allows for easy rollback to previous versions, making it an ideal platform for development and experimentation.
"We're thrilled to release the alpha version of Stal/IX," said the Stal/IX development team. "We believe that our innovative approach to package management and distribution will provide users with a faster, more secure, and more efficient Linux experience."
The alpha version of Stal/IX is available for download now. For more information, please visit the Stal/IX website at
About Stal/IX:
Stal/IX is a new statically linked, source-based, bootstrapped rolling Linux operating system "
🔥32😐10👍9🤮1
https://www.opennet.ru/opennews/art.shtml?num=58820
https://www.fsf.org/news/free-software-awards-winners-announced-eli-zaretskii-tad-skewedzeppelin-gnu-jami
FSF объявило "Free Software Awards winners".
Я, конечно, сильно удивлен, что в списке нет одной там компании на букву "Я".
Если серьезно - то все это, конечно, грустно, не более.
https://www.fsf.org/news/free-software-awards-winners-announced-eli-zaretskii-tad-skewedzeppelin-gnu-jami
FSF объявило "Free Software Awards winners".
Я, конечно, сильно удивлен, что в списке нет одной там компании на букву "Я".
Если серьезно - то все это, конечно, грустно, не более.
www.opennet.ru
Фонд СПО объявил обладателей ежегодной премии за вклад в развитие свободного ПО
На конференции LibrePlanet 2023 состоялась церемония награждения, на которой объявлены лауреаты ежегодной премии "Free Software Awards 2022", учрежденной Фондом свободного ПО (FSF) и присуждаемой людям, внесшим наиболее значительный вклад в развитие свободного…
😁14