en
Feedback
commit -m "better"

commit -m "better"

Open in Telegram
3 566
Subscribers
-224 hours
+117 days
+7730 days
Attracting Subscribers
July '26
July '26
+117
in 5 channels
June '26
+96
in 2 channels
Get PRO
May '26
+105
in 4 channels
Get PRO
April '26
+160
in 4 channels
Get PRO
March '26
+229
in 3 channels
Get PRO
February '26
+83
in 2 channels
Get PRO
January '26
+94
in 2 channels
Get PRO
December '25
+102
in 1 channels
Get PRO
November '25
+80
in 6 channels
Get PRO
October '25
+83
in 4 channels
Get PRO
September '25
+94
in 4 channels
Get PRO
August '25
+90
in 6 channels
Get PRO
July '25
+91
in 3 channels
Get PRO
June '25
+86
in 4 channels
Get PRO
May '25
+95
in 4 channels
Get PRO
April '25
+129
in 4 channels
Get PRO
March '25
+134
in 7 channels
Get PRO
February '25
+93
in 4 channels
Get PRO
January '25
+114
in 7 channels
Get PRO
December '24
+102
in 1 channels
Get PRO
November '24
+211
in 4 channels
Get PRO
October '24
+169
in 3 channels
Get PRO
September '24
+135
in 1 channels
Get PRO
August '24
+94
in 7 channels
Get PRO
July '24
+68
in 2 channels
Get PRO
June '24
+69
in 2 channels
Get PRO
May '24
+61
in 1 channels
Get PRO
April '24
+118
in 2 channels
Get PRO
March '24
+237
in 2 channels
Get PRO
February '24
+89
in 3 channels
Get PRO
January '24
+98
in 2 channels
Get PRO
December '23
+97
in 1 channels
Get PRO
November '23
+33
in 0 channels
Get PRO
October '23
+39
in 1 channels
Get PRO
September '23
+36
in 0 channels
Get PRO
August '23
+49
in 0 channels
Get PRO
July '23
+56
in 0 channels
Get PRO
June '23
+25
in 0 channels
Get PRO
May '23
+26
in 0 channels
Get PRO
April '23
+25
in 0 channels
Get PRO
March '23
+44
in 0 channels
Get PRO
February '23
+32
in 0 channels
Get PRO
January '23
+39
in 0 channels
Get PRO
December '22
+29
in 0 channels
Get PRO
November '22
+30
in 0 channels
Get PRO
October '22
+40
in 0 channels
Get PRO
September '22
+60
in 0 channels
Get PRO
August '22
+32
in 0 channels
Get PRO
July '22
+78
in 0 channels
Get PRO
June '22
+63
in 0 channels
Get PRO
May '22
+33
in 0 channels
Get PRO
April '22
+41
in 0 channels
Get PRO
March '22
+103
in 0 channels
Get PRO
February '22
+71
in 0 channels
Get PRO
January '22
+192
in 0 channels
Get PRO
December '21
+44
in 0 channels
Get PRO
November '21
+39
in 0 channels
Get PRO
October '21
+120
in 0 channels
Get PRO
September '21
+256
in 0 channels
Date
Subscriber Growth
Mentions
Channels
28 July+3
27 July0
26 July+2
25 July0
24 July+2
23 July+6
22 July+3
21 July+4
20 July0
19 July+1
18 July0
17 July+8
16 July+12
15 July+3
14 July+1
13 July+4
12 July+1
11 July+2
10 July+9
09 July+17
08 July+12
07 July+8
06 July+2
05 July+1
04 July+1
03 July+2
02 July+7
01 July+6
Channel Posts
Хорошо иметь свой #shell Помню пришел как-то в niri с багом, у меня не работал plug and play для usb клавиатуры и мышки, https://github.com/niri-wm/niri/issues/2523, меня зачем-то послали проверять поведение в KDE. Баг у меня был в niri, а не в KDE, и проверять я тогда не пошел. Сейчас я полагаю, что niri в этом месте использовал udev для plug and play, а его у меня как раз и не было. В моем shell plug and play работает как и с udev, так и просто так, хорошо!

