Skip to content

Details

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. В данном докладе детально описываются соответствующие проблемы и способы их решения.

Related topics

Sponsors

JetBrains

JetBrains

Meetup sponsor (location, licenses prizes)

SEMrush

SEMrush

Meetup sponsor (location)

PeterService

PeterService

Meetup sponsor (location)

Oracle

Oracle

Meetup sponsor (location)

You may also like