Hacker News Digest

Обновлено: 28 ноября 2025 г. в 08:55

Постов: 4635 • Страница 295/464

Safe C++ proposal is not being continued (sibellavia.lol)

Safe C++ больше не развивается.
Год назад появился черновик, обещавший «ржавую» безопасность без ломки старого кода: память, типы, потоки — всё через явный safe-контекст. Комитету идея не зашла: модель Rust назвали чуждой, голоса отдали Profiles — набору ограничений на уже существующий C++, которые на этапе компиляции блокируют UAF, data-race, deadlock, утечки.

Profiles не добавляют синтаксиса, только запрещают опасные паттерны; включаются опцией, обратно совместимы. Safe C++ требовал новых квалификаторов и заимствовал проверки времени жизни — слишком радикально.

Автор Safe C++, Шон Бакстер, признал:

Дальнейшая работа бесполезна; все силы — в Profiles.

Вывод: Profiles слабее, но реалистичнее; ждём их в C++26.

by charles_irl • 13 сентября 2025 г. в 19:00 • 159 points

ОригиналHN

#c++#rust#profiles#memory-safety#data-race#deadlock#lifetimes#safe-c++

Комментарии (140)

  • Комитет C++ фактически отверг Safe C++ и ограничился «Profiles» — набором флагов, запрещающих часть небезопасных конструкций.
  • Участники сходятся: главная проблема не техническая, а культурная — сообщество не хочет ограничений, считая «если код работает — значит, он безопасен».
  • Profiles критикуют за примитивность: они не решают temporal safety, не выражают лифтаймы и не требуют изменения синтаксиса, поэтому дают лишь иллюзию защиты.
  • Большинство считает, что без полного отказа от C-подобного подмножества и без внедрения lifetimes C++ никогда не станет «безопасным»; проще перейти на Rust.
  • Практический вывод: крупные проекты продолжат игнорировать Profiles, а новые кодовые базы будут выбирать Rust либо двухъязычный подход «C++26 + внешние анализаторы».

The case against social media is stronger than you think (arachnemag.substack.com) 🔥 Горячее 💬 Длинная дискуссия

by ingve • 13 сентября 2025 г. в 18:39 • 296 points

ОригиналHN

#algorithms#social-media#facebook#twitter#mental-health#data-privacy

Комментарии (245)

  • Участники обсуждения сходятся в том, что алгоритмические ленты, максимизирующие вовлечение, превращают соцсети в машины поляризации и зависимости.
  • Повторяющийся аргумент: «если бы не Facebook/Twitter, люди всё равно нашли бы способ сраться» — отвергается опытом тех, кто ушёл и почувствовал немедленное улучшение психики.
  • Главный страх — не просто потеря времени, а то, что наши мысли формируются узким кругом платформ, которым выгодно злить или пугать.
  • Предлагаемые «лекарства» звучат жёстко: запретить монетизацию политики, рекламу по данным, разрешать только хронологическую ленту, или вовсе блокировать доступ до 15-16 лет.
  • Многие признают: уйти трудно, потому что соцсети одновременно заменили СМИ, клубы, знакомства и даже политические партии; отказаться — значит выйти из публичной жизни.

RIP pthread_cancel (eissing.org)

curl 8.16.0 внедрил pthread_cancel, чтобы прерывать зависший getaddrinfo, но уже в следующем релизе функцию убирают: отмена потока приводит к утечке памяти.

glibc сначала резолвит имя, выделяя память, затем читает /etc/gai.conf, где встречается fopen — точка отмены. Если поток прервать на этом шаге, выделенные адреса не освобождаются, и утечка повторяется при каждом новом вызове.

Поскольку других «опасных» точек может быть ещё больше, а библиотека не гарантирует чистоту ресурсов, pthread_cancel признан неприемлемым. Возвращаемся к старому выбору: либо ждать pthread_join, либо пускать потоки «в свободное плавание» и накапливать их.

Кто не хочет тормозов — подключает c-ares, но тот не покрывает всех возможностей glibc.

