All Versions
Latest Version
Avg Release Cycle
Latest Release

Changelog History
Page 4

  • v1.17.2 Changes


    • Fix: Make Pipe.fold() flush the underlying sink.
  • v1.17.1 Changes


    • Fix: Make the newly-backported Pipe.fold() public.
  • v1.17.0 Changes


    • New: Backport Pipe.fold() to Okio 1.x.
  • v1.16.0 Changes


    • New: Backport BufferedSource.peek() and BufferedSource.getBuffer() to Okio 1.x.
    • Fix: Enforce timeouts when closing AsyncTimeout sources.
  • v1.15.0 Changes


    • New: Trie-based This improves performance when selecting among large lists of options.
    • Fix: Retain interrupted state when throwing InterruptedIOException.
  • v1.14.0 Changes


    • New: Buffer.UnsafeCursor provides direct access to Okio internals. This API is like Okio's version of Java reflection: it's a very powerful API that can be used for great things and dangerous things alike. The documentation is extensive and anyone using it should review it carefully before proceeding!
    • New: Change BufferedSource to implement java.nio.ReadableByteChannel and BufferedSink to implement java.nio.WritableByteChannel. Now it's a little easier to interop between Okio and NIO.
    • New: Automatic module name of okio for use with the Java Platform Module System.
    • New: Optimize Buffer.getByte() to search backwards when doing so will be more efficient.
    • Fix: Honor the requested byte count in InflaterSource. Previously this class could return more bytes than requested.
    • Fix: Improve a performance bug in AsyncTimeout.sink().write().
  • v1.13.0 Changes


    • Okio now uses @Nullable to annotate all possibly-null values. We've added a compile-time dependency on the JSR 305 annotations. This is a [provided][maven_provided] dependency and does not need to be included in your build configuration, .jar file, or .apk. We use @ParametersAreNonnullByDefault and all parameters and return types are never null unless explicitly annotated @Nullable.

    • Warning: this release is source-incompatible for Kotlin users. Nullability was previously ambiguous and lenient but now the compiler will enforce strict null checks.

  • v1.12.0 Changes


    • Fix: Change Pipe's sink.flush() to not block. Previously closing a pipe's sink would block until the source had been exhausted. In practice this blocked the caller for no benefit.
    • Fix: Change writeUtf8CodePoint() to emit ? for partial surrogates. The previous behavior was inconsistent: given a malformed string with a partial surrogate, writeUtf8() emitted ? but writeUtf8CodePoint() threw an IllegalArgumentException. Most applications will never encounter partial surrogates, but for those that do this behavior was unexpected.
    • New: Allow length of readUtf8LineStrict() to be limited.
    • New: Utf8.size() method to get the number of bytes required to encode a string as UTF-8. This may be useful for length-prefixed encodings.
    • New: SHA-512 hash and HMAC APIs.
  • v1.11.0 Changes


    • Fix: The four-argument overload of Buffer.writeString() had a major bug where it didn't respect offsets if the specified charset was UTF-8. This was because our short-circuit optimization omitted necessary offset parameters.
    • New: HMAC support in HashingSource, HashingSink, ByteString, and Buffer. This makes it easy to create a keyed-hash message authentication code (HMAC) wherever your data is. Unlike the other hashes, HMAC uses a ByteString secret key for authentication.
    • New: ByteString.of(ByteBuffer) makes it easier to mix NIO with Okio.
  • v1.10.0 Changes


    • Fix: Support reading files larger than 2 GiB with GzipSource. Previously attempting to decompress such files would fail due to an overflow when validating the total length.
    • Fix: Exit the watchdog thread after being idle for 60 seconds. This should make it possible for class unloaders to fully unload Okio.
    • New: Okio.blackhole() returns a sink where all bytes written are discarded. This is Okio's equivalent of /dev/null.
    • New: Encode a string with any charset using ByteString.encodeString() and decode strings in any charset using ByteString.string(). Most applications should prefer ByteString.encodeUtf8() and ByteString.utf8() unless it's necessary to support a legacy charset.
    • New: GzipSink.deflater() makes it possible to configure the compression level.