Safe C++ proposal is not being continued
Safe C++ больше не развивается.
Год назад появился черновик, обещавший «ржавую» безопасность без ломки старого кода: память, типы, потоки — всё через явный safe-контекст. Комитету идея не зашла: модель Rust назвали чуждой, голоса отдали Profiles — набору ограничений на уже существующий C++, которые на этапе компиляции блокируют UAF, data-race, deadlock, утечки.
Profiles не добавляют синтаксиса, только запрещают опасные паттерны; включаются опцией, обратно совместимы. Safe C++ требовал новых квалификаторов и заимствовал проверки времени жизни — слишком радикально.
Автор Safe C++, Шон Бакстер, признал:
Дальнейшая работа бесполезна; все силы — в Profiles.
Вывод: Profiles слабее, но реалистичнее; ждём их в C++26.
Комментарии (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 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (245)
- Участники обсуждения сходятся в том, что алгоритмические ленты, максимизирующие вовлечение, превращают соцсети в машины поляризации и зависимости.
- Повторяющийся аргумент: «если бы не Facebook/Twitter, люди всё равно нашли бы способ сраться» — отвергается опытом тех, кто ушёл и почувствовал немедленное улучшение психики.
- Главный страх — не просто потеря времени, а то, что наши мысли формируются узким кругом платформ, которым выгодно злить или пугать.
- Предлагаемые «лекарства» звучат жёстко: запретить монетизацию политики, рекламу по данным, разрешать только хронологическую ленту, или вовсе блокировать доступ до 15-16 лет.
- Многие признают: уйти трудно, потому что соцсети одновременно заменили СМИ, клубы, знакомства и даже политические партии; отказаться — значит выйти из публичной жизни.
RIP pthread_cancel
curl 8.16.0 внедрил pthread_cancel, чтобы прерывать зависший getaddrinfo, но уже в следующем релизе функцию убирают: отмена потока приводит к утечке памяти.
glibc сначала резолвит имя, выделяя память, затем читает /etc/gai.conf, где встречается fopen — точка отмены. Если поток прервать на этом шаге, выделенные адреса не освобождаются, и утечка повторяется при каждом новом вызове.
Поскольку других «опасных» точек может быть ещё больше, а библиотека не гарантирует чистоту ресурсов, pthread_cancel признан неприемлемым. Возвращаемся к старому выбору: либо ждать pthread_join, либо пускать потоки «в свободное плавание» и накапливать их.
Кто не хочет тормозов — подключает c-ares, но тот не покрывает всех возможностей glibc.
Комментарии (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 🔥 Горячее
Краткий русский пересказ утечки Geedge & MESA
- 11 сентября 2025 года утекло ≈600 ГБ внутренних данных «Великого китайского файрвола» (GFW): исходники, логи, переписка.
- Источник — компания Geedge Networks (главный учёный — «отец GFW» Фан Бинсин) и лаборатория MESA при Институте информатики АН Китая.
- Документы показывают: разработка и эксплуатация систем фильтрации для Синьцзяна, Цзянсу, Фуцзяня; экспорт цензуры в Мьянму, Пакистан, Эфиопию, Казахстан и другие страны «Пояса и пути».
- Архивы: 500 ГБ RPM-репозиторий, 35 ГБ Git MESA, 15 ГБ Jira Geedge, десятки документов Word о тендерах, графиках, отчётах.
- Зеркала: BitTorrent и HTTPS на EnlaceHacktivista.
- Рекомендация: разбирать только в изолированной виртуалке — возможны следящие модули и вредоносное ПО.
Комментарии (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 🔥 Горячее
Магическое системное мышление
Сокращённый перевод
Системное мышление обещает инструменты для проектирования сложных систем с нуля, но игнорирует главное: системы сопротивляются.
Все ключевые инфраструктуры — водоснабжение, интернет, логистика — начинались с простых рабочих прототипов. Первую электросеть в 1881 году собрали из лампочек и водяного колеса в английском городке; дальше её доводили десятилетия проб и ошибок. Никто не рисовал финальную схему заранее.
Современным правительствам нравится другая история: «проанализируем — и система подчинится». На деле они проигрывают.
- США: запуск HealthCare.gov завис из-за сбоев, миллионы не смогли застраховаться.
- Австралия: реформа поддержки инвалидов, спланированная 10 лет, раздула расходы до размера пенсионного бюджета.
- Великобритания: механизм Contracts for Difference для ускорения «зелёной» энергетики превратился в 15-летнюю очередь подключений.
Инструменты стали мощнее, но системы всё чаще «отбиваются».
Альтернатива
С XIX века химики и инженеры предупреждали: сложные системы — не пассивные игрушки. Сломалась — починить может быть невозможно. Успех приходит только через маленькие рабочие прототипы и постепенное масштабирование.
Урок
Чем дальше системы уходят из-под контроля, тем важнее возвращаться к простым, проверенным решениям.
Комментарии (80)
- Критикуют саму статью: автор не даёт чёткого определения «системному мышлению», сводит всю дисциплину к одному человеку и refute-ит её на единственном неверном прогнозе и провалах гос-ИТ.
- Участники подчёркивают, что «системы сопротивляются» — это не новость, а давно известная рефлексивность; Галл и другие классики сами описывали ограничения моделирования.
- Популярные книги по системному мышлению уже включают эти ограничения; проблема не в методе, а в том, что большие бюрократии им пользуются плохо.
- Настоящее поле шире: кибернетика, метакибернетика, модель жизнеспособных систем Бира, комплексность Киллиерса и др. — всё это в статье просто не упомянуто.
- Вывод: текст — пример поверхностной журналистики; обществу нужно больше качественного системного анализа, а не его отрицание.
Комментарии (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
- Главный учёный Google, лауреат Нобелевки-2024 Демис Хассабис: ключевой навык будущего — «уметь учиться»; ИИ меняет мир еженедельно.
- Через 10 лет возможен общий ИИ; нужны метанавыки и непрерывное обучение на всём жизненном пути.
Комментарии (52)
- Участники сходятся: «умей учиться» — ключевой навык, но школы и вузы его не преподают, а тренируют «сдать и забыть».
- Нужны конкретные методы: retrieval-practice, метакогнитика, управление вниманием и эмоциями, а не лозунги.
- Препятствия — credentialism, overworked учителя, LLM-списывание и страх нового у взрослых.
- Решение: учить «как учиться» практикой, проектами, менторством и ранним доступом к научно-проверенным техникам.
486Tang – 486 on a credit-card-sized FPGA board
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-уровня.
Ускоряли:
- Разбили сеть сброса (5 000 фан-аут → репликация вручную).
- Укоротили путь выборки: в
decoder_regs.vвынесли расчётconsume_countиз критического пути, добавив регистр. - Проверяли изменения тестом test386.asm.
Цель — 33 МГц 486DX2.
Комментарии (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 🔥 Горячее
Тайный гость на свадьбах Шотландии разгадан
Четыре года неизвестный мужчина в тёмном костюме появлялся на свадьбах в Шотландии, вызывая у гостей недоумение. Его фотографии облетели соцсети, но никто не мог понять, кто он и зачем приходит.
Выяснилось: это 65-летний Джон Смит — пенсионер из Глазго. Он признался, что ходит на чужие торжества ради бесплатной еды и атмосферы радости. «Я просто люблю свадьбы», — сказал он.
Теперь некоторые пары даже приглашают его официально.
Комментарии (102)
- Дядя героя пришёл пьян на свадьбу: перепутал и дату, и место, и уже дважды побывал на чужих праздниках.
- В Индии и не только случайные гости на свадьбах — норма; в Европе тоже встречаются «крашеры».
- Люди рассказали, как случайно попадали на похороны, крещения, конференции и даже занятия в университете, но стеснялись уйти.
- Секрет невидимки: выглядеть как свой и, при необходимости, жилет «STEWARD» в кармане.
How Container Filesystem Works: Building a Docker-Like Container from Scratch
Как работает файловая система контейнеров: создание 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:
Пространство имён хоста
Новое пространство имён
Комментарии (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.