Заходят как-то в лофт разработчик на С++, доктор математических наук и инженер-программист Linux kernel — и вместо шутки начинается System Level Meetup. 24 мая в Санкт-Петербурге соберутся те, кто пишет код на уровне железа, оптимизирует ядро Linux и проектирует архитектуру сложных систем. Два трека — C++ и Linux kernel, десятки докладов, живое общение, стенды, квесты и железо от YADRO. Регистрируйтесь и подключайтесь — онлайн или офлайн.
Что в программе
System Level Meetup разделен на два параллельных трека: C++ и С/Linux kernel.
Направление C++
Девиртуализация в C++, компиляторах и вашей программе

Константин Владимиров
Руководитель отдела компиляторов и инструментов разработки в Syntacore

Илья Андреев
Старший инженер в отделе компиляторов и средств разработки в Syntacore
Обсудим виртуальные функции: с какими проблемами они связаны, как компиляторы их решают, что такое спекулятивная девиртуализация, почему она иногда не работает и что с этим делать разработчику.
Кодек для JSON'ов с фиксированной схемой

Никита Пешаков
Инженер-программист в YADRO
Поговорим о том, как мы строили свою систему сериализации и десериализации JSON для проекта на C++. Покажем архитектуру нашего JSON-кодека на примерах: от структур данных до encoder'а, decoder'а и аллокатора. Расскажем, как справились с громоздкими описаниями с помощью автогенерации. Сравним наше решение с simdjson, rapidjson, yyjson и nlohmann. В завершение — о текущих ограничениях и планах по развитию инструмента.
Дискуссия: как писать меньше на C++?

Константин Владимиров
Руководитель отдела компиляторов и инструментов разработки в Syntacore

Илья Казаков
Разработчик в команде систем хранения данных в YADRO

Алексей Щербаков
Старший разработчик и тимлид в МойОфис

Василий Рамаданов
Инженер-программист в YADRO
C++ — мощный инструмент, но всегда ли он нужен? Обсудим случаи, когда проще и выгоднее отказаться от «плюсов» в пользу других языков. Например, писать REST-интерфейс на Python, а С++ оставить только для тяжелых вычислений. Современные языки легко интегрируются с C/C++, и это открывает новые подходы к архитектуре.
Реализация динамического полиморфизма для свободных функций

Кирилл Колодяжный
Инженер-программист в YADRO
Расскажу об одном из способов реализации динамического полиморфизма для свободных функций — когда одна сигнатура вызывает разные реализации в зависимости от аргументов. В ООП это делают через виртуальные методы, но я покажу, как автоматизировать подобный подход в процедурном стиле, используя аналог таблицы виртуальных вызовов. Также затрону тему составных ключей и техники type-erasure для упаковки функций. Такой подход применяется, например, в системах машинного обучения. Он позволяет писать универсальный код для тензорных вычислений, который работает на разных устройствах и в различных сценариях без изменений.
Шаблонное метапрограммирование в современном C++ для космической баллистики

Леонид Меркин
Прикладной математик, Computer Scientist и C++ инженер (доктор математических наук, TU Delft, The Netherlands, 1997)
Поговорим о том, как современные стандарты C++ (11–23) и развитые системы типов повышают надежность и устойчивость IT-решений в российской аэрокосмической отрасли.
Я покажу open source-библиотеки, разработанные для этой цели:
SpaceBallistics — type-safe-модели динамики ракет и космических аппаратов, а также инструменты для проектирования и оптимизации траекторий.
DimTypes — система размерных типов на основе compile-time Z_p-арифметики.
C++ внутри PostgreSQL: удобство против традиций

Илья Шишков
R&D-разработчик в СУБД Pangolin в Сбертех
В работе над СУБД Pangolin на базе PostgreSQL я решил аккуратно внедрить C++ в строго C-шную кодовую базу. Цель — упростить управление ресурсами и сделать код более понятным. Мне удалось найти баланс между философией PostgreSQL и выразительностью C++.
В докладе я расскажу, где C++ действительно помог, как мы решали вопросы совместимости и как избежать ошибок в проекте с миллионами строк на C. Покажу фрагменты кода «до» и «после», а также разберу проблемы, которые могут у вас возникнуть.
Направление C/Linux kernel
Реализация поддержки Sdtrig в RISC-V Linux и OpenSBI

Илья Мамай
Инженер-программист в Syntacore
В докладе я расскажу, как мы добавили поддержку Hardware Breakpoint в OpenSBI и ядро Linux. Объясню, как работает подсистема Hardware Breakpoint (расширение Sdtrig) и как мы реализовали ее интерфейс на Linux. Сравню наш подход с реализациями на x86 и arm64.
Затем разберу плюсы и минусы подхода для RISC-V: какие проблемы создает гибкость его спецификаций и как мы с ними справились. Где получилось изящно, а где пришлось применить костыли.
Linux kernel, DPDK и kernel bypass

Степан Репин
Ведущий программист в ИнфоТеКС
Kernel bypass и user space I/O — ключевые технологии для высокопроизводительных сетевых решений. Мы разберем, как они устроены в Linux и как работают на практике, используя DPDK в качестве примера.
Рассмотрим основные компоненты DPDK: управление памятью, взаимодействие с драйверами и обработку пакетов. Покажу, как kernel bypass интегрируется с Linux-инфраструктурой и применяется в реальных задачах — например, в генераторе-анализаторе трафика LR100Gen от компании ИнфоТеКС.
В результате вы получите цельное представление о том, как kernel bypass работает в рамках Linux и какие преимущества дает в современных сетевых системах.
Дискуссия: эволюция ядра Linux

Владимир Исаев
Ведущий инженер-программист в Syntacore

Владислав Шиповский
Тимлид команды системного ПО в Сбере

Ярослав Бесараб
Руководитель отдела в TATLIN.FLEX в YADRO
Как меняется ядро Linux — не в теории, а на практике? Мы разберем, что нового появилось за последние годы, какие технологии приходят в системную разработку сегодня и с какими вызовами сталкиваются инженеры.
Обсудим ключевые фичи, свежие подходы к производительности, безопасности и архитектуре и посмотрим, как все это адаптируется под современные нагрузки и требования.
DMA из Userspace на Zynq US+

Данил Ефимов
Инженер-программист в YADRO
Поговорим о том, как можно собирать AXI-Stream-данные для обработки на CPU. В центре внимания — блок AXI DMA: разберем его возможности, ограничения и реальные требования.
Попробуем себя в роли аппаратного дизайнера: поработаем с кэш-когерентностью, разберемся с hw/sw, HP/HPC/LPD портами в Zynq и выясним, чего на самом деле ждет ядро Linux от драйвера. Все — на конкретных примерах и без лишней теории.
Ремонт обхода кадров стека в ядре Linux для RISC-V

Матвей Быстрин
Инженер по системному программированию СнК в YADRO
Каждому разработчику знакома ситуация, когда нужно распечатать стек вызовов. Обычно это связано с отладкой ошибок, но на самом деле обход стека применяется и в других задачах.
В докладе разберем, как работает механизм обхода стека в ядре Linux и где он используется. Поработаем с gdb, посмотрим дизассемблированный код и, конечно, изучим спецификацию и фрагменты исходников ядра. Также немного углубимся в работу компилятора и заглянем «под капот» GCC.
Использование Rust для написания драйверов устройств

Владислав Шиповский
Тимлид команды системного ПО в Сбере
Разберем, как развивается поддержка Rust в ядре Linux и можно ли уже использовать его для серьезных задач. На примере фреймворка VFIO посмотрим, как писать драйверы PCI-устройств в user space — без погружения в ядро.
Обсудим, насколько Rust готов для такой работы, где он помогает, а где пока уступает привычным инструментам.
Кроме того, вас ждут демозона с оборудованием YADRO для ЦОД и телеком-операторов, технические интерактивы и квесты, а также подарки и сувениры от организаторов.
Где и когда встречаемся
System Level Meetup состоится 24 мая в Санкт-Петербурге в Loft Hall (Арсенальная наб. 1). Начало митапа — в 11:00, а гостей ждем с 10:00.
Участие в митапе бесплатное, но требует регистрации. Подробности и расписание доступны на странице мероприятия.
Если вы хотите узнать больше о Linux и С++ прямо сейчас, читайте статьи на Хабре:
CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно
Вирт, Кормен и диалекты Basic: что изучить про алгоритмы и структуры данных разработчикам на С++
Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
Девять desktop- и embedded-систем для создания собственного Linux-дистрибутива: какой выбрать для вашего проекта