- Disable some optimizations that, in rare conditions, can cause race conditions causing notifications to be dropped. (#139)
- Ensure the portable-atomic feature is set properly. (#134)
- Update
portable-atomic-util
to v0.2.0. (#132) - Document the std feature. (#134)
- Add a
loom
implementation. This feature is unstable and is not semver-supported. (#126) - Make the panic message for polling the
EventListener
after it has completed more clear. (#125)
- Make
StackSlot
Sync
. (#121)
- Make
StackSlot
Send
. (#119)
- Breaking: Rework the API to afford better usage. (#105)
- The heap-based API of the v2.x line is back.
- However, there is a stack-based API as an alternative.
- Add a way to get the total number of listeners. (#114)
- Relax MSRV to 1.60. (#110)
- Avoid spinning in
wait_deadline
. (#107)
- Fix a use-after-move error after an
EventListener
is assigned to listen to anotherEvent
. (#101)
- Breaking: Fix a footgun in the
EventListener
type.EventListener::new()
now no longer takes an&Event
as an argument, andEventListener::listen()
takes the&Event
as an argument. Hopefully this should prevent.await
ing on a listener without making sure it's listening first. (#94)
- Implement
UnwindSafe
andRefUnwindSafe
forEventListener
. This was unintentionally removed in version 3 (#96).
- Emphasize that
listen()
must be called onEventListener
in documentation. (#90) - Write useful output in
fmt::Debug
implementations. (#86)
- Use the
parking
crate instead of threading APIs (#27) - Bump MSRV to 1.59 (#71)
- Breaking: Make this crate
no_std
-compatible ondefault-features = false
. (#34) - Create a new
event-listener-strategy
crate for abstracting over blocking/non-blocking operations. (#49) - Breaking: Change the
EventListener
API to be!Unpin
. (#51) - Enable a feature for the
portable-atomic
crate. (#53) - Breaking: Add a
Notification
trait which is used to enable tagged events. (#52) - Add an
is_notified()
method toEvent
. (#48) - Breaking: Make it so
notify()
returns the number of listeners notified. (#57)
- Fix fence on x86 and miri.
- Fix stacked borrows violation when
-Zmiri-tag-raw-pointers
is enabled. (#24)
- Replace spinlock with a mutex.
- Add
EventListener::discard()
.
Event::new()
is now a const fn.
- Fix a bug in
List::insert()
that was causing deadlocks.
- Optimization: use a simple spinlock and cache an
Entry
for less allocation.
- Optimization: don't initialize
Inner
when notifyingEvent
.
- Implement
UnwindSafe
/RefUnwindSafe
forEvent
/EventListener
.
- Always keep the last waker in
EventListener::poll()
.
- Add
EventListener::same_event()
.
- Add
EventListener::listens_to()
.
- Replace
usize::MAX
withstd::usize::MAX
.
- Remove
Event::notify_one()
andEvent::notify_all()
. - Add
Event::notify_relaxed()
andEvent::notify_additional_relaxed()
. - Dropped notified
EventListener
now notifies one or one additional listener.
- Add
Event::notify_additional()
.
- Change a
Relaxed
load toAcquire
load.
- Fix a bug in
EventListener::wait_timeout()
.
- Add
EventListener::notify()
.
- Reduce the complexity of
notify_all()
from O(n) to amortized O(1). - Fix a bug where entries were notified in wrong order.
- Add tests.
- Initial version.