telekIoDispatcher

expect val telekIoDispatcher: CoroutineDispatcher

The dispatcher telek runs blocking-capable work on — synchronous EffectHandlers (see EffectExecutorImpl) and, in :persistence, file I/O.

This exists because Dispatchers.IO lives in kotlinx-coroutines' concurrent source set (JVM + Native), not common, so common code can't reference it directly. Every telek target has a real one, so both actuals are just Dispatchers.IO; a hypothetical JS target would actual this to Dispatchers.Default and nothing else would have to change.

actual val telekIoDispatcher: CoroutineDispatcher
actual val telekIoDispatcher: CoroutineDispatcher

Dispatchers.IO is unreachable from a Kotlin/Native source set: kotlinx-coroutines declares the public one as an expect extension in its concurrent source set, but Dispatchers on Native also has an internal val IO member, and a member always shadows an extension — so the reference resolves to the internal one and fails to compile outside kotlinx-coroutines itself.

This mirrors what coroutines' own native DefaultIoScheduler does (a fixed pool sized like the JVM's default IO parallelism), built lazily so a bot that never runs a blocking effect handler never pays for the threads. Deliberately never closed — its lifetime is the process's.