Description
Okio is a popular, well-established, and battle-tested library providing rich functionality and good performance. It provides concise yet powerful primitives for multiplatform IO. kotlinx-io
could use Okio as a basis.
The overall plan is to take the Okio library (its core part, without filesystems), eliminate a Java legacy from the API, reduce the API shape, and provide missing functionality and features.
One of the goals along this path is to ensure that kotlinx-io
will preserve the same performance level as Okio has right now or even improve it where possible. To track the performance, a benchmarking suite should be added.
New functionality and features that could be considered for adding to the library in the future include:
- asynchronous IO support (see Introduce Async API #163);
- different memory types (in addition to byte arrays) Buffers are built upon (like NIO ByteBuffers on JVM) (see Support ByteBuffer as a backing storage on JVM #239);
- file system support (at the moment, it won't be taken from Okio) (see Files and FileSystems support #241).
Particular tasks will be described in corresponding GH issues.