All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
0.2.0 - 2015-12-13
- Updated to Icicle
0.9.x
packages. - All exceptions now implement the
Icicle\Exception\Throwable
interface. - All interface names have been changed to remove the Interface suffix.
Sync\Channel
was renamed toSync\ChannelledStream
.Sync\Parcel
was renamed toSync\SharedMemoryParcel
.Worker\Worker
has been renamed toWorker\AbstractWorker
.Worker\Pool
has been renamed toWorker\DefaultPool
.Worker\WorkerFactory
is now an interface, with the default implementation asWorker\DefaultWorkerFactory
.
- Fixed bug where workers would begin throwing
BusyError
s when tasks are enqueued simultaneously or between multiple coroutines. - Fixed bugs with worker shutdowns conflicting with tasks already running.
- Fixed race conditions with pools occurring when enqueuing many tasks at once.
- Fixed issue with contexts failing without explanation if the returned value could not be serialized.
0.1.1 - 2015-11-13
- Runtime support for forks and threads can now be checked with
Forking\Fork::enabled()
andThreading\Thread::enabled()
, respectively.
- Creating a fork will now throw an
UnsupportedError
if forking is not available. - Creating a thread will now throw an
UnsupportedError
if threading is not available. - Creating a
Sync\Parcel
will now throw anUnsupportedError
if theshmop
extension is not enabled. - Creating a
Sync\PosixSemaphore
will now throw anUnsupportedError
if thesysvmsg
extension is not enabled.
- Fixed
Worker\Pool::__construct()
using$minSize
as the maximum pool size instead. Process\Process
no longer reports as running during process destruction after callingkill()
.
0.1.0 - 2015-10-28
Sync\ParcelInterface::wrap()
was removed in favor ofsynchronized()
, which now passes the value of the parcel to the callback function. The value returned by the callback will be wrapped.- Both channel interfaces were combined into
Sync\Channel
. ContextInterface
no longer extends a channel interfaceForking\Fork
andProcess\Process
now implementProcessInterface
.- Updated
icicleio/stream
to v0.4.1.
- Fixed issue with error handler in
Sync\Channel
catching unrelated errors until the next tick.
0.1.0-beta1 - 2015-09-28
First release.
- Creating and controlling multiple threads with
Threading\Thread
. - Creating and controlling multiple forked processes with
Forking\Fork
. - Workers and tasks, which can use either threading, forks, or a separate PHP process.
- A global worker pool that any tasks can be run in.
- Channels for sending messages across execution contexts.
- Parcels for storing values and objects in shared memory locations for use across contexts.
- Non-blocking mutexes and semaphores for protecting parcels.