1=========
2Changelog
3=========
4
53.0.0 (2014-10-12)
6------------------
7
8* Now supports creating streams from functions and iterators.
9* Supports creating buffered streams and asynchronous streams.
10* Removed ``functions.php``. Use the corresponding functions provided by
11  ``GuzzleHttp\Streams\Utils`` instead.
12* Moved ``GuzzleHttp\Stream\MetadataStreamInterface::getMetadata`` to
13  ``GuzzleHttp\Stream\StreamInterface``. MetadataStreamInterface is no longer
14  used and is marked as deprecated.
15* Added ``attach()`` to ``GuzzleHttp\Stream\StreamInterface`` for PSR-7
16  compatibility.
17* Removed ``flush()`` from StreamInterface.
18* Removed the ``$maxLength`` parameter from
19  ``GuzzleHttp\Stream\StreamInterface::getContents()``. This function now
20  returns the entire remainder of the stream. If you want to limit the maximum
21  amount of data read from the stream, use the
22  ``GuzzleHttp\Stream\Utils::copyToString()`` function.
23* Streams that return an empty string, ``''``, are no longer considered a
24  failure. You MUST return ``false`` to mark the read as a failure, and ensure
25  that any decorators you create properly return ``true`` in response to the
26  ``eof()`` method when the stream is consumed.
27* ``GuzzleHttp\Stream\Stream::__construct``,
28  ``GuzzleHttp\Stream\Stream::factory``, and
29  ``GuzzleHttp\Stream\Utils::create`` no longer accept a size in the second
30  argument. They now accept an associative array of options, including the
31  "size" key and "metadata" key which can be used to provide custom metadata.
32* Added ``GuzzleHttp\Stream\BufferStream`` to add support for buffering data,
33  and when read, shifting data off of the buffer.
34* Added ``GuzzleHttp\Stream\NullBuffer`` which can be used as a buffer that
35  does not actually store any data.
36* Added ``GuzzleHttp\Stream\AsyncStream`` to provide support for non-blocking
37  streams that can be filled by a remote source (e.g., an event-loop). If a
38  ``drain`` option is provided, the stream can also act as if it is a blocking
39  stream.
40
412.1.0 (2014-08-17)
42------------------
43
44* Added an InflateStream to inflate gzipped or deflated content.
45* Added ``flush`` to stream wrapper.
46* Added the ability to easily register the GuzzleStreamWrapper if needed.
47
482.0.0 (2014-08-16)
49------------------
50
51* Deprecated functions.php and moved all of those methods to
52  ``GuzzleHttp\Streams\Utils``. Use ``GuzzleHttp\Stream\Stream::factory()``
53  instead of ``GuzzleHttp\Stream\create()`` to create new streams.
54* Added ``flush()`` to ``StreamInterface``. This method is used to flush any
55  underlying stream write buffers.
56* Added ``FnStream`` to easily decorate stream behavior with callables.
57* ``Utils::hash`` now throws an exception when the stream cannot seek to 0.
58
591.5.1 (2014-09-10)
60------------------
61
62* Stream metadata is grabbed from the underlying stream each time
63  ``getMetadata`` is called rather than returning a value from a cache.
64* Properly closing all underlying streams when AppendStream is closed.
65* Seek functions no longer throw exceptions.
66* LazyOpenStream now correctly returns the underlying stream resource when
67  detached.
68
691.5.0 (2014-08-07)
70------------------
71
72* Added ``Stream\safe_open`` to open stream resources and throw exceptions
73  instead of raising errors.
74
751.4.0 (2014-07-19)
76------------------
77
78* Added a LazyOpenStream
79
801.3.0 (2014-07-15)
81------------------
82
83* Added an AppendStream to stream over multiple stream one after the other.
84
851.2.0 (2014-07-15)
86------------------
87
88* Updated the ``detach()`` method to return the underlying stream resource or
89  ``null`` if it does not wrap a resource.
90* Multiple fixes for how streams behave when the underlying resource is
91  detached
92* Do not clear statcache when a stream does not have a 'uri'
93* Added a fix to LimitStream
94* Added a condition to ensure that functions.php can be required multiple times
95