❌

Normal view

[Перевод] Два git notes add параллельно: оба вернули 0, а одна заметка пропала

Две команды git notes add добавляют заметки к двум разным коммитам одновременно. Обе завершаются с кодом 0, но одна заметка исчезает: на обычной Linux-машине — в 25 запусках из 30. Фарид Закария нашёл эту гонку своей детерминированной виртуальной машиной Rewind VM и показывает, как тремя вопросами к записанным прогонам дойти от «тест иногда падает» до одной строки в notes-utils.c, которая обновляет ссылку refs/notes/commits без проверки, что её не успел изменить соседний процесс. Патч уже отправлен в рассылку git.

Читать далее

[Перевод] Я встроил процессор RISC-V в веса Qwen 3.5, а памятью ему стали слои DeltaNet

Qwenputer — это обычная Qwen 3.5 4B, в веса которой скомпилирован 32-битный процессор RISC-V (RV32IM). Оперативной памятью ему служат собственные слои Gated DeltaNet модели: при гейте 1, силе записи 1 и one-hot-ключах каждая запись перезаписывает ровно одну строку состояния, а one-hot-запрос возвращает точное значение. Процессор занимает 11 слоёв перед 32 слоями Qwen, проходит официальные riscv-tests и выполняет C и MicroPython внутри прямых проходов модели, без внешних инструментов. На длинной арифметике NUPA точность выросла с 48,6% до 100%, примерно на 230 000 позиций вывода не нашлось ни одного расхождения с эталонной машиной. Автор объясняет, как это устроено, где ограничения и как к модели прикрутили файловую систему.

Читать далее

Байты приходят, события нет: проверяем кадры SSE и gzip

Сервер отправляет по SSE три сообщения с паузой 250 мс, а клиент видит события только через 750 мс. Собрал стенд на стандартной библиотеке Python и поставил три отметки времени: байты тела ответа, текст после декодера gzip, готовое событие. Незавершённый кадр и сжатие без промежуточного сброса дают одинаковый симптом, но задержка появляется в разных точках.

Читать далее

[Перевод] Купил морскую спутниковую антенну примерно за €200 и убедил её, что она на яхте

Морская спутниковая антенна Intellian i4 новой стоит около 4000 евро, а на нидерландской барахолке Marktplaats её продавали примерно за 200. Чтобы она навелась на спутник, стоя на крыше, а не на палубе, автор подключил RP2040 с модулем RS-422 и стал слать антенне NMEA-строку с курсом «яхты». Потом снифал обмен фирменной программы с блоком управления, декомпилировал её код на C# и разобрал текстовый протокол с необычной контрольной суммой и целочисленными углами. В итоге тарелка наводится одной командой, работает как поворотный механизм для Gpredict и ловит телевидение с Astra 19.2°E.

Читать далее

[Перевод] Эмулятор Game Boy Color на MicroPython: Pokémon Crystal на конференц-бейдже с RP2350

Стив Франсиа, автор Hugo и Cobra, после эмулятора NES запустил на конференц-бейдже GitHub Universe с RP2350 эмулятор Game Boy Color — на MicroPython с генератором кода Viper. Процессор SM83 с его восемью регистрами и 512 опкодами не влез в четыре быстрые локальные переменные Viper, и декодер пришлось строить на восьмеричной раскладке опкода. Ветвления по адресу заменила таблица из 16 страниц по 4 КБ, двухмегабайтные картриджи подгружаются по банку при первом обращении, а разгон до 300 МГц вешал общую шину QSPI. Плюс три бага из реальных игр: окно диалога в Oracle of Ages, «вывернутый» Линк в режиме двойной скорости и указатель стека, который Pokémon Crystal направляет прямо в ROM.

Читать далее

[Перевод] Компьютерное зрение на микроконтроллере за $2: SIMD на ESP32-S3 ускорил FAST в 2,2 раза

У ESP32-S3 есть 128-битные SIMD-инструкции, но примеров кода под них почти нет: автор нашёл всего три источника. Он написал на них детектор углов FAST и упёрся в два ограничения набора инструкций. Невыровненные блоки пикселей напрямую не читаются, а сравнивать можно только знаковые байты, причём вся арифметика с насыщением, так что вычесть 128 из беззнакового пикселя обычным вычитанием нельзя. Первое обошла инструкция, которая вырезает кусок из двух склеенных регистров, второе — XOR с 0x80. Итог в тестах автора — 11,2 мегапикселя в секунду вместо 5,1: этого хватает на поток VGA при 30 кадрах в секунду.

Читать далее

[Перевод] Фаззер против ИИ-агента на V8: 37 и 45 уязвимостей за полгода, общих — четверть

В Project Zero сравнили два конвейера, которые постоянно ищут уязвимости в V8, JavaScript-движке Chrome: фаззер Fuzzilli работает непрерывно, LLM-агент BigSleep раз в сутки просматривает новые коммиты. За апрель–сентябрь 2026 года после очистки от дубликатов и «нерабочих» репортов у BigSleep 45 исправленных уязвимостей, у Fuzzilli 37. Пересечение считали отдельно, с дополнительным поиском дубликатов через коммиты-исправления и базу Clusterfuzz: общими оказались 20 из 81 репорта, около четверти. В отдельном эксперименте агент на модели Gemini 3.6 flash получил коммиты, которые, вероятно, внесли 112 старых багов Fuzzilli, и за 25 попыток на каждый коммит заново нашёл около 62% из них. Баги, на которые фаззер тратил больше времени, агенту тоже давались хуже, а в JIT-компиляторах пересечение меньше. В переводе статьи Самуэля Гросса — методика подсчёта, проверка на запоминание обучающих данных и три разобранных бага: какие нашёл только агент и какой — только фаззер.

Читать далее
❌