Releases: neosmart/rsevents-extra
Releases · neosmart/rsevents-extra
rsevents-extra 0.2.1
- A new public method
Semaphore::count()
has been added to query the available concurrency without affecting the state of the semaphore. - Cross-core coherence and instruction ordering was previously insufficiently
guaranteed; this is fixed in this release by directly usingOrdering::Acquire
andOrdering::Release
instead of relying on theAutoResetEvent
(access to which is sometimes elided as an optimization) to provide those guarantees.
rsevents-extra 0.2.0
This release upgrades to the latest version (0.3.1) of rsevents
, and implements the newly updated and expanded rsevents::Awaitable
trait ((see the rsevents 0.3.x changelog for more info)[https://github.com/neosmart/rsevents/releases/tag/0.3.1]).
- The biggest feature of this release is a new
Semaphore
type, which is an attempt at modeling a truly safe semaphore for rust (something lacking from the standard library).Semaphore
is built on anrsevents
auto-reset event, and uses that under-the-hood to efficiently wait for aSemaphore
to become available when its concurrency limit has been reached. - The new
Semaphore
type attempts to bridge the "standard" usage of a sempahore wherein the concurrency count is manually incremented (when the semaphore is "released") with rust's concepts of ownership and RAII-friendly guard types. Please provide feedback on your usage ofSemaphore
so we can refine the API together! - The
rsevents_extra
types are nowstatic
friendly withconst fn new()
initializers so they can be declared and used as global/local static variables without requiring the usage oflazy_static
oronce_cell
.
rsevents-extra 0.1.0
This is the initial release of the rsevents-extra
crate, providing a home for custom synchronization types built on top of rsevents
.
Currently, there is just one synchronization type in this crate: a countdown event that allows blocking until a predetermined number of tasks/operations have completed asynchronous processing by one or more other threads in parallel.