1 2Kotlin, as a language, provides only minimal low-level APIs in its standard library to enable various other 3libraries to utilize coroutines. Unlike many other languages with similar capabilities, `async` and `await` 4are not keywords in Kotlin and are not even part of its standard library. Moreover, Kotlin's concept 5of _suspending function_ provides a safer and less error-prone abstraction for asynchronous 6operations than futures and promises. 7 8`kotlinx.coroutines` is a rich library for coroutines developed by JetBrains. It contains a number of high-level 9coroutine-enabled primitives that this guide covers, including `launch`, `async` and others. 10 11This is a guide on core features of `kotlinx.coroutines` with a series of examples, divided up into different topics. 12 13In order to use coroutines as well as follow the examples in this guide, you need to add a dependency on the `kotlinx-coroutines-core` module as explained 14[in the project README](../README.md#using-in-your-projects). 15 16## Table of contents 17 18* [Basics](basics.md) 19* [Cancellation and Timeouts](cancellation-and-timeouts.md) 20* [Composing Suspending Functions](composing-suspending-functions.md) 21* [Coroutine Context and Dispatchers](coroutine-context-and-dispatchers.md) 22* [Asynchronous Flow](flow.md) 23* [Channels](channels.md) 24* [Exception Handling and Supervision](exception-handling.md) 25* [Shared Mutable State and Concurrency](shared-mutable-state-and-concurrency.md) 26* [Select Expression (experimental)](select-expression.md) 27 28## Additional references 29 30* [Guide to UI programming with coroutines](../ui/coroutines-guide-ui.md) 31* [Coroutines design document (KEEP)](https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md) 32* [Full kotlinx.coroutines API reference](https://kotlin.github.io/kotlinx.coroutines) 33