Корутины изнутри

Backend
Зал №4

Поддержка асинхронного программирования сейчас представлена примерно везде, и Kotlin — не исключение. В Kotlin 1.3 стабилизировались корутины, удобный и прозрачный механизм для асинхронного программирования.

В этом докладе мы посмотрим на них изнутри: как в принципе представить метод в виде приостанавливаемого вычисления и какие грабли разложены на этом пути. Потом пройдемся по оптимизациям, которые пришлось поддержать в компиляторе, узнаем, где и зачем можно экономить на объектах, и как обхитрить Hotspot. Кроме того, увидим, как отвязать потокобезопасную реализацию корутин от спецификации языка, причём здесь задача о консенсусе и что нужно сделать, чтобы написать отладчик для корутин без перекомпилирования кода.

Запись доклада

Презентация

JetBrains

Всеволод Толстопятов

Работал в Яндексе над Контестом и Диском, в Segmento над высоконагруженным (100к+ RPS, 1 PB+ storage) RTB сервисом. В JetBrains занимаюсь библиотеками вокруг Котлина и самим Котлином. Интересуюсь параллельным и системным программированием. В свободное время иногда делаю что-нибудь полезное: dtraceasm для JMH, порт async-profiler под мак, мелочи в JCTools.

Работал в Яндексе над Контестом и Диском, в Segmento над высоконагруженным (100к+ RPS, 1 PB+ storage) RTB сервисом. В JetBrains занимаюсь библиотеками вокруг Котлина и самим Котлином. Интересуюсь параллельным и системным программированием. В свободное время иногда делаю что-нибудь полезное: dtraceasm для JMH, порт async-profiler под мак, мелочи в JCTools.

Другие спикеры секции Backend: