Coroutines and Loom behind the scenes by Roman Elizarov

Kotlin by JetBrains · 40K views · 2023 · 45:22

Open on YouTube

Python, Ruby & scripting languagesProgramming language designSoftware architecture & designtalkdated

Why Hacker News recommends it

Pointed to in Java 21 and Loom discussions as the Kotlin lead's authoritative view on coroutines versus virtual threads.

What it is

Roman Elizarov compares Kotlin Coroutines with OpenJDK Project Loom virtual threads, looking at their design goals and how those translate into different implementations and tradeoffs. He addresses how the two can coexist.

Recommended by 1 HN commenters across 1 different months, 2023 to 2023.

What Hacker News said

Recommends dangets · 2023-08 · on “Java 21: First Release Candidate”

Here's a take from Roman Elizarov (Kotlin bias) - [this video] I imagine a lot of the missing structured concurrency will get built up over time on the Java side, but it is an interesting talk regardless.

Cites gavinray · 2023-06 · on “The compact overview of JDK 21’s “frozen” feature list”

Yeah, Kotlin does have the colored-function problem, in the same way that Node/JS has. Loom and Virtual Threads are one area I'm not as familiar with. What I do know is that you can configure virtual threads as the coroutine dispatcher for Kotlin coroutines, and in a recent video Roman Elizarov talked about how the default "Dispatchers.IO" could theoretically leverage VT's in some future JDK. [this video]

Cites soulbadguy · 2023-06 · on “The compact overview of JDK 21’s “frozen” feature list”

> 5. Java with virtual threads now has far better support for async programming than Kotlin or Scala. It is now competitive with Golang in async ease-of-use green thread/stackfull coroutine such as in go/java and stackfless coroutine as in kotlin are well know solutions for introducing async programming in a way that feel natural to dev. They both have strength and limitation, i don't think one offer "far better support for async programming", and even more importantly they are not mutually exclusive and can be used together depending on one needs (see [this video] )

Cites jillesvangurp · 2023-08 · on “Features of Project Loom incorporated in JDK 21”

It's pretty hard to use Kotlin without co-routines these days. Most modern Kotlin frameworks tend to use them. And they work outside the JVM as well. Mostly we're talking about Java projects focusing on doing things the Java way that may or may not be using Kotlin for that. Kotlin mobile is unaffected; it won't get Loom any time soon (as far as I know) and things just don't work the same way there. Kotlin (and coroutines) are the go to solution there. I don't see that changing. And from having used coroutines with Spring extensively, I kind of like it. Works great. Makes everything easier. Especially the unholy mess that is web flux. There aren't a lot of things that loom does that Kotlin do

Cites simon_void · 2023-10 · on “Kotlin Coroutines vs. Threads Performance Benchmark”

here is the talk by Roman Elizarov, the Kotlin project lead, at KotlinConf 2023 about Coroutines vs VThreads: [this video] short version: both were optimized for different things, so there is a place for both of them.