The state of SIMD in Rust in 2025
В 2025 году SIMD в Rust продолжает развиваться, предлагая значительный прирост производительности до 64x для операций с u8 на современных процессорах. Основная проблема - фрагментация наборов инструкций: ARM использует обязательный NEON (128 бит), WebAssembly - 128-bit packed SIMD, а x86 имеет сложную иерархию от SSE2 до AVX-512 (512 бит). Для x86 разработчики выбирают между указанием target-cpu (например, x86-64-v3) и использованием function multiversioning для поддержки различных процессоров.
В Rust существует четыре подхода к SIMD: автоматическая векторизация (самый простой), продвинутые итераторы, портируемые абстракции и сырые интринсики. В то время как ARM стандартизировал NEON, а WebAssembly требует компиляции двух бинарных файлов, x86 остается самой сложной платформой из-за множества расширений и необходимости обеспечения обратной совместимости.
Комментарии (128)
- Обсуждение показало, что Rust пока не может предложить стабильный и удобный способ работы с SIMD, в отличие от C# и C++.
- Основная причина —
std::simdвсё ещё в nightly, а стабильная альтернатива отсутствует. - Участники также отметили, что даже в ночной ветке API нестабилен и может измениться, что делает его использование в production-окружениях проблематичным.
- Некоторые участники выразили обеспокоенность тем, что отсутствие стабильной SIMD-поддержки может отпугнуть потенциальных пользователей Rust, особенно в областях, где эффективное использование SIMD критично.
- В то же время, другие участники подчеркнули, что Rust всё ещё молодой язык и что сообщество может в конце концов решить эту проблему, как это было с другими функциями в прошлом.
Backpropagation is a leaky abstraction (2016) 🔥 Горячее
Карпати утверждает, что понимание обратного распространения ошибки (backprop) критически важно, несмотря на автоматизацию в фреймворках вроде TensorFlow. Он называет backprop "утечкой абстракции" — опасно верить, что просто соединяя слои, можно "магически" обучить сеть. Студенты курса CS231n жаловались на ручную реализацию backprop в numpy, но Карпати настаивает: без понимания математики невозможно диагностировать проблемы обучения.
Яркий пример — сигмоидные функции. При плохой инициализации весов сигмоиды "насыщаются" (выходы близки к 0 или 1), делая локальный градиент z*(1-z) равным нулю. Это полностью останавливает обучение. Даже при нормальных условиях градиент сигмоиды не превышает 0.25 (при z=0.5), что означает его 4-кратное ослабление при каждом проходе. Для сетей с сигмоидами нижние слои учатся значительно медленнее верхних.
Комментарии (131)
- Обсуждение вращается вокруг статьи Карпати "Yes, you should understand backprop" и его тезиса о том, что понимание backprop важно, даже если вы никогда не будете писать его вручную.
- Участники спора сомневаются в ценности этого подхода, указывая на то, что современные фреймворки и высокоуровневые абстракции делают знание деталей неактуальным.
- Некоторые участники подчеркивают, что даже если вы не будете реализовывать backprop вручную, понимание принципов работы оптимизаторов и функций активации важно для отладки и проектирования моделей.
- Обсуждение также затрагивает вопрос о том, насколько важно понимать детали, когда вы пользуетесь высокоуровневыми инструментами, и какие уровни абстракции считаются приемлемыми.
- В конце концов, спор сводится к тому, что хотя фундаментальное понимание важно, но не стоит забывать, что большинство практических задач будут решаться с помощью высокоуровневых инструментов и фреймворков.
A years-long Turkish alphabet bug in the Kotlin compiler
В Kotlin-компиляторе скрыта ошибка, срабатывающая при сборке проекта в турецкой локали. Из-за неё при попытке скомпилировать код в турецкой локали возникает ошибка парсинга XML от компилятора: строчка var category: CompilerMessageSeverity? = CATEGORIES[qName.toLowerCase()] в функции CompilerOutputParser некорректно обрабатывает турецкий символ I (U+0049), который при приведении к нижнему регистру становится не i (U+0069), а ı (U+0131) — точкой надстрочного i без точки. Из-за этого ключ i не находится в словаре CATEGORIES, и код ошибочно считает, что это неизвестный тег, и выдаёт сообщение об ошибке.
Ошибка скрывалась в коде с 2016 по 2021 год, пока не была обнаружена и исправлена. Теперь код корректно использует локально-независимый toLowerCase(Locale.ROOT), и проблема решена. Это яркий пример того, как тонкости локализации могут вызывать ошибки в интернационализированном ПО, особенно при обработке текста.
Комментарии (145)
- Проблема "турецкое I" встречается везде, где не указывается локаль при работе со строками, и это приводит к багам, когда вместо "I" в турецкой локали превращается в "ı" (без точки) и наоборот.
- Современные языки и фреймворки должны предоставлять единообразные и предсказуемые API, но вместо этого они вынуждают разработчиков указывать локаль каждый раз, что приводит к ошибкам.
- Пользователи с турецкой локалью страдают от багов, которые не могут быть обнаружены автоматически, потому что большинство разработчиков тестируют только на английской локали.
- Это также является примером более широкой проблемы: API-функции, которые не принимают
Localeпараметр, вместо этого полагаясь на дефолтной локали, что может привести к ошибкам.
Meta-analysis of 2.2M people: Loneliness increases mortality risk by 32% 🔥 Горячее
Хроническое одиночество повышает риск смертности на 32% и деменции на 31%, что сопоставимо с курением или ожирением. Исследования с участием 2,2 млн человек показывают, что оно запускает биологические механизмы — хроническое воспаление, дисфункцию иммунной системы и эпигенетические изменения, — которые физически разрушают организм.
Эффективные решения существуют: комбинация когнитивно-поведенческой терапии, осознанности и общественных программ сокращает одиночество на 48% всего за полгода. Структурные программы осознанности снижают ежедневное чувство изоляции на 22%, а социальные инициативы вроде британского социального назначения уже охватили 9,4 млн визитов к врачам. Каждый вложенный фунт приносит £3,42 экономии на здравоохранении, доказывая, что эпидемия одиночества не только изучена, но и излечима.
Комментарии (147)
- Участники обсуждают корреляцию между одиночеством и повышенным риском смертности, указывая на возможную обратную причинно-следственную связь (плохое здоровье ведет к изоляции).
- Поднимаются практические аспекты одиночества: отсутствие помощи при чрезвычайной ситуации, самоизоляция из-за болезней и негативного опыта общения.
- Предлагаются решения: создание межпоколенческих сообществ, волонтерские программы (например, Cycling Without Age) и необходимость структурных изменений в обществе.
- Высказывается скептицизм относительно некоторых предлагаемых решений (например, осознанность) и качества исследований, упомянутых в исходной статье.
- Обсуждается разница между социальной изоляцией (объективное отсутствие контактов) и чувством одиночества (субъективное переживание).
Weaponizing Ads: How Google and Facebook Ads Are Used to Wage Propaganda Wars
Государства превратили Google и Facebook в оружие пропаганды.
В конце 2024 г. глава агентства ООН по помощи Газе обнаружил: поиск «UNRWA» в Google выдаёт на первом месте платное объявление Израиля, копирующее сайт ООН, но ведущее на правительственную страницу с обвинениями в поддержке терроризма. Комиссар Филипп Лазарини назвал это «информационным оружием» и потребовал регулирования.
Как работает схема
- Рекламные кабинеты Google и Meta позволяют точно таргетировать аудиторию по ключевым словам, геолокации, интересам и демографии.
- В отличие от обычных постов, реклама гарантированно показывается миллионам, если кто-то платит.
- Платформы запрещают дезинформацию и «опасный контент», но правила обходятся: ключи пишутся с ошибками, лендинги маскируются под СМИ, а «политическим» считается только объявление, поданное внутри страны.
Кейсы
- Израиль – Газа 2024: десятки поисковых объявлений дискредитируют UNRWA, Human Rights Watch и Bellingcat; CTR до 18 %, бюджеты – сотни тысяч долларов.
- Россия – 2016 и далее: фабрика троллей покупает рекламу на Facebook, YouTube и Google, раскалывая американских избирателей по расовым и оружейным темам.
- Филиппины – 2022: дезинформация против журналистов Рапплер финансировалась государственным фондом; объявления показывались только жителям Манилы.
- США – 2020: кампания Трампа и республиканцев запускает «Stop the Steal»-рекламу до и после выборов, обходя собственные же запреты Facebook на «преждевременные итоги».
Почему пропускают
- Деньги: политика и кризисы – высокооплачиваемые темы.
- Масштаб: 8 млн активных рекламодателей в Google, 10 млн в Meta; модерация – автоматическая + аутсорс.
- Юрисдикция: законы о «политической» рекламе действуют внутри стран, а кампании часто запускаются из-за рубежа.
- Прозрачность: библиотеки объявлений не показывают таргетинг и бюджеты в реальном времени.
Последствия
- Подрыв доверия к независимым организациям и СМИ.
- Рост насилия и поляризации на местах.
- Искажение исторической памяти: поиск «Холокост» уже выдаёт рекламу отрицающих.
Что делать
- Платформы: расширить категорию «политика» до любого государственного заказчика; показывать полный таргет и бюджет; вводить «кулдаун» перед публикацией спорных объявлений.
- Регуляторы: требовать предварительного уведомления о крупных кампаниях (>50 тыс. долл.), как это сделано для ТВ.
- Пользователи: ставить блокировщики рекламы, проверять лендинги через WHOIS, жаловаться на заведомо ложные объявления.
Итог
Пока рекламные алгоритмы остаются прибыльной «серой зоной», поиск и соцсети будут продолжать превращаться в поле боя, где побеждает тот, кто заплатит больше.
Комментарии (111)
- Участники обсуждают, как Google и Meta становятся каналами для государственной пропаганды, включая Израиль и Венгрию, и почему это опасно.
- Одни считают, что реклама = пропаганда, платформы не несут ответственности, а значит — блокируй всё.
- Другие предлагают регулировать платформы, но опасаются, что следующий авторитарный лидер возьмёт рычаги в свои руки.
- Третьи напоминают: корпорации просто идут туда, где деньги и власть, независимо от «прогрессивных» лозунгов.
Do things that don't scale, and then don't scale 🔥 Горячее 💬 Длинная дискуссия
- Старая мантра: «Делай то, что не масштабируется». Раньше это был первый шаг к будущему росту.
- Новая реальность: с GPT и Cursor вы просто останавливаетесь на первом шаге. Проект, который раньше занимал выходные, теперь собирается за вечер. Если он решает задачу для меня и пары друзей — уже успех.
Маленький Slack
Сто человек, 15–20 активных в неделю. Все знают друг друга в лицо, делятся тем, что не выложишь в паблик. Добавить ещё 900 — и интимность исчезнет. Рост ухудшит продукт.
PostcardMailer
Первый вариант: пост в Instagram → автопочтовая открытка маме. API убили, сделал загрузку вручную. Появились спам и Tor — закрыл регистрацию. Heroku устарел — переписал на e-mail:
фото → mom@postcardmailer.us, подпись в теме. Никаких сайтов, паролей, публичного доступа.
Landline-напоминалка
Мама без смартфона, только стационарный. Скрипт на Twilio звонит трижды в день: «Время таблеток», через 10 минут — «Точно приняли?». Стоит копейки, написано за вечер. Масштабировать — значит влезать в чужие семьи и суды. Версия «только для мамы» — идеальна.
Формула
- Заметить свою боль.
- Собрать минимальное решение.
- Оставить его маленьким.
Комментарии (185)
- Участники обсуждают, что делать «вещи, которые не масштабируются», стало проще и приятнее благодаря ИИ-ассистентам: они ускоряют прототипирование и снижают порог входа.
- Однако многие отмечают: такие pet-проекты существовали и до LLM; настоящая ценность ИИ — в преодолении «белого листа» и экономии времени, а не в изобретении самого подхода.
- Тезис «не обязано масштабироваться» применим не только к хобби, но и к компаниям: можно быть прибыльным «Small Giant» вместо гонки за «хоккейной клюшкой».
- Массовый рост часто убивает атмосферу и узнаваемость сообщества, поэтому «остаться малым» — осознанный выбор.
- Итог: ИИ дал миллионам возможность быстро готовить «home-cooked apps» для себя и узкого круга, не ставя задачи покорить рынок.
MCP overlooks hard-won lessons from distributed systems 🔥 Горячее 💬 Длинная дискуссия
MCP игнорирует 40 лет опыта RPC и обрекает компании на сбои
Проблема
Model Context Protocol (MCP) позиционируется как «USB-C для ИИ», но жертвует надежностью ради простоты. Компании внедряют его в продакшен, не осознавая, что в основе лежит архитектура без базовых механизмов, которые считаются обязательными в RPC-системах с 1982 г.
4 пропущенных урока
-
Типы данных
UNIX RPC (1982) ввёл XDR и IDL, чтобы 32-битное целое не превратилось в мусор на другой архитектуре. MCP использует схематичный JSON: проверка типов происходит в рантайме, если вообще происходит. В результате ИИ-трейдер может ошибиться в десятичном разряде, а медицинский ассистент — перепутать дозировку. -
Кросс-языковая совместимость
CORBA (1991) генерировала привязки под C++, Java, Python и т. д., гарантируя, что исключение на сервере корректно обработается клиентом. MCP оставляет реализацию на усмотрение каждого языка: Python и JavaScript по-разному кодируют Unicode и float, что ведёт к тихим ошибкам интеграции. -
Безопасность и версионирование
gRPC и SOAP научились:- TLS/mTLS по умолчанию
- строгая обратная совместимость через IDL
- единое управление ошибками и таймаутами
MCP не требует шифрования, не описывает, как менять контракт, и не стандартизирует retry-логику. Каждый инструмент решает сам, как сообщать об ошибке.
-
Масштабирование и наблюдаемость
Современные RPC-фреймворки включают распределённый трейсинг, rate-limiting, circuit breaker. MCP не предоставляет ни метрик, ни механизмов отказоустойчивости. При миллионах вызовов в день компании получают «чёрный ящик», который нельзя отладить и который падает при первой же нагрузке.
Итог
Простота MCP полезна для прототипов, но в продакшене превращается в долговременный техдолг. Пока MCP не добавит IDL, строгие типы, безопасность и наблюдаемость, внедрять его в критичных системах — значит повторять ошибки, которые отрасль исправляла последние 40 лет.
Комментарии (186)
- Критики считают MCP «USB-C для ИИ»: универсальным, но с расплывчатыми стандартами и слабой типизацией.
- Сторонники отвечают: именно минимализм JSON-over-HTTP обеспечил быструю массовую adoption, в отличие от громоздких SOAP/CORBA.
- Спор о схемах: MCP поддерживает JSON Schema, но валидация не обязательна, поэтому ошибки типов всплывают только в рантайме.
- Поднимаются темы безопасности и трейсинга: нет встроенного аудита вызовов и расходов, что критично для enterprise.
- Общий вывод: MCP сейчас «хорошо достаточно» для веба, но для регулируемых или высоконагруженных сред потребуется или доработка, или новая спецификация.