:mega: :mega: :mega: `kotlinx.coroutines` version 1.3.0-M1 is here! A lot of changes in Flow: * Cor...
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.