- Now supports creating streams from functions and iterators.
- Supports creating buffered streams and asynchronous streams.
- Removed
functions.php
. Use the corresponding functions provided byGuzzleHttp\Streams\Utils
instead. - Moved
GuzzleHttp\Stream\MetadataStreamInterface::getMetadata
toGuzzleHttp\Stream\StreamInterface
. MetadataStreamInterface is no longer used and is marked as deprecated. - Added
attach()
toGuzzleHttp\Stream\StreamInterface
for PSR-7 compatibility. - Removed
flush()
from StreamInterface. - Removed the
$maxLength
parameter fromGuzzleHttp\Stream\StreamInterface::getContents()
. This function now returns the entire remainder of the stream. If you want to limit the maximum amount of data read from the stream, use theGuzzleHttp\Stream\Utils::copyToString()
function. - Streams that return an empty string,
''
, are no longer considered a failure. You MUST returnfalse
to mark the read as a failure, and ensure that any decorators you create properly returntrue
in response to theeof()
method when the stream is consumed. GuzzleHttp\Stream\Stream::__construct
,GuzzleHttp\Stream\Stream::factory
, andGuzzleHttp\Stream\Utils::create
no longer accept a size in the second argument. They now accept an associative array of options, including the "size" key and "metadata" key which can be used to provide custom metadata.- Added
GuzzleHttp\Stream\BufferStream
to add support for buffering data, and when read, shifting data off of the buffer. - Added
GuzzleHttp\Stream\NullBuffer
which can be used as a buffer that does not actually store any data. - Added
GuzzleHttp\Stream\AsyncStream
to provide support for non-blocking streams that can be filled by a remote source (e.g., an event-loop). If adrain
option is provided, the stream can also act as if it is a blocking stream.
- Added an InflateStream to inflate gzipped or deflated content.
- Added
flush
to stream wrapper. - Added the ability to easily register the GuzzleStreamWrapper if needed.
- Deprecated functions.php and moved all of those methods to
GuzzleHttp\Streams\Utils
. UseGuzzleHttp\Stream\Stream::factory()
instead ofGuzzleHttp\Stream\create()
to create new streams. - Added
flush()
toStreamInterface
. This method is used to flush any underlying stream write buffers. - Added
FnStream
to easily decorate stream behavior with callables. Utils::hash
now throws an exception when the stream cannot seek to 0.
- Stream metadata is grabbed from the underlying stream each time
getMetadata
is called rather than returning a value from a cache. - Properly closing all underlying streams when AppendStream is closed.
- Seek functions no longer throw exceptions.
- LazyOpenStream now correctly returns the underlying stream resource when detached.
- Added
Stream\safe_open
to open stream resources and throw exceptions instead of raising errors.
- Added a LazyOpenStream
- Added an AppendStream to stream over multiple stream one after the other.
- Updated the
detach()
method to return the underlying stream resource ornull
if it does not wrap a resource. - Multiple fixes for how streams behave when the underlying resource is detached
- Do not clear statcache when a stream does not have a 'uri'
- Added a fix to LimitStream
- Added a condition to ensure that functions.php can be required multiple times