diff --git a/CHANGELOG.md b/CHANGELOG.md
index be7ce7a7e..14fd2bd54 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,24 @@
 # CHANGELOG
 
+## 0.5.0
+> Published 12 July 2024
+
+### Features
+- Provided an API allowing direct access to Buffer and Segment internals [#135](https://github.com/Kotlin/kotlinx-io/issues/135), [#166](https://github.com/Kotlin/kotlinx-io/issues/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` or
+  `io_uring`, for example).
+
+- Improved the way segment pooling is working on JVM [#352](https://github.com/Kotlin/kotlinx-io/pull/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`.
+
 ## 0.4.0
 > Published 6 June 2024
 
diff --git a/README.md b/README.md
index 83c1a6a14..49e6fe8d1 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ repositories {
 Add the library to dependencies:
 ```kotlin
 dependencies {
-    implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.4.0")
+    implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.5.0")
 }
 ```
 
@@ -58,7 +58,7 @@ kotlin {
     sourceSets {
         commonMain {
             dependencies {
-                implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.4.0")
+                implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.5.0")
             }
         }
     }
@@ -72,7 +72,7 @@ Add the library to dependencies:
 <dependency>
     <groupId>org.jetbrains.kotlinx</groupId>
     <artifactId>kotlinx-io-core-jvm</artifactId>
-    <version>0.4.0</version>
+    <version>0.5.0</version>
 </dependency>
 ```
 
diff --git a/core/common/src/files/Paths.kt b/core/common/src/files/Paths.kt
index 63531a9c8..7f75cfb12 100644
--- a/core/common/src/files/Paths.kt
+++ b/core/common/src/files/Paths.kt
@@ -100,7 +100,7 @@ public fun Path(base: Path, vararg parts: String): Path {
 /**
  * Returns [RawSource] for the given file or throws if path is not a file or does not exist
  *
- * Use of this method is deprecated with warning since kotlinx-io 0.3.0. The method will be removed in 0.4.0.
+ * Use of this method is deprecated with warning since kotlinx-io 0.3.0. The method will be removed in 0.6.0.
  */
 @Deprecated(
     message = "Use FileSystem.source instead",
@@ -117,7 +117,7 @@ public fun Path.source(): Source = SystemFileSystem.source(this).buffered()
  * Returns [RawSink] for the given path, creates file if it doesn't exist, throws if it's a directory,
  * overwrites contents.
  *
- * Use of this method is deprecated with warning since kotlinx-io 0.3.0. The method will be removed in 0.4.0.
+ * Use of this method is deprecated with warning since kotlinx-io 0.3.0. The method will be removed in 0.6.0.
  */
 @Deprecated(
     message = "Use FileSystem.sink instead",
diff --git a/gradle.properties b/gradle.properties
index 3554f8341..db68238ef 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -4,7 +4,7 @@
 #
 
 group=org.jetbrains.kotlinx
-version=0.4.0-SNAPSHOT
+version=0.6.0-SNAPSHOT
 kotlin.code.style=official
 org.gradle.jvmargs=-Xmx4G
 nativeBenchmarksEnabled=true