:mega: :mega: :mega: `kotlinx.coroutines` version ...
# coroutines
v
📣 📣 📣
kotlinx.coroutines
version 1.3.0-M1 is here! A lot of changes in Flow: * Core
Flow
interfaces and operators are graduated from preview status to experimental ⏸️ * Serious performance improvements of Flow * More accurate context preservation invariant that should prevent most of the concurrency and contract violation bugs *
Flow
interface cannot be implemented directly, only via
AbstractFlow
to preserve Flow’s invariant * Separate
buffer
operator composable with buffered operator (
flowOn
,
flowChannel
etc.). No more
bufferSize
constant in operators! * New operators and a lot more! General changes: * Scalable state-of-the-art
Semaphore
implementation * Channels API improved: performance, experimental API and consistent exception handling *
withContext
checks cancellation status on exit to make reasoning about sequential concurrent code easier * JS dispatcher performance * Various API and performance improvements and bug fixes Full changelog: https://github.com/Kotlin/kotlinx.coroutines/releases/tag/1.3.0-M1
🔥 27
🎉 29
K 15
😍 6
👌 8
👏 7
😎 6
👍 5
⏸️ 19
b
Awesome! What does the
-M1
signify?
l
@basher Milestone one.
b
Ah! Is there a way to see what upcoming milestones are left and general plan?
l
I don't think so, but I'd expect that they want to round up Flow before 1.3.0. You can see remaining open issues tagged with
flow
on GitHub.
👍 1
g
Maybe I missed something, but isn’t channelFlow and callbackFlow are exactly the same, just alias. Is it for some future changes? Or just to make semantics more clear?
e
They are the same. It is just a ploy to target docs to specific use-cases and also clearly express intent in your code.