
Глеб Минаев
Центр научного программирования
До сих пор считаете корутины в Kotlin легковесными потоками? Не знаете, как или почему корутины существуют вне kotlinx.coroutines? Тогда вы по адресу! Обсудим, что такое корутины в чистом Kotlin (без дополнительных библиотек!), и в качестве самого наглядного примера построим с помощью них свою функцию `iterator { ... }` из стандартной библиотеки Kotlin.
Технологии. Только Kotlin (независимо от JVM, но можно сделать уклон в конце) и конкретно корутины (представления suspend-функций) в нем.
Проблема. Дать определение корутине и строгое описание ее работы и внутреннего устройства. (Ничего из упомянутого, к сожалению, не сделано в документации. Всё из этого, кроме детального внутреннего устройства, есть только в спецификации.)
Есть частая путаница, что корутина — это инстанс типа `Job` или он как-либо иначе связан с `Job` и структурным асинхронным программированием. Основная цель — желание направить на путь истинный помочь разобраться с тем, что же все-таки происходит. А именно — сделать самое начало: поставить на место терминологию и дать определение, и от них уже каждый сможет прямо шагать в нужном ему направлении.
Целевая аудитория. Точно определить пока не могу. Есть только предположение, что это будет интересно тем, у кого Kotlin есть как-то существует в проекте (так как тогда, скорее всего, будут и корутины), и тем, кому интересен язык (и в смысле «нравится, пользуюсь», и в смысле «заинтриговал, пока только рассматриваю»).
Это будет модификация доклада с недавно прошедшего митапа Kotlin Russia User Group.
Слайды разрабатываются здесь.

Центр научного программирования