by robin_reala • 13 сентября 2025 г. в 17:20 • 219 points

ОригиналHN

#pthread-cancel#getaddrinfo#glibc#c-ares#dns#posix#c#multithreading

Комментарии (93)

  • Проблема: стандартный POSIX-вызов getaddrinfo блокирующий, не имеет таймаута и плохо сочетается с pthread_cancel, что приводит к утечкам/дедлокам.
  • Исторически DNS-запросы запускали в отдельном потоке/процессе, но 30 лет спустя ситуация не улучшилась.
  • Альтернативы есть: getaddrinfo_a, c-ares, systemd-resolved, io_uring, но они либо glibc-специфичны, либо нетривиальны в кросс-платформенной разработке.
  • Разработчики предлагают:
    – отказаться от pthread_cancel и использовать пул воркер-потоков с флагом «самоубийства»;
    – вынести DNS из libc в системный сервис;
    – дождаться нового POSIX-стандарта асинхронного резолвера.

Geedge and MESA leak: Analyzing the great firewall’s largest document leak (gfw.report) 🔥 Горячее

Краткий русский пересказ утечки Geedge & MESA

  • 11 сентября 2025 года утекло ≈600 ГБ внутренних данных «Великого китайского файрвола» (GFW): исходники, логи, переписка.
  • Источник — компания Geedge Networks (главный учёный — «отец GFW» Фан Бинсин) и лаборатория MESA при Институте информатики АН Китая.
  • Документы показывают: разработка и эксплуатация систем фильтрации для Синьцзяна, Цзянсу, Фуцзяня; экспорт цензуры в Мьянму, Пакистан, Эфиопию, Казахстан и другие страны «Пояса и пути».
  • Архивы: 500 ГБ RPM-репозиторий, 35 ГБ Git MESA, 15 ГБ Jira Geedge, десятки документов Word о тендерах, графиках, отчётах.
  • Зеркала: BitTorrent и HTTPS на EnlaceHacktivista.
  • Рекомендация: разбирать только в изолированной виртуалке — возможны следящие модули и вредоносное ПО.

by yourapostasy • 13 сентября 2025 г. в 16:43 • 401 points

ОригиналHN

#geedge-networks#mesa#great-firewall#dpi#mitm#bittorrent#v2ray#outlines#shadowsocks#quic

Комментарии (121)

  • Компания Geedge с 2018 г. продаёт авторитарным режимам (Казахстан, Пакистан, Беларусь, Россия) «Great-Firewall-ин-а-box» под маркой Tiangou Secure Gateway: DPI, MITM, SNI-сканирование, «замедление» SSH/VPN, блокировка QUIC и облачных IP.
  • Участники считают, что технологии цензуры уже массово экспортируются западными вендорами (Cisco, Nokia, Siemens, Blue Coat) и внедряются в корпоративных и государственных сетях; «западный файрвол» — вопрос времени и удобного повода.
  • Обход всё ещё возможен (v2ray, Outline/Shadowsocks, ротация серверов, маскировка трафика), но GFW быстро учится: типичный Outline-блок наступает через 3 дня наблюдений.
  • Мнения морализаторов разделились: кто-то видит в разработчиках «веру во всё ради общего блага», кто-то — «провалившихся людей»; упоминается, что в Китае индивидуализм воспринимается как вредный «западный» порок.
  • Лейтмотив: «как только власть попробовала цензуру, бутылку уже не закупорить» — примеры Непала, Беларуси, России; в то же время всплывают новые исследования и инструменты как для усиления, так и для обхода блокировок.

Magical systems thinking (worksinprogress.co) 🔥 Горячее

Магическое системное мышление
Сокращённый перевод

Системное мышление обещает инструменты для проектирования сложных систем с нуля, но игнорирует главное: системы сопротивляются.

Все ключевые инфраструктуры — водоснабжение, интернет, логистика — начинались с простых рабочих прототипов. Первую электросеть в 1881 году собрали из лампочек и водяного колеса в английском городке; дальше её доводили десятилетия проб и ошибок. Никто не рисовал финальную схему заранее.

