PackageTrack
Sign in Get early access

amphp/sync

Non-blocking synchronization primitives for PHP based on Amp and Revolt.

v2.3.0 67M downloads/mo #345 most downloaded on Packagist amphp/sync

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Release timing varies

gaps range from 6 weeks to 1.5 years

Some releases are documented

notes for 4 of 12 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

18 releases · first in 2017

0 releases in the last 12 months

see the full history below

Release timeline

18 releases · Nov 2017 to Aug 2024
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 18
  1. v2.3.0 03 Aug 2024
    Release notes

    What's Changed

    • Fixed posix semaphore blocking thread when there is no space left on device by @azjezz in #29
    • Added a buffer size parameter to createChannelPair() to specify a number of items which may be buffered in memory before back pressure is applied.

    New Contributors

    Full Changelog: v2.2.0...v2.3.0

    Open source →
    Release notes

    2.3.0 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. v2.2.0 12 Mar 2024
    Release notes

    What's Changed

    Full Changelog: v2.1.0...v2.2.0

    Open source →
    Release notes

    2.2.0

    Compare

    Choose a tag to compare

    Open source →
  3. v2.1.0 19 Aug 2023
    Release notes

    What's Changed

    • Added re-entry support to synchronized() by @kelunik in #26
    • Fixed error handling in SharedMemoryParcel
    • Fixed a typo by @thgs in #25

    New Contributors

    • @thgs made their first contribution in #25

    Full Changelog: v2.0.0...v2.1.0

    Open source →
    Release notes

    2.1.0

    Compare

    Choose a tag to compare

    Open source →
  4. v2.0.0 30 Dec 2022
    Release notes
    • PHP 8.1 now required.
    • Channel now extends Amp\Closable, which adds an onClose() method to attach a closure that is invoked when the channel closes.
    Open source →
    Release notes

    This release moves Channel and Parcel interfaces from amphp/parallel to this library.

    • Channel allows two way communicate between execution contexts, such as two coroutines or two processes.
    • Parcel allows sharing a value across execution contexts, with mutually-exclusive access to modifying that value using Parcel::synchronized().
    Open source →
    Release notes
    • Add compatibility with Revolt v1.x
    Open source →
    Release notes
    • Update to revolt/event-loop v0.2.x (#20)
    Open source →
    Release notes

    Note: This is a pre-release, there might be breaking changes in the final stable version.

    • Major release avoiding promises in favor of fibers supported by Revolt
    • ConcurrentIterator functions have been removed and will be available as operators in amphp/pipeline
    • FileMutex has been removed, as a better implementation ships as part of amphp/file
    • Removed ThreadedMutex and ThreadedSemaphore
    • Removed Lock::getId()
    • Barrier::await supports cancellation now
    • synchronized accepts any Semaphore now instead of a Mutex only
    Open source →
    Release notes

    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.

    Changes from 1.x

    • ConcurrentIterator functions have been removed are now available as methods on Pipeline in amphp/pipeline
    • FileMutex has been removed, as a better implementation ships as part of amphp/file
    • Removed ThreadedMutex and ThreadedSemaphore
    • Removed Lock::getId()
    • Barrier::await supports cancellation now
    • synchronized accepts any Semaphore now instead of a Mutex only
    • Added Channel from amphp/parallel, which allows two way communicate between execution contexts, such as two coroutines or two processes. Channel has been modified to extend Closable
    • Also added Parcel from amphp/parallel, which allows sharing a value across execution contexts with mutually-exclusive access to modifying that value using Parcel::synchronized().
    • Added createChannelPair() function which returns a pair of connected Channel objects.
    • Added RateLimitingSemaphore which releases locks after a given time elapses.
    • Added StaticKeySemaphore, analogous to StaticKeyMutex

    Changes from 2.0.0 Beta 6

    • Added RateLimitingSemaphore which releases locks after a given time elapses.
    • Added StaticKeySemaphore, analogous to StaticKeyMutex
    Open source →
    Release notes
    • Fixed return type of createChannelPair() to use the interface
    • Fixed close of channels returned from createChannelPair()
    • Release locks synchronously instead of asynchronously on explicit release() calls
    Open source →
    Release notes

    2.0.0

    Compare

    Choose a tag to compare

    Open source →
  5. v2.0.0-beta.6 07 Nov 2022 pre-release

    Nothing published for this version

  6. v2.0.0-beta.5 13 Jul 2022 pre-release

    Nothing published for this version

  7. v2.0.0-beta.4 03 Apr 2022 pre-release

    Nothing published for this version

  8. v2.0.0-beta.3 06 Feb 2022 pre-release

    Nothing published for this version

  9. v2.0.0-beta.2 03 Feb 2022 pre-release

    Nothing published for this version

  10. v2.0.0-beta.1 06 Dec 2021 pre-release

    Nothing published for this version

  11. v1.4.2 25 Oct 2021

    Nothing published for this version

  12. v1.4.1 25 Oct 2021

    Nothing published for this version

  13. v1.4.0 07 May 2020

    Nothing published for this version

  14. v1.3.0 08 Nov 2019

    Nothing published for this version

  15. v1.2.0 26 Sep 2019

    Nothing published for this version

  16. v1.1.0 24 Sep 2019

    Nothing published for this version

  17. v1.0.1 29 Nov 2017

    Nothing published for this version

  18. v1.0.0 29 Nov 2017

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive