Практикующие разработчики на C++ из ведущих компаний поделятся своими знаниями, представят прикладные доклады и расскажут о реальных кейсах, подкреплённых метриками.
Конференция пройдёт в двух странах и трёх городах: офлайн и онлайн в Москве и Белграде, а в Санкт‑Петербурге будет только офлайн‑программа с активностями.
Современные тулчейны предлагают множество средств для поиска ошибок на фазе QA (различные санитайзеры, фаззинг, property-based-тестирование и т. п.). Но для критического программного обеспечения защита от UB требуется и в проде. Такая защита (т. н. hardening) должна быть достаточно полной, чтобы предотвращать наиболее частые уязвимости, и достаточно дешёвой, чтобы не влиять заметно на производительность. В докладе расскажем о средствах hardening, предоставляемых современными тулчейнами (ASLR, проверки Glibc и STL и т. д.), и их влиянии на развитие языка C++.
Perforator — система непрерывного профилирования (continuous profiling), которую мы используем внутри Яндекса для анализа производительности большинства сервисов. Исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes выложена в опенсорс. На воркшопе покажем как работает эта система и как можно её попробовать локально или развернуть у себя. Разберём как вообще можно анализировать исполнение программ с помощью профилировщиков. Обсудим базовое объяснение работы сэмплирующих профилировщиков, расскажем немножко про то, что мы умеем мониторить: циклы CPU, реальное время — wall time и прочее
А ещё поговорим про:
И разыграем настоящий перфоратор среди участников 🙂
Вход свободный, записываться заранее не нужно
Коротенький рассказ про сериализацию JSON вдогонку к прошлогоднему докладу про экранирование строк. Очень быстро пройдёмся по экранированию строк как запчасти сериализации, и зачем там валидация UTF-8 (вспомним про продолб и драму вокруг экранирования строк в PostgreSQL).
Посмотрим на сериализацию в JSON и коснёмся:
Вход свободный, записываться заранее не нужно
userver — open source фреймворк, разрабатываемый в Техплатформе Городских сервисов Яндекса, который позволяет быстро создавать эффективные микросервисы на языке C++. На вайбкодинге мы будем решать задачки на userver вместе с AI-ассистентами и посмотрим, как они работают с C++.
Как C++ проекты подключали внешние библиотеки раньше — и как делают это сейчас. Разберём системные зависимости через pkg-config, магию find_package () в CMake и директиву dependency () в Meson. Посмотрим, как conan и vcpkg меняют подход к сборке, и заглянем в будущее: CPS как новый стандарт для кросс-языковых зависимостей.
Записаться можно будет на стойке регистрации и в зоне Городских сервисов
В интерактивном формате решим практические задачи из опыта Городских сервисов Яндекса. Разделимся на команды и вместе с модераторами будем решать кейс по повышению доступности микросервисного приложения. Подойдёт тем, кто интересуется SRE и устойчивостью сервисов и хочет делать стабильные надёжные приложения.
На дворе 2025-й: Clang 20, GCC 15, LLM в каждом тостере — а в проде всё ещё CentOS 6. Автовекторизация стала заметно умнее, но можно ли уже полностью положиться на компилятор? Спойлер: не всегда. В докладе — живые примеры, где векторизация действительно работает отлично, а где не очень и где приходится писать руками (включая HNSW, scalar quantization и даже sgemm() на ассемблере). А ещё — про dynamic dispatch, AVX-512, Facebook, BLIS, stdlib, function pointer и немного OpenMP.
Ответ на главный вопрос будет, но не однозначный.
В менеджере памяти TCMalloc (том, который absel tcmalloc, а не часть perftools) появилась новая фича, позволяющая ускорить работу с выделенной памятью: хинты hot_cold для new/malloc. Разберёмся, почему это появилось, как связано с LLVM MemProf, как реализовано в TCMalloc, как это работает и не работает, какое и за счёт чего может дать ускорение и можно ли применить фичу без TCMalloc.
В последнее время лёгкие потоки приобрели значительную популярность в C++. Их реализации представлены во множестве библиотек. Выделяющимся представителями можно считать такие проекты, как Userver, Argobots и Boost: fibers. Однако использование традиционных примитивов параллелизма, таких как мьютексы или блокировки, с этим видом потоков может создавать проблемы.
Рассмотрим сценарий работы простой реализации мьютекса, использующей активное ожидание, например, Test-And-Set. Поток, завладевший такой блокировкой, может приостановиться и передать управление планировщику, находясь в критической секции. При этом все активные в данный момент лёгкие потоки могут попытаться получить блокировку, не приостанавливая себя. В результате, такое поведение может привести к взаимной блокировке, поскольку активные потоки никогда не смогут получить блокировку, а приостановленный поток не сможет её освободить.
Из-за описанных проблем существующие реализации блокировок необходимо обновить для корректной работы в средах с лёгкими потоками. В этом докладе мы рассмотрим различные подходы к преобразованию современных блокировок. Покажем как удалось реализовать общий интерфейс, позволяющий использовать одни и те же примитивы совместно с различными библиотеками лёгких потоков. Чтобы продемонстрировать универсальность нашего подхода, мы представим эксперименты с использованием трёх библиотек: Userver, Argobots и Boost: fibers.
Записаться можно будет на стойке регистрации
В интерактивном формате решим практические задачи из опыта Городских сервисов Яндекса. Разделимся на команды и вместе с модераторами будем решать кейс по повышению доступности микросервисного приложения. Подойдёт тем, кто интересуется SRE и устойчивостью сервисов и хочет делать стабильные надёжные приложения.
Даже в простой математике есть красивые идеи. А в C++ всегда были и будут шаблоны, которые являются сложным самостоятельным подъязыком C++. Совместим приятное с полезным и попробуем решить спектр математических задач в общем виде на компиляции!
Поговорим о том, с какими проблемами разработчики сталкиваются, когда пишут конкурентные структуры данных, и как значительно облегчить боль от проверки и отладки конкурентного кода. Представим инструмент, используемый в команде баз данных VK для проверки конкурентного кода, и расскажем, какие идеи и алгоритмы позволяют ему работать.
Любит C++ и умеет его готовить. В зоне интересов — метапрограммирование, многопоточное и асинхронное программирование. Энтузиаст распространения корутин.
Председатель Российской рабочей группы по стандартизации С++. Разрабатывает и поддерживает стандартную библиотеку GCC, библиотеки Boost. Автор Boost-библиотек PFR, TypeIndex, DLL, StackTrace и активный maintainer Any, Conversion, LexicalCast, Variant.
Автор книги Boost C++ Application Development Cookbook.
Любит C++, большие ациклические графы и прятать мьютексы от бизнес-логики в многопоточном коде.
Строит сообщества, организовывает мероприятия и работает со спикерами.