Coroutines & C++ ABI


Сведения
I. Coroutines TS: что это такое и как этим пользоваться, Андрей Давыдов
Coroutines (async/await и generators, 2 наиболее часто встречающихся частных случая) – горячая тема в языках программирования уже несколько лет. За последний год в экспериментальном статусе эта фича появилась в Rust, Kotlin и, конечно, С++ (Coroutines TS). За несколько лет существования proposal'а накопилось некоторое количество материала о том, что такое корутины и зачем они нужны в C++, прежде всего выступления автора proposal'а, Гора Нишанова. Но при этом с момента своей презентации фича успела сильно эволюционировать, превратившись из кальки C#-го async/await, в нечто более фундаментальное и мощное, но не пригодное для использования "из коробки". Т.е., в отличие от, скажем, C#, имея в распоряжении только компилятор и стандартную библиотеку не получится воспроизвести красивые примеры использования корутин, которыми изобилуют презентации им посвященные.
Мы постараемся выяснить:
- что именно вошло в Coroutines TS;
- как compiler frontend читает/понимает тела корутин;
- как писать корутины – начиная с простейших (`co_return 42;`), затем генераторы, и дальше, как пойдет, вплоть до асинхронного echo-сервера;
- как отстрелить себе ногу по-модному с корутинами, используя ленивые и асинхронные вычисления.
Предел мечтаний докладчика, успеть рассмотреть как подружить Networking TS (aka [Boost.]Asio) c корутинами (по мотивам CppCon 2017: Gor Nishanov “Naked coroutines live (with networking)”) в общем случае, т.е. не оборачиваю каждую функцию из `std::experimental::net`.
В докладе не будет:
- заветного рецепта как писать асинхронный код просто и без разного рода race'ов;
- обсуждения, что лучше stackless или stackfull coroutines (aka suspend up/suspend down model);
- выяснения, как правильно переводить на русский "coroutine";
Если ваше знакомство с coroutines ограничивается просмотром выступлений Гора Нишанова и/или чтением обзорных статей, постов про ожидаемые фичи новых стандартов C++ и т.д., рассказ рассчитан ровно на Вас. Если же вы уже используете C++ coroutines в production'е, то вероятно знаете по теме больше докладчика, и, наверное, заскучаете на встрече.
О докладчике:
Меня зовут Андрей Давыдов, последние 2 года я работаю в команде ReSharper C++ (JetBrains). Являюсь эталонным дураком, идеально подходящим для проверки новых языковых фич и того, насколько они защищены от. Все возможные ошибки новичка пробующего C++ coroutines я совершил, поэтому могу рассказать то, чего нет в выступлениях Гора Нишанова и прочих гуру С++ и асинхронного программирования.
II. C++ ABI или почему мы предпочитаем OpenSource, Иван Мурашко
По роду своей деятельности мы часто сталкиваемся с библиотеками сторонних разработчиков которые предоставляются нам в бинарной форме, например Oracle OCCI. Вместе с тем в разработке мы используем разные версии компиляторов gcc, которые не всегда совместимы по умолчанию с Oracle OCCI. В данном докладе детально описываются соответствующие проблемы и способы их решения.

Спонсоры
Coroutines & C++ ABI