Конференция «C++ Russia» с блинами и матрёшками! Как всегда, лучшие докладчики
со всей страны на два дня. Конференция ориентирована на опытных разработчиков, никаких вводных лекций!
Место проведения: Санкт-Петербург, ул. Кораблестроителей, 14, гостиница Прибалтийская.
В течение года сообщество проводит встречи в разных городах России: Москве, Санкт-Петербурге,
Новосибирске, Екатеринбурге, Нижнем Новгороде, Саратове.
На встречах выступают докладчики из разных городов и стран.
Я расскажу о своём опыте разработки антивирусного движка на C++ в виде разделяемой библиотеки. Уникальной особенностью является отсутствие каких-либо внешних зависимостей (runtime C++ или C). Вся эта связка построена вокруг использования кастомного toolchain'а на GCC для специального таргета, которым собирается libc newlib для этого же таргета, поверх которого собирается libstdc++. Соответственно, разделяемая библиотека собирается через кастомный тулчейн с кастомными libgcc_s, libc, libcstdc++ (изменения только в сборке). Все взаимодействие со средой выполнения осуществляется через ABI разделяемой библиотеки.
Таким образом, внутри библиотеки сохраняется возможность использовать полноценный современный С++ без ограничений (RTTI, exceptions, iostream, etc), что уходит в libstdc++->libc (newlib)| l ibgcc->ABI.
Подобный подход проверялся на тулчейнах GCC/newlib/libstdc++ для Linux, и clang/newlib/libc++ для MacOS.
Доклад может быть интересен тем, кто хочет использовать С++ в разделяемых библиотеках, но не может себе этого позволить из-за внешних зависимостей.
We are all aware that we should know the STL algorithms. Including them in our designs allows us to make our code more expressive and more robust. And sometimes, in a spectacular way.
But do you know your STL algorithms?
In this talk, you'll see the 105 algorithms that the STL currently has, including those added in C++11 and C++17. But more than just a listing, the point of this talk is to present the different groups of algorithms, the patterns they form in the STL, and how the algorithms relate together.
This kind of big picture is the best way I know to actually remember them all, and constitute a toolbox chock-full of ways to make our code more expressive and more robust.
Software with very complex business logic, such as games, CAD systems, and enterprise systems, often needs to compose and modify objects at runtime - for example to add or override a method in an existing object. Standard C++ has rigid types which are defined at compile time and make this hard. On the other hand languages with dynamic types like lua, Python, and JavaScript make this very easy. Therefore, to keep the code readable and maintainable, and accomplish complex business logic requirements, many projects use such languages alongside C++. Some drawbacks of this approach include the added complexity in a language binding layer, the performance loss from using an interpreted language, and the inevitable code duplication for many small utility functionalities.
DynaMix is a library which attempts to remove, or at least greatly reduce, the need for a separate scripting language by allowing the users to compose and modify polymorphic objects at runtime in C++. This talk will elaborate on this problem and introduce the library and its key features to potential users or people who might benefit form the approach with an annotated example and a small demo.
В 2017 году вопрос выбора аллокатора в C++ не теряет актуальности. В стандарт добавили новый способ выбрать локальный аллокатор для контейнеров (std::pmr), глобальные tcmalloc и jemalloc продолжают развиваться, как и интерфейсы ядра, на которые они опираются. Данный доклад посвящен “нижнему этажу” этой конструкции: особенностям работы mmap и madvise в ядре Linux и влиянию этих особенностей на производительность аллокаторов.
This talk will cover why engineers looking for performance choose C++. Jon will present an historical perspective of C++ focusing on what's going on in the C++ community right now and where the language and its user base is heading. With a renewed interest in performance for both data centers and mobile devices, and the success of open source software libraries, C++ is back and it is hot. This talk will explain why C++ is most software engineers' go-to language for performance. You will receive a rough historical sketch that puts C++ in perspective and covers its popularity ups and downs.
This talk is based, in part, on the book "C++ Today: The Beast is Back" published by O'Reilly.
Рефлексия часто нужна для обобщения алгоритмов сериализации. Реализация всевозможных протоколов, работа с базами данных. Для решения подобных задач нами был написан компилятор homebrew IDL для генерации C++ структур и библиотека для взаимодействия с полученным результатом. Protobuf с педалями и стоило ли оно того.
Первый день конференции 19 апреля — это день мастер-классов. Вы можете посетить один четыре мастер-классов на ваш выбор. Обратите внимание: два мастер-класса проходят на английском языке. Мастер-класс это практическое занятие под руководством опытного программиста. Для работы вам понадобится ноутбук, более подробные требования есть в описании каждого мастер-класса. На этот день продаётся отдельный билет.
Applied functional programming in C++ (Билеты закончились) |
Multithreading with modern C++ (Билеты закончились) |
Continuous integration для C++ разработчика (Билеты закончились) |
Шустрый и современный C++ (Билеты закончились) |
|
---|---|---|---|---|
9:00 - 10:00 | Регистрация на мастер-классы | |||
10:00 - 12:00 | Applied functional programming in C++ I | Multithreading with modern C++ I | Continuous integration для C++ разработчика I | Шустрый и современный C++ I |
12:00 - 12:45 | Кофе-брейк | |||
12:45 - 14:45 | Applied functional programming in C++ II | Multithreading with modern C++ II | Continuous integration для C++ разработчика II | Шустрый и современный C++ II |
14:45 - 16:00 | Обед | |||
16:00 - 18:00 | Applied functional programming in C++ III | Multithreading with modern C++ III | Continuous integration для C++ разработчика III | Шустрый и современный C++ III |
18:00 - 20:00 | Предрегистрация на конференцию |
track a | track b | track c | track d | |
---|---|---|---|---|
10:00 - 12:00 | Daveed VandevoordeReflective Metaprogramming in C++![]() |
|||
12:00 - 12:45 | Кофе-брейк | |||
12:45 - 13:45 | Ivan Čukić2020: A void_t odyssey![]() |
Сергей ШамбирКогда хорош процедурный C++ | Иван ПузыревскийАсинхронность в программировании | Евгений ЛукьянецСборка в Docker с использованием Conan |
13:45 - 14:45 | Dietmar KühlConcept Based Testing![]() |
Андрей КарповЭффективный C++ (Маерс тут ни при чём :) |
Евгений ОхотниковАкторы на C++: стоило ли оно того? | Денис ПанинПрактическое метапрограммирование: пишем гетерогенную хэш-таблицу |
14:45 - 16:00 | Обед | |||
16:00 - 17:00 | Rainer GrimmBest Practices for Concurrency in Modern C++![]() |
Евгений ЗуевSemantic API for C++ programms | Дмитрий КожевниковПодводные камни CMake и где они обитают | Дмитрий СоколовКодогенерация как рефлексия для бедных |
17:00 - 18:00 | Simon BrandModern C++ Parallelism from CPU to GPU![]() |
Алексей МаловОпыт применения современного C++ в разработке desktop-приложений | Павел БулатовПереход на WebAssembly: стоит ли игра свеч? |