Доклад

А вы можете сказать, что все-таки такое «корутина» в Kotlin?

До сих пор считаете корутины в Kotlin легковесными потоками? Не знаете, как или почему корутины существуют вне kotlinx.coroutines? Тогда вы по адресу! Обсудим, что такое корутины в чистом Kotlin (без дополнительных библиотек!), и в качестве самого наглядного примера построим с помощью них свою функцию `iterator { ... }` из стандартной библиотеки Kotlin.

Технологии. Только Kotlin (независимо от JVM, но можно сделать уклон в конце) и конкретно корутины (представления suspend-функций) в нем.

Проблема. Дать определение корутине и строгое описание ее работы и внутреннего устройства. (Ничего из упомянутого, к сожалению, не сделано в документации. Всё из этого, кроме детального внутреннего устройства, есть только в спецификации.)

Есть частая путаница, что корутина — это инстанс типа `Job` или он как-либо иначе связан с `Job` и структурным асинхронным программированием. Основная цель — желание направить на путь истинный помочь разобраться с тем, что же все-таки происходит. А именно — сделать самое начало: поставить на место терминологию и дать определение, и от них уже каждый сможет прямо шагать в нужном ему направлении.

Целевая аудитория. Точно определить пока не могу. Есть только предположение, что это будет интересно тем, у кого Kotlin есть как-то существует в проекте (так как тогда, скорее всего, будут и корутины), и тем, кому интересен язык (и в смысле «нравится, пользуюсь», и в смысле «заинтриговал, пока только рассматриваю»).

Это будет модификация доклада с недавно прошедшего митапа Kotlin Russia User Group. 

Слайды разрабатываются здесь.

Спикеры

Доклады