Alex is an enthusiastic team leader and quality-focused developer with a passion for building tools and programming languages. Alex was a Senior Software Engineer at dxFeed, where he led the development of a DSL for time-series analysis and services for real-time market data processing. He is committed to the life-long learning and greatly enjoys sharing his knowledge with others. With the goal of making software even softer, Alex recently joined the Gradle Build Tool team to focus on bringing reliable builds to the masses.
Kotlin coroutines are most known as an elegant and modern solution for managing asynchronous work. But due to their versatile design, coroutines can also be helpful for tasks outside of concurrency.
We will deep dive into the implementation of coroutines in Kotlin and learn why their asynchronous execution is not a language feature. Sequence builders and deeply recursive functions from the standard library are prime examples of synchronous coroutines. You will learn how they work and strengthen your understanding of coroutine machinery.
We will look at the parser combinator library Parsus. It uses coroutines to make parsers debuggable without code generation and process data of arbitrary depth without stack overflow errors. You will learn how to build libraries using similar techniques and how to avoid various pitfalls when working with low-level coroutines APIs.