Change Log

Version 1.6.0

2015-08-25

  • New: BufferedSource.indexOf(ByteString) searches a source for the next occurrence of a byte string.
  • Fix: Recover from unexpected AssertionError thrown on Android 4.2.2 and earlier when asynchronously closing a socket.

Version 1.5.0

2015-06-19

  • Sockets streams now throw SocketTimeoutException. This builds on new extension point in AsyncTimeout to customize the exception when a timeout occurs.
  • New: ByteString now implements Comparable. The comparison sorts bytes as unsigned: {@code ff} sorts after {@code 00}.

Version 1.4.0

2015-05-16

  • Timeout exception changed. Previously Timeout.throwIfReached() would throw InterruptedIOException on thread interruption, and IOException if the deadline was reached. Now it throws InterruptedIOException in both cases.
  • Fix: throw EOFException when attempting to read digits from an empty source. Previously this would crash with an unchecked exception.
  • New: APIs to read and write UTF-8 code points without allocating strings.
  • New: BufferedSink can now write substrings directly, potentially saving an allocation for some callers.
  • New: ForwardingTimeout class.

Version 1.3.0

2015-03-16

  • New: Read and write signed decimal and unsigned hexadecimal values in BufferedSource and BufferedSink. Unlike the alternatives, these methods don’t do any memory allocations!
  • New: Segment sharing. This improves the runtime of operations like Buffer.clone() and Buffer.copyTo() by sharing underlying segments between buffers.
  • New: Buffer.snapshot() returns an immutable snapshot of a buffer as a ByteString. This builds on segment sharing so that snapshots are shallow, immutable copies.
  • New: ByteString.rangeEquals().
  • New: ByteString.md5() and ByteString.sha256().
  • New: ByteString.base64Url() returns URL-safe Base64. The existing decoding method has been extended to support URL-safe Base64 input.
  • New: ByteString.substring() returns a prefix, infix, or suffix.
  • New: Sink now implements java.io.Flushable.
  • Fix: Buffer.write(Source, long) now always writes fully. The previous behavior would return as soon as any data had been written; this was inconsistent with all other write() methods in the API.
  • Fix: don't leak empty segments in DeflaterSink and InflaterSource. (This was unlikely to cause problems in practice.)

Version 1.2.0

2014-12-30

  • Fix: Okio.buffer() always buffers for better predictability.
  • Fix: Provide context when readUtf8LineStrict() throws.
  • Fix: Buffers do not call through the Source on zero-byte writes.

Version 1.1.0

2014-12-11

  • Do UTF-8 encoding natively for a performance increase, particularly on Android.
  • New APIs: BufferedSink.emit(), BufferedSource.request() and BufferedSink.indexOfElement().
  • Fixed a performance bug in Buffer.indexOf()

Version 1.0.1

2014-08-08

  • Added read(byte[]), read(byte[], offset, byteCount), and void readFully(byte[]) to BufferedSource.
  • Refined declared checked exceptions on Buffer methods.

Version 1.0.0

2014-05-23

  • Bumped release version. No other changes!

Version 0.9.0

2014-05-03

  • Use 0 as a sentinel for no timeout.
  • Make AsyncTimeout public.
  • Remove checked exception from Buffer.readByteArray.

Version 0.8.0

2014-04-24

  • Eagerly verify preconditions on public APIs.
  • Quick return on Buffer instance equivalence.
  • Add delegate types for Sink and Source.
  • Small changes to the way deadlines are managed.
  • Add append variant of Okio.sink for File.
  • Methods to exhaust BufferedSource to byte[] and ByteString.

Version 0.7.0

2014-04-18

  • Don't use getters in timeout.
  • Use the watchdog to interrupt sockets that have reached deadlines.
  • Add java.io and java.nio file source/sink helpers.

Version 0.6.1

2014-04-17

  • Methods to read a buffered source fully in UTF-8 or supplied charset.
  • API to read a byte[] directly.
  • New methods to move all data from a source to a sink.
  • Fix a bug on input stream exhaustion.

Version 0.6.0

2014-04-15

  • Make ByteString serializable.
  • New API: ByteString.of(byte[] data, int offset, int byteCount)
  • New API: stream-based copy, write, and read helpers.

Version 0.5.0

2014-04-08

  • Initial public release.
  • Imported from OkHttp.