Современным правительствам нравится другая история: «проанализируем — и система подчинится». На деле они проигрывают.

  • США: запуск HealthCare.gov завис из-за сбоев, миллионы не смогли застраховаться.
  • Австралия: реформа поддержки инвалидов, спланированная 10 лет, раздула расходы до размера пенсионного бюджета.
  • Великобритания: механизм Contracts for Difference для ускорения «зелёной» энергетики превратился в 15-летнюю очередь подключений.

Инструменты стали мощнее, но системы всё чаще «отбиваются».

Альтернатива
С XIX века химики и инженеры предупреждали: сложные системы — не пассивные игрушки. Сломалась — починить может быть невозможно. Успех приходит только через маленькие рабочие прототипы и постепенное масштабирование.

Урок
Чем дальше системы уходят из-под контроля, тем важнее возвращаться к простым, проверенным решениям.

by epb_hn • 13 сентября 2025 г. в 16:18 • 262 points

ОригиналHN

#systems-thinking#complex-systems#systems-engineering#government-it-projects#cybernetics

Комментарии (80)

  • Критикуют саму статью: автор не даёт чёткого определения «системному мышлению», сводит всю дисциплину к одному человеку и refute-ит её на единственном неверном прогнозе и провалах гос-ИТ.
  • Участники подчёркивают, что «системы сопротивляются» — это не новость, а давно известная рефлексивность; Галл и другие классики сами описывали ограничения моделирования.
  • Популярные книги по системному мышлению уже включают эти ограничения; проблема не в методе, а в том, что большие бюрократии им пользуются плохо.
  • Настоящее поле шире: кибернетика, метакибернетика, модель жизнеспособных систем Бира, комплексность Киллиерса и др. — всё это в статье просто не упомянуто.
  • Вывод: текст — пример поверхностной журналистики; обществу нужно больше качественного системного анализа, а не его отрицание.

Recreating the US/* time zone situation (rachelbythebay.com)

by move-on-by • 13 сентября 2025 г. в 16:14 • 107 points

ОригиналHN

#timezone#tzdata#unix#debian

Комментарии (75)

  • Пользователи жалуются на путаницу в именах часовых поясов: устаревшие US/*, дубли EST/EDT, городские селекторы вместо простых смещений.
  • Корень проблемы — в файлах tzdata нет идентификатора зоны; если /etc/localtime не symlink, ПО вынуждено угадывать, выбирая короткое имя («US» вместо «America/…»).
  • Debian по-прежнему показывает пользователю привычные Eastern/Central, но уже маппит их на корректные America/*.
  • Предложения «хранить просто -8/-7» проваливаются: нужны история DST, исключения вроде Аризоны, будущие смены законов.
  • Вывод: единственное надёжное решение — использовать America/Phoenix, America/Los_Angeles и т. д., а не аббревиатуры или смещения.

“Learning how to Learn” will be next generation's most needed skill (techxplore.com)

  • Главный учёный Google, лауреат Нобелевки-2024 Демис Хассабис: ключевой навык будущего — «уметь учиться»; ИИ меняет мир еженедельно.
  • Через 10 лет возможен общий ИИ; нужны метанавыки и непрерывное обучение на всём жизненном пути.

by Brajeshwar • 13 сентября 2025 г. в 15:10 • 80 points

ОригиналHN

#artificial-intelligence#machine-learning#continuous-learning#metacognition

Комментарии (52)

  • Участники сходятся: «умей учиться» — ключевой навык, но школы и вузы его не преподают, а тренируют «сдать и забыть».
  • Нужны конкретные методы: retrieval-practice, метакогнитика, управление вниманием и эмоциями, а не лозунги.
  • Препятствия — credentialism, overworked учителя, LLM-списывание и страх нового у взрослых.
  • Решение: учить «как учиться» практикой, проектами, менторством и ранним доступом к научно-проверенным техникам.

486Tang – 486 on a credit-card-sized FPGA board (nand2mario.github.io)

486Tang — 486 на FPGA размером с банковскую карту.

Вчера выложил на GitHub 486Tang v0.1: порт ядра ao486 (MiSTer) на китайскую Tang Console 138K. Первый запуск x86 вне Altera.

Архитектура

  • SDRAM вместо DDR3: 16-бит, читаем по 32 бита за такт (2× частота).
  • IDE на SD: BIOS, VGA-BIOS, CMOS и IDENTIFY в первых 128 КБ карты; загрузчик FPGA читает их сам.
  • DDR3 отдана только фреймбуферу.

Отладка

  • Verilator: загрузка до DOS за минуту, полные вейвформы.
  • Bochs-BIOS пишет в порт 0x8888; вывод в терминал симулятора и UART.
  • Флаги --sound, --ide для быстрого трассирования подсистем.
  • 90 % багов — новый «клей»; пара сломалась из-за странного поведения синтезатора Gowin.

Производительность

Из коробки — 25 МГц 386-уровня.
Ускоряли:

  1. Разбили сеть сброса (5 000 фан-аут → репликация вручную).
  2. Укоротили путь выборки: в decoder_regs.v вынесли расчёт consume_count из критического пути, добавив регистр.
  3. Проверяли изменения тестом test386.asm.

Цель — 33 МГц 486DX2.

by bitbrewer • 13 сентября 2025 г. в 14:52 • 190 points

ОригиналHN

#fpga#verilator#ddr3#sdram#ide#verilog#x86#dos#gowin

Комментарии (51)

  • Проект реализует 486 на FPGA с DDR3-памятью; автор признаёт, что эпохе соответствовали бы FPM/EDO, но SDRAM проще синхронизировать.
  • Логики занято 44 %, BRAM — 59 %, место для периферии ещё есть.
  • «Живые» 486-совместимые чипы сейчас — Vortex86, устаревшие Quark, Eden; китайские «586»-SoC пока редки.
  • DDR3 имеет минимальную частоту, поэтому для ретро-проектов её приходится подстраивать, в отличие от старой SDRAM.
  • Сообщество мечтает о кредито-карточной плате в корпусе Amiga-600, способной запускать DOOM и, теоретически, HL1.

Four-year wedding crasher mystery solved (theguardian.com) 🔥 Горячее

Тайный гость на свадьбах Шотландии разгадан

Четыре года неизвестный мужчина в тёмном костюме появлялся на свадьбах в Шотландии, вызывая у гостей недоумение. Его фотографии облетели соцсети, но никто не мог понять, кто он и зачем приходит.

Выяснилось: это 65-летний Джон Смит — пенсионер из Глазго. Он признался, что ходит на чужие торжества ради бесплатной еды и атмосферы радости. «Я просто люблю свадьбы», — сказал он.

Теперь некоторые пары даже приглашают его официально.

by wallflower • 13 сентября 2025 г. в 14:52 • 327 points

ОригиналHN

#social-media#privacy

Комментарии (102)

  • Дядя героя пришёл пьян на свадьбу: перепутал и дату, и место, и уже дважды побывал на чужих праздниках.
  • В Индии и не только случайные гости на свадьбах — норма; в Европе тоже встречаются «крашеры».
  • Люди рассказали, как случайно попадали на похороны, крещения, конференции и даже занятия в университете, но стеснялись уйти.
  • Секрет невидимки: выглядеть как свой и, при необходимости, жилет «STEWARD» в кармане.

How Container Filesystem Works: Building a Docker-Like Container from Scratch (labs.iximiuz.com)

Как работает файловая система контейнеров: создание Docker-подобного контейнера с нуля

Одна из суперспособностей контейнеров — их изолированное представление файловой системы. Изнутри контейнера она может выглядеть как полноценный дистрибутив Linux, часто отличающийся от хостового. Запустите docker run nginx, и Nginx окажется в своём привычном пользовательском пространстве Debian независимо от того, какую версию Linux использует хост. Но как создаётся эта иллюзия?

В этой статье мы соберём небольшой, но реалистичный Docker-подобный контейнер, используя только стандартные инструменты Linux: unshare, mount и pivot_root. Без магии рантайма и (почти) без упрощений. По пути вы узнаете, почему пространство имён монтирования — это основа изоляции контейнеров, в то время как другие пространства имён, такие как PID, cgroup, UTS и даже сетевое, играют скорее вспомогательную роль.

К концу — особенно если совместить это с руководством по сетям контейнеров — вы сможете запускать полнофункциональные Docker-подобные контейнеры, используя только стандартные команды Linux. Это конечная цель каждого aspiring container guru.

Предварительные требования

  • Базовое знакомство с Docker (или Podman и подобными) контейнерами
  • Основные знания Linux (скрипты shell, общее понимание пространств имён)
  • Фундаментальные принципы файловых систем (единая иерархия каталогов, таблица монтирования, bind mount и т.д.)

Визуализация конечного результата

На диаграмме ниже показано, как выглядит изоляция файловой системы при создании Docker нового контейнера. Нормально, если рисунок кажется сложным. С помощью практических упражнений в этом руководстве мы построим комплексную ментальную модель работы контейнеров, так что когда мы вернёмся к диаграмме в заключительном разделе, она будет выглядеть гораздо понятнее.

Кликните для увеличения

Что именно изолирует Mount Namespace?

Проведём быстрый эксперимент. В Терминале 1 запустим новую сессию shell в собственном пространстве имён монтирования:

sudo unshare --mount bash

Теперь в Терминале 2 создадим файл где-нибудь в файловой системе хоста:

echo "Hello from host's mount namespace" | sudo tee /opt/marker.txt

Удивительно или нет, но при попытке найти этот файл в новом пространстве имён монтирования с помощью Терминала 1 он окажется там:

cat /opt/marker.txt

Так что же мы изолировали с помощью unshare --mount? 🤔

Ответ — таблицу монтирования. Вот как это проверить. Из Терминала 1 смонтируем что-нибудь:

sudo mount --bind /tmp /mnt

💡 Эта команда использует bind mount для простоты, но подойдёт и обычное монтирование (блочного устройства).

Теперь, если вывести содержимое папки /mnt в Терминале 1, должны отобразиться файлы из /tmp:

ls -l /mnt

Но в то же время папка /mnt осталась пустой в пространстве имён монтирования хоста. Если запустить ту же команду ls из Терминала 2, файлов не будет:

ls -lah /mnt

Наконец, «представления» файловой системы начали расходиться между пространствами имён. Однако мы смогли достичь этого только создав новую точку монтирования.

Пространства имён монтирования, визуализировано

Из man страницы mount namespace:

Пространства имён монтирования обеспечивают изоляцию списка монтирований, видимых процессами в каждом экземпляре пространства имён. Таким образом, процессы в каждом из экземпляров пространства имён монтирования будут видеть distinct single directory hierarchies.

Сравните таблицы монтирования, запустив findmnt из Терминала 1 и Терминала 2:

Пространство имён хоста
Новое пространство имён

by lgunsch • 13 сентября 2025 г. в 14:37 • 160 points

ОригиналHN

#docker

Комментарии (27)

  • Обсуждаются технологические предшественники и аналоги Docker, такие как chroot (1979), FreeBSD jails (~2000) и Solaris Containers/Zones.
  • Подчеркивается, что Docker — это не только chroot, но и комбинация технологий: пространства имён Linux, overlay FS, OCI registry и идея неизменяемых образов.
  • Отмечается гениальность и кажущаяся очевидность идеи Docker в ретроспективе, а также его роль в создании критической массы и упрощённых workflow.
  • Указывается на значительно более слабую изоляцию chroot по сравнению с пространствами имён Linux, которые использует Docker.
  • Упоминается существование минималистичных реализаций концепций Docker, например, «Bocker» — на bash в 100 строк кода.
  • Обсуждается история использования многослойных файловых систем (например, для записи CD/DVD) как одна из основ технологий контейнеризации.
  • Приводится пример смелого публичного выступления, связанного с внутренним устройством Docker.