commit -m "better"
Ir al canal en Telegram
4 110
Suscriptores
+724 horas
+147 días
+29830 días
Archivo de publicaciones
4 110
Оказалось, что мой монументальный текст про #pizd0s design никто не осилил, и надо коротенько написать, чего же новое я там хочу сделать.
https://t.me/itpgchannel/56
https://t.me/itpgchannel/1331
В целом, все очень просто - программы в моей OS - это #wasm модули со своим ABI, процессы - те же wasm модули, после компиляции в native код с помощью моего же AOT компилятора https://github.com/pizd0s/kernel/tree/main/bin/aot.
В OS нет paging, защиты памяти, как ее обычно себе представляют в OS, с помощью аппаратных средств процессора. Трансляции адресов тоже нет.
Вместо этого - изоляция на уровне моей виртуальной машины, и сгенерированного кода.
Если совсем просто, любой доступ в памяти в wasm компилируется во что-то типа
if (!check(ptr)) raise(); *ptr .... Поэтому есть гарантия, что исполняемый код не полезет туда, куда ему нельзя.
Из этого есть огромное количество интересных следствий, которые мне и хочется поисследовать:
* нет paging и трансляции адресов - программы становятся 1.2-2 раза быстрее, только из-за отсутствия tlb cache misses и прочего, зависит от нагрузки. Это примерно как если бы вы запустили весь userspace в 1G huge pages.
* сгенеренный AOT код, из-за кучи check(), становится на 20% медленнее. Это сам по себе очень удивительный результат, потому что очевидный тут вопрос - "а почему не в 10 раз медленее?". Про свой AOT я напишу отдельно, и расскажу, почему так. Промежуточный вывод - я ожидаю, что на bare metal программы в моей OS будут работать в среднем быстрее, а не медленнее, чем в конвенциональной OS.
* сисколл в такой схеме - это просто прямой вызов runtime ядра, как если бы вы позвали вызов из .so, то есть, в 100 - 1000 раз быстрее обычного сисколла в конвенциональной OS. Из этого уже можно сделать такой вывод - что API ядра у меня идет не по границе "так эффективно", а по "так удобно", "есть профит от разреза именно в этом месте". Еще один моментальный вывод - так как нет context switch, то ядро может использовать любые регистры, и вообще, любой "обычный", библиотечный, код.
* malloc/free/calloc/realloc у меня не часть libc, а API, предоставляемое ядром, потому что смотри пункт выше. Из этого есть несколько моментальных интересных следствий - например, структуры аллокатора лежат в ядре, и недостижимы для программы, внутри адресного пространства программы - только данные, без структур аллокатора, и их невозможно повредить вредоносной программой. Прощай, heap overflow. Второе интересное следствие - ASAN у меня не отдельный режим компиляции программы, а отдельный режим исполнения, то есть, я могу любую, неинструментированную, программу, запустить в ASAN режиме.
* wasm - гарвардская машина. Она не имеет доступа к свому коду, и к своему стеку исполнения. Если взять это свойство, если взять предыдущий пункт, и еще отдельно отметить, что мой AOT работает поверх go runtime, то есть, его таргет - растущий и перемещающийся в памяти стек go, то "прощай, stack overflow, прощай, ROP".
(на самом деле, любой СБ тут должен адово перевозбудиться, и начать дергать меня со словами "когда же уже в прод?")
* как я уже сказал, сисколлы в моей модели абсолютно бесплатны, поэтому я могу выделить в отдельный процесс (область изоляции) вообще все что угодно, например, целоя ядро Linux, скомпиленное в wasm. Я так и делаю - у меня Linux - это отдельный процесс, который управляет оборудованием. А точнее, несколько процессов Linux, разделенных по подсистемам и конкретным драйверам, чтобы после проезда можно было рестартовать процесс Linux, и работать дальше. Или вот мои FS работают по протоколу FUSE, и не тормозят при этом. Доступна любая FS, для которой есть FUSE драйвер.
Думаю, пока хватит.4 110
https://dennisforbes.ca/blog/microblog/2026/10/the_accidental_12000x_sqlite_slowdown/
TL;DR - какой-то растовый крейт для sqlite использует
zig cc для кросс-сборки сишного кода. Ранее zig для этого использовал musl, но шаловливые ручки покоя не дают, и они решили написать libc на zig.
Нахрена им это нужно - непонятно.
Вот, сломали как раз те самые строковые функции, оптимизацией которых я занимаюсь в последнее время:
"In the rewrite of strspn, replacing the musl version with the pure zig variant), the first step measures the entire length of the string. This is also seen in the rewrites of strcspn, strpbrk and strstr.
This is a problem for tokenizers. A tokenizer takes a giant string and a common iterating step is to skip whitespace, getting the new string location and then repeating this pattern iteratively. With this shlemiel the painter pattern introduced with these rewrites, as it steps through the text it is tokenizing it is remeasuring the remaining length of the string endlessly.
This is what caused my performance issue, and it’s why it appeared on Linux but was never seen on my Mac (where zig wasn’t used for compiling sqlite).
Tokenizing a 1.2MB file, which was seen passing json to sqlite, is approximately 12,000x slower with this pattern. As the file gets larger, the slowdown is quadratic"
Не используйте zig, они там явно слабо отдупляют, что творят!4 110
Repost from Кулешов разгоняет IT | AI
Инженеры Яндекса (в том числе и ваш покорный слуга немного приложил к этому руку) после атак на дата-центры смогли вернуть доступ к 97,16% клиентских данных в Yandex Cloud. Оставшиеся 2,84% восстановить невозможно из-за критических повреждений оборудования и отсутствия у клиентов бэкапов на платформе.
4 110
Доказательства, между прочим, добежали.
Клошадь целую неделю держала мою #lab #home_lab в полочку по CPU, отлаживала и ускоряла доказательства. Я бы сам не справился, все же, мой опыт с #Z3 обычно ограничивается "что-то написал - сработало - класс, зависло на вечность - хз что с этим делать".
Последний полный прогон бежал почти сутки, и таки сошелся!
В процессе нашли и починили 3 настоящие ошибки, так что все не зря!
4 110
https://www.opennet.ru/opennews/art.shtml?num=66658
"... Добавлены правила для AI-ассистентов, в которых указано, что Mesa развивает сообщество людей, поэтому AI-агентам не следует открывать pull-запросы или публиковать комментарии. Для коммитов, отправленных людьми, но созданных с использованием AI, предписано явно указывать тег "Generated-by: LLM" или Assisted-by: LLM". Для драйверов asahi, nouveau, panfrost, imagination, jay, и poly разработчиками введены отдельные ограничения на использование AI ..."
asahi - и чому я не удивлен?4 110
В рамках эксперимента один из инженеров Anthropic поручил Fable 5.2 разработать прототип видеоигры. Начав с пустой папки, модель координировала работу более 1000 субагентов, которые восемь дней круглосуточно писали, тестировали и проверяли код. В результате была создана рабочая игра, запускающаяся на ноутбуке, с собственным движком, графикой и звуком, управлением с клавиатуры, сетевым режимом, системой сохранений, игровым интерфейсом, главным меню, установщиком и встроенными функциями Claude (см. видео ниже)
https://korovan.ru/
(на самом деле про https://x.com/cgtwts/status/2119921009637900580?a=kIj6JyWWS2BUSS7Mf-s&s=46, но суть не меняется)
4 110
Продолжаем тему быстрых строковых функций.
https://t.me/itpgchannel/4600
https://t.me/itpgchannel/4615
В коментариях задали два закономерных вопроса:
* как ты гарантируешь результат по скорости своими проходами поверх результата компилятора, если компиляторы разные, и результат меняется?
* что именно ты доказываешь, и на что может надеяться человек, если он собирается другим компилятором?
Я подумал, и решил эту проблему #изящно - отказался от clang/gcc, и заставил клошадь запилить собственный компилятор ровно того подмножества С, что используется в нашем коде.
Вот он - https://github.com/pg83/str/tree/main/dev/opt
Кстати, изначально запилил две реализации - клодой (opus 5.5 xhigh + fable 5.1 xhigh), и кодексом (sol-6.1 max). Результат кодекса в итоге выкинул, потому что он просто подогнал под результат.
4 110
В общем, как выяснилось, все из-за ИИ, да.
В августе DHH наехал на Asahi за то, что они не дают контрибутить код от ИИ в проект, после чего форкнул наработки Asahi Linux, и начал их пилить с командой из 15 человек, интегрируя разработки в свой Omarchy Linux.
С помощью ИИ DHH быстренько наслопил то, что команда Asahi руками клепала б еще пару лет, что вызвало дикую попоболь у команды Asahi, и попытку огораживания своего кода.
Замечу, что про OSS лицензии они не понимают примерно нихера, потому что стирать авторство не разрешает и MIT, а GPL не защищает от AI-переслопливания.
В общем, какое-то истеричное поведение на ровном месте, из-за "не поделились деньгами, послали нахер уважаемых людей с их дурацкими правилами про ИИ, аааа".
Отдельно доставляет, что "поменяли" лицензию без договоренностей с авторами оригинального кода. Ничего не имею против, новый код идет только под GPL + некоторые части под MIT + GPL, старый под MIT. Сам так сделал с #shitty, но что-то не слышно вскукареков от копилефтоблядей что "ай-ай-ай нельзя так"!
https://view.homelab.cam/view/24a3c1f00c9aa7fdb74b4a248385c08aad97c24db4922a2ff7340e1a3d8ec3be/
4 110
Меня тут спрашивают, почему я даю такие вызывающие имена своим проектам - #shitty, #pizd0s, типа "никто не будет пользоваться же".
Мое отношение к своему open source очень сильно поменялось в последнее время, и лучше всего это видно вот тут - https://t.me/itpgchannel/4275
Раньше для жизнеспособности проекта было нужно, чтобы им пользовались внешние люди. Если пользуются - то, возможно, занесут патч-другой, а потом присоединятся к разработке проекта.
Я, кстати, свой блог завел ровно по этой причине - мне хотелось как-то найти помощь для разработки #stal/ix.
Сейчас помощь в разработке мне не нужна, ни в stal/ix, ни где-то еще, мне достаточно клошади.
Поэтому мой open source мне теперь нужен только для:
* личного использования. Я вполне переживу, если моим софтом больше никто не будет пользоваться.
* мне интересно про него писать в свой блог. Кстати, это вторая причина, почему я завел блог - мне не хватало общения на излете изоляции от коронавируса. Сейчас мой блог - это мой основной канал общения с внешним миром, и он мне очень нравится, тусовка, сложившаяся в группе блога - лучшая!
И, так как теперь нет необходимости подстраиваться под чужие представления о прекрасном, то я называю проекты так, как того требует моя панковская душа!
("панки со счетами в банке", ага)
4 110
Вот вы тут сидите, а коллеги портировали целый Doom под #pizd0s!
https://github.com/Rulexec/pizdos/tree/doom-poc
Да, оно уже может запустить целый Doom!
#pizd00m
4 110
https://jepsen.io/analyses/particledb-1.1.4
TL;DR - случилось страшное!
У кого-то:
* нашлись деньги наслопить базу данных
* нашлись деньги, чтобы Jepsen посмотрел на их творчество!
Способностей произвести годный продукт у них не нашлось.
Ну и он их и разъебал!
Еще в копилочку того, что #LLM - мультиплицируют, а не прибавляют, сколько денег ты в них не вбухивай.