2
No text...
1 564
3
Меня начали спрашивать, чем #shitty лучше, чем другие терминалы. Чем другие терминалы же, ответ очевидный. Он очень быстрый #perf. Это, знаете ли, очень сложно доказуемое утверждение, потому что устоявшихся практик тетирования терминалов нет, и, хотя мои time head -c 200000000 /dev/random и time head -c 200000000 /dev/zero дают первое неплохое приближение для оценки batch пропускной способности конвейера терминала, этого мало. Но я могу рассказать про свои подходы, про конкурентов, и показать, почему они быстрее, чем у конкурентов! Автору терминала, с точки зрения #perf, на самом деле, надо принять не так уж много решений: * как будет устроена канва (хранилище ячеек терминала), на это непосредственно влияет то, как будет храниться история * какие операции разрешены с канвой терминальному слою (спойлер - чем крупнее, тем лучше, только семантические операции типа "сделай скролл", никаких операций над отдельными ячейками) * damage tracking. Довольно простая штука, суть в том, как трекать изменившиеся части экрана, как их батчевать, и как доставлять дельту до рендера (и позже до композитора) * модель рендеринга Сегодня расскажу про модель damage и модель рендеринга у меня, и сравню с основными конкурентами. В целом, damage у меня, это per screen row (не путать с canvas row): ```struct RowDamage { Epoch* epoch; u16 start; u16 end; u16 count; };``` Эпоха - это основной damage tracker device. Это bitset с эпохой (по сути, bitset с операцией clear() за O(1)). Через него проходит весь damage - от отдельных ячеек, до строк, и до прямоугольников. Базово ячейка просто проверяется по bitset, row - по всем ячейкам, rect - по всем row. Это довольно дорого, поэтому проделан ряд оптимизаций: 1) если ячейка miss, то она записывается в epoch, и делается ++count. Тем самым, count - это число поврежденных ячеек в строке. Далее, start = min(start, cellX), end = max(end, cellX + 1). То есть, [start, end) - это диапазаон строки, покрывающий все поврежденные ячейки. Есть два офигенных инварианта: если end - start == count, то ячейки покрыли диапазон без дыр (полный диапазон). И если count == width, то ячейка покрыта целиком 2) оптимизация для row - если row попадает в полный диапазон [start, end), то damage полностью пропускается. Ну или проще - cell damage идет только на то, что вне текущего полного диапазона 3) оптимизация для rect - полностью пропускаем полностью поврежденные строки, и полностью пропускаем rect, если число поврежденных строк == height Совместно это все позволяет иметь мне cell perfect damage очень дешево. Что у конкурентов: * alacritty - только [start, end), дешево и сердито, две дырки по краям строки - полный рендер этой строки. Спойлер - для alacritty это аще пофиг, хехе * kitty/ghostty - бит damage на строку, и bit damage на страницу для ghostty * foot - вместо отдельного хранения damage, у него бит dirty прямо в ячейке канвы. Это неплохо, но хуже, чем у меня, потому что повреждение - это не свойство канвы, а экрана, и когда ты меняешь две строки местами на канве, foot должен потом еще поменять назад damage bit. Так же у него есть dirty bit на строку. В общем, у всех модель damage слабее, чем у меня. Далее идет модель доставки повреждений до рендера. По сути, это два процесса: 1) надо передать набор (x,y) координат с повреждениями 2) надо для поврежденных координат построить отображение canva cell -> gpu cell. Не такая простая задача, учитывая, что canva cell содержит много всякой ебалы, помимо символа и цвета - например, гиперлинки. В общем, довольно всратый процесс. Что у меня: * я объединяю построчный damage в непрерывные спаны (конечно с оптимизациями, если знаю, что start - end уже непрерывный), получаю вектор спанов с повреждениями * далее у меня есть процесс, которого нет ни в одном другом эмуляторе терминала - я разбиваю спаны на спаны размером по 32 ячейки, и кеширую отображение canvasSpan[32] -> gpuSpan[32]. Для этого у меня есть очень быстрый блочный LRU кеш, и очень быстрая хешфункция. Там cache rate до 80%, и это здорово ускоряет рендер. Что у конкурентов? * foot - рендер получает канву, идет по ней, пропуская целые поврежденные строки, и сразу рендерит ячейку по canvas cell в shm память предыдущего кадра. В целом, неплохо, но очевидно хуже, чем у меня. И, надо сказать, что #foot тут лучший из конкурентов, потому что! * alacritty/kitty/ghostty по сути, роняют эту информацию на пол, и рендерят целый кадр! Такие дела. Так как они рендерят целый кадр, то дальше про них говорить бессмысленно, но вот про одну свою оптимизацию именно рендера я расскажу! Задача очень простая - реюзать предыдущие кадры, и рисовать на них только дельту. Решил я ее так: * свопчейн о трех кадрах. Кадр готов - отдается композитору, композитор потом вернет его назад, НЕ ПОВРЕДИВ. * глобальный damage log, туда я пишу все спаны всех случившихся damage. * красивый трюк, до которого никто не додумался - каждый кадр в swapchain имеет привязку к позиции в этом логе. То есть, я всегда для кадра, который вернул мне композитор, могу рассчитать дельту с "сейчас", и аккуратно нарисовать ее поверх старого кадра, и дальше отправить композитору. Уф. Чуваки, у меня реально самая сильная доставка повреждений end to end, и когда вы видите, что на экране мигает курсор, вы можете быть уверены, что я перерисовал ровно одну ячейку на старом кадре, а не нарисовал кадр целиком. Такие дела.
1 539
4
https://github.com/glfw/glfw/pull/2882 Вот и я начал отправлять PR на github, закрыв глаза, и не читая!
1 725
5
#imgui #shell Запилил с фабулой очень крутую штуку, AFAIK сейчас так никто не делает, и делать не умеет. TL;DR - эмулятор KMS в userspace. Современные wayland композиторы тестируют почти end to end - от потока команд до реальной картинки, которую должен увидеть пользователь. За одним маленьким исключением - никто не знает, что на самом деле пользователь увидит, потому что то, что он увидит, определяет не только картинка, но и настройки самого output (встроенный экран, внешний монитор, и так далее) - sdr/hdr, цветовое пространство, яркость, разрешение и частота, vsync, edid, и так далее, и так далее. Вот, насколько я знаю, современные композиторы (как и я раньше) тестируются в headless mode - до рендеринга картинки в bitmap, а дальше все. Но это очень важная часть - она включает в себя подключение и отключение output на лету, смену его режимов, failure injection, на все это надо уметь реагировать корректно. Чтобы это тестировать end to end, мы с фабулой запилили эмулятор этой state machine - https://github.com/pg83/imway/blob/main/kms_fake.cpp Фактически, перехватили парочку сисколлов, https://github.com/pg83/imway/blob/main/kms_fake.cpp#L1209-L1251, и дали тестовой машинерии управлять этой state machine. Конечно, сразу нашли кучу багов, связанных c connect/disconnect, и прочим HDR настройками. Уверяю, что сейчас ни один другой композитор так не тестируется.
1 800
6
Меня тут в комментариях потроллили, что, мол, я публикую код под GPL3, хотя сильно против этого #GNU. Дело в том, что #zutty исходно идет под GPL3, что делает его вирусным продуктом. Я в ответ потроллил коллег, что переписываю #zutty с GPL на MIT - https://github.com/pg83/shitty/blob/master/CONTRIBUTING.md Ох как порвало копилефтоблядей в комментариях, от "один раз замазался - уже назад дороги нет", до "так нельзя!". Удивительно, как любители швабодки одновременно любят тырить код под свободными лицензиями типа MIT/BSD в свой копилефтомир, и при этом совершенно не переносят того, что их код тоже можно "отмыть" от вируса под названием GPL. Так как такое переписывание требует каких-то телодвижений, мне пришлось разметить весь (новый!) код плашкой: /* * Copyright (C) 2026 Shitty team * MIT licensed * See the file LICENSE.MIT for the full license. */ Сижу и ржу, не назвать ли это The Shittiest, всегда хотел стать фронтменом панкрок группы!
2 039
7
Дерево портов FreeBSD временно заморожено из-за добавления в порты слишком большого файла Разработчики FreeBSD объявили о решении временно заморозить репозиторий с деревом портов в связи с инцидентом, вызванным помещением в порты бинарного файла, размером 150 МБ. Данная операция привела к нарушению зеркалирования портов на GitHub из-за превышения ограничения на максимальный размер файла, которое на GitHub составляет 100 МБ. Для проведения чистки и удаления из истории репозитория бинарных данных с сомнительной лицензией введена заморозка от внесения изменений, которая продолжается уже около двух суток. Информация о том, как подобный файл был помещён в дерево портов пока не приводится, но утверждается, что нет оснований считать репозиторий скомпрометированным. Подробнее: https://opennet.ru/65966/ https://opennet.me/65966/
2 221
8
https://github.com/pg83/shitty Полайкайте, раз такое дело!
2 373
9
https://t.me/itpgchannel/4285 писал, что запил порядка 600 автотестов. Но вчера мне пришла в голову, не побоюсь этого слова, совершенно гениальная идея! Я решил "ограбить опенсорс", и ограбил, и теперь доволен, как слон. Короче, я заставил #LLM скачивать локально репозитории opens source терминалов, брать их интеграционные тесты, и добавлять в нашу базу. Попутно исправляя все баги, что у нас найдутся. Конечно, не все так просто, сначала мы составили детальный план ограбления - что воровать в первую очередь, а что потом, как понимать, у кого реально баг - у нас, или у них, и так далее. Но суть от этого не меняется. Машина трудится в поте лица уже сутки, не переставая, и потырила нам уже 2500 тестов, попутно починив еще пару десятков багов, и это только начало! Поименный список ограбленных проектов: https://github.com/pg83/zutty/tree/master/tests Очень, очень хорошо. С учетом того, что я еще пофаззил #zutty, у меня будет один из самых надежных и соответствующих стандартам терминалов! Отдельно замечу, что очень здорово, что вовремя перешел на свою систему сборки, интегрировать эту кашу куда-то еще было бы очень затруднительно.
2 518
10
No text...
2 190
11
Надо выбрать!
2 192
12
Смех смехом, но #zutty я переписал почти полностью, и, кажется, пора менять брендинг. В голове, с учетом традиции *tty, пока крутится shitty, но я еще не решил окончательно!
2 121
13
Парадоксально, но я не вижу у этой задачи никакого настоящего (а не "театр безопасности") решения, кроме как давать доступ к сильным моделям всем желающим. Если так не делать, то у злоумышленников такой доступ все равно останется, и у правительств тоже. И твой сайт/программа, не будучи профажженой сильной моделью, будет беззащитен. Если сравнивать с прошлым, то это примерно как запретить доступ к address sanitizer/libfuzzer, когда они только появились, потому что уязвимости они искали тоже очень хорошо. А потом перестали, потому что все их встроили в pipeline. Так же должно произойти и с сильными моделями. Но, очевидно, не произойдет.
2 143
14
Два дня назад я писал, что часть инфраструктуры HuggingFace подверглась атаке и была частично взломана ИИ-агентом. Только что
Два дня назад я писал, что часть инфраструктуры HuggingFace подверглась атаке и была частично взломана ИИ-агентом. Только что OpenAI признались, что... это была их модель, GPT-5.6-Sol и другая, более мощная предрелизная LLM. Их тестировали на ExploitGym (бенчмарк по кибербезопасности), и модель сначала смогла найти новый, до этого неизвестный эксплойт в инфраструктуре OpenAI (это не было её задачей, её не натравили «поискать баги чтоб мы пофиксили»), оттуда раскрутиться на получение полноценного доступа в интернет (который по умолчанию обрезан в тестовой среде), а затем залезть на HuggingFace искать ответы для бенчмарка. После этого она нашла уязвимость и там, получила доступ к коду авторизации некоторых сервисов и продолжила искать ответы. Этот инцидент без преуменьшения беспрецедентный, и я пока не могу представить, что должно произойти, чтобы политики, NSA, DOD и Китай не обратили на это внимание. GPT-6 в конце августа нам видимо не ждать 🌚
1 856
15
No text...
2 710
16
Знаете ли вы, что 100% проблем безопасности GNOME отслеживает всего один сотрудник Red Hat? А ещё Red Hat больше не передаёт+1
Знаете ли вы, что 100% проблем безопасности GNOME отслеживает всего один сотрудник Red Hat? А ещё Red Hat больше не передаёт разработчикам информацию НИ ОБ ОДНОЙ уязвимости в проектах, которые запрещают контент, сгенерированный ИИ. И что с 1 ноября этот сотрудник Red Hat ВООБЩЕ перестанет отслеживать новые проблемы безопасности GNOME? «Больше никто не отслеживает проблемы безопасности GNOME» — говорит Майкл Катанзаро из Red Hat. Так сейчас обстоят дела с безопасностью GNOME ☕️ https://blogs.gnome.org/mcatanzaro/2026/07/20/some-changes-to-gnome-security-tracking/ @linuxos_tg
2 345
17
#prog #rust #article Source
#prog #rust #article Source
2 020
18
У Кими закончились сервера и они временно закрыли покупку новых подписок Как непрофессионально. Если Кими хочет представить с
У Кими закончились сервера и они временно закрыли покупку новых подписок Как непрофессионально. Если Кими хочет представить себя мировой общественности как по-настройщему фронтирная AI лаборатория, они должны ДЕЙСТВОВАТЬ как таковая: например, тихо переключать людей на более дешевые модели, добавить экономящие ресурсы гардрейлы, и может быть написать блогпост или два про закат человечества
2 162
19
Прогресс за выходные по https://t.me/itpgchannel/4275 #shell: * определился с концепцией UX - это будет клон Unity, которая б
Прогресс за выходные по https://t.me/itpgchannel/4275 #shell: * определился с концепцией UX - это будет клон Unity, которая была лучшая шелл под Linux, да и вообще, неплохо смотрелась. На КДПВ можно видеть почти финальный результат. * форкнул #zutty, переписал на свою велосипедную либу, добавил порядка 600 автотестов, нашел ими 40!!! багов (как падений, проездов, так и ошибок в реализации протоколов), реализовал все современные протоколы разом. Ну и ускорил, теперь мой Zutty не в 10 раз медленнее #foot, а в 2 раза быстрее, что уже очень достойно. А вы думали, что я буду терпеть тормозное говно в своем десктопе? #perf
2 044
20
No text...
1 828