Published 19 November 2024
- On JVM, libraries now include Java Platform Module System (JPMS) modules #406
- Made Segment's size and capacity public #409
- Improved performance of extension functions reading and writing using little-endian byte order #414
- Minor documentation improvements
Published 17 September 2024
- Extended Unsafe API with a function allowing to iterate over all Buffer's segments #383
- Implemented
ByteString
conversion to/fromNSData
on Apple platforms #384 - Implemented extensions to read/write
ByteString
from to/fromByteBuffer
, as well as representingByteString
as a read-onlyByteBuffer
on JVM #387 - Implemented
ByteString
factory accepting unsigned bytes #390 - Reimplemented various functions using Unsafe API #337
- Minor documentation improvements
Published 19 August 2024
- Updated JS
braces
library to3.0.3
- More unnecessary backing fields were eliminated #374
Published 15 August 2024
-
Unsafe API method signatures were updated to return number of written/read bytes #360
Note that it's a breaking change as return type is a part of method signature. However, updated methods are all inline, so in general, projects depending on libraries that were compiled against the previous version should not experience binary incompatibility issues after adding a dependency on a never
kotlinx-io
version. -
Added call-in-place contracts to Unsafe API methods #361
-
Updated Gradle and some dependencies #353
-
Improved build scripts #371
-
Removed the
Buffer.buffer
backing field #366
Published 15 July 2024
- Fixed a bug in segment pool implementation affecting a second level pool uses.
Published 12 July 2024
-
Provided an API allowing direct access to Buffer and Segment internals #135, #166
The API is unsafe, delisted from public docs and requires explicit opt-in. It's recommended to avoid this API unless you're working on integration with other APIs (like,
java.nio
orio_uring
, for example). -
Improved the way segment pooling is working on JVM #352
Now sharing a segment won't make an original segment and all its copies recyclable. Instead, the last remaining copy will be placed back into the pool when recycled. Segments are no longer allocated or lost when taking or recycling a segment from pool under a high contention due to concurrent requests. Size of the segment pool on the JVM could now be statically configured by setting a system property
kotlinx.io.pool.size.bytes
.
Published 6 June 2024
- Updated Kotlin to 2.0 #327
Published 17 May 2024
- Provided an extension function to write
CharSequence
s (Sink.writeString
) #318 - Various minor improvements in build scripts and docs
Published 8 May 2024
- Kotlin updated to 1.9.24 #315
- Supported
linuxArm32Hfp
target #303 - Enabled KLib ABI validation
- Provided extension functions to read (
Source.readCodePointValue
) and write (Sink.writeCodePointValue
) Unicode code point values #307 - Provided function to list directories (
FileSystem.list
) #222
Published 22 Apr 2024
- Reimplemented file metadata gathering without required reasoning APIs on Apple targets #297
- For JS target, Webpack should no longer report missing nodejs modules during compilation #285
Published 18 Mar 2024
- Implemented basic filesystem support for Wasm WASI target #257
- Enabled native benchmarks by default #263
Published 2 Feb 2024
- Updated Kotlin to
1.9.22
- Enabled Wasm Wasi target #236 (Note that neither of Wasm targets has filesystem support yet)
- Support path resolution #228
- Fixed
Path::parent
behavior on Windows #227 - Aligned behavior of
FileSystem::sink
andFileSystem::source
across all platforms #252 - Fixed handling of paths containing a whitespace character #248
Published 13 Sep 2023
- Enabled Wasm target #164
- Added Sink/Source integration with Apple's NSInputStream and NSOutputStream (#174)
- Added extension functions integrating ByteString with Base64 and HexFormat APIs (#149)
- Added extension functions to read and write floating point numbers (#167)
- Extended filesystems support by adding functions to create and delete files and directories, check their existence, perform atomic move, and get file size (#211, #214). Also extended Path's API to request Path's parent and to get file's name (#206, #212).
- Updated Kotlin version to 1.9.10
- Fixed undefined behavior in the ByteString's hashCode computation on native targets (#190)
- Fixed compatibility issues with Android API 25 and below (#202)
Published 11 Jul 2023
The release includes a bug fix solving the issue with dependency management.
- Fixed the dependency type for
bytesting
module, it is no longer required to explicitly specify it when usingkotlinx-io-core
(#169).
Published 3 Jul 2023
Initial release of the new kotlinx-io
version implemented based on Okio
library.
- A trimmed-down and reworked version of the core Okio API (#132, #137)
- ByteString implementation (#133)
Changelog for previous versions may be found in CHANGELOG-0.1.X.md