Releases: amphp/file
4.0.0 Beta 1
Users of 3.x
should be able to update to 4.x
without code changes unless their application did one of the following:
- Defined a custom
File
implementation - Initialized
ParallelFilesystemDriver
with a custom worker count.
Breaking Changes
This release adds a lock()
, tryLock()
, and unlock()
to the File
interface. These methods provide a non-blocking means of locking and unlocking a file.
File::lock()
: Non-blocking method to obtain a shared or exclusive lock on the file. This method must only return once the lock has been obtained.File::tryLock()
: Makes a single non-blocking attempt to obtain a shared or exclusive lock on the file. Returns true if the lock was obtained, otherwise false.File::unlock()
: Unlocks the file if the lock is currently held.
In 3.x
, the constructor of ParallelFilesystemDriver
accepted an optional WorkerPool
and a number of workers to use from that pool. In 4.x
, instead the constructor now requires only an optional LimitedWorkerPool
(a new pool is created if one is not provided). The number of workers used for opening files is determined by the value returned from LimitedWorkerPool::getWorkerLimit()
. Use a DelegateWorkerPool
if you wish to use an existing pool and limit the number of workers used from the pool to open files. In general, it is not necessary to customize the parallel filesystem driver.
Full Changelog: v3.2.0...v4.0.0-beta.1
3.2.0
What's Changed
- The parallel driver no longer reuses the global worker pool if a specific instance is not provided to the constructor. Instead, a new worker pool is created.
- The
$workerLimit
parameter to the constructor ofParallelFilesystemDriver
is now deprecated. Pass an instance ofLimitedWorkerPool
instead.
Full Changelog: v3.1.1...v3.2.0
3.1.1
What's Changed
- Dropped support for ext-uv < 0.3.0.
- Changed the version check for ext-uv to avoid an ext-opcache bug (see amphp/http-client#365).
Full Changelog: v3.1.0...v3.1.1
3.1.0
3.0.2
3.0.1
3.0.0
Stable release compatible with AMPHP v3 and fibers! 🎉
As with other libraries compatible with AMPHP v3, most cases of parameters or returns of Promise<ResolutionType>
have been replaced with ResolutionType
.
- Renamed
BlockingDriver
toBlockingFilesystemDriver
- Renamed
EioDriver
toEioFilesystemDriver
- Renamed
ParallelDriver
toParallelFilesystemDriver
- Renamed
StatusCachingDriver
toStatusCachingFilesystemDriver
- Renamed
UvDriver
toUvFilesystemDriver
- Renamed
Amp\File\Sync\AsyncFileMutex
toAmp\File\FileMutex
- Added
?Cancellation
as first parameter ofFile::read()
- Added
File::isSeekable()
- Removed
File::SEEK_SET
,File::SEEK_CUR
, andFile::SEEK_END
- Added
Amp\File\Whence
for seeking instead
3.0.0 Beta 6
- Fixed compatibility with
v2.0
ofamphp/byte-stream
by updatingFile
implementations to also implementTraversable
.
3.0.0 Beta 5
- Fixed
PendingOperationError
being thrown after several seek-then-write operations inUvFile
andEioFile
.
3.0.0 Beta 4
- Added compatibility with Revolt v1.x
- Fixed (removed) file truncation in append modes with
ext-eio
- Fixed tell behavior in blocking implementation for append modes
- Fixed automatic closing of files with
ext-uv
- Fixed exception message in
BlockingFilesystemDriver::write