LibSync Version 0.2.0 Released

LibSync version 0.2.0 has been released with the following change notes:

Added

  • Added the try_send method to the crossbeam/mpmc/tokio/array_queue/Sender object.

  • A crossbeam/mpmc/tokio/seg_queue module has been added with channel, Sender and Receiver implementations.

  • Added the std/return_store module with ReturnStoreState, BaseReturnStore, BaseReturner structs and the Returns trait directly under it and a tokio sub-module with ReturnStore and Returner structs.

  • Added “is_full”, “has_no_receivers” and “take” methods to BoundedSendError.

  • Added a tokio_helpers module at the base with a SemaphoreController object.

  • Added a clone implementation to the crossbeam/mpmc/tokio/seg_queue Receiver object.

  • Added try_lock_set_notify_one and try_lock_set_notify_all methods to the std Notifier object.

  • Added feature attributes to the std and tokio module declarations under the crossbeam/mpmc module.

  • Added a feature attribute to the tokio module declaration under the std/return_store module.

  • Added PipelineMessageCounter, IncrementedPipelineMessageCounter and CountedPipelineMessage structs to the std module.

  • Added CountedPipelineMessageMut to the std module.

  • Added an instance_count method to std/PipelineMessageCounter.

  • Added a has_messages method to std/IncrementedPipelineMessageCounter.

  • Added an option constructor to std/CountedPipelineMessageMut.

  • Added methods take, take_incremented and take_both to the CountedPipelineMessage object.

  • Added methods take_incremented and take_both to the CountedPipelineMessageMut object.

  • Added traits PipelineMessageContainer, PipelineMessageContainerMut and PipelineMessageContainerFactory to the std module.

  • Added structs PlainPipelineMessageContainer, PlainPipelineMessageContainerMut, PlainPipelineMessageContainerFactory, CountedPipelineMessageContainer, CountedPipelineMessageContainerMut and CountedPipelineMessageContainerFactory to the std module.

  • Added wait_fn, wait_timeout_fn, lock and try_lock methods to Notifier and updated other methods in the struct implementation.

  • Added NotifyingReturnStoreState, NotifyingReturnStore and NotifyingReturner to the std/return_store module.

  • Added PolledReturnStore and PolledReturner to the std/return_store module.

  • Added io_channels modules to the crossbeam::mpmc::tokio::array_queue and seg_queue modules. These modules contain IOClient and IOServer structs and io_channels functions. Additionally the array_queue sub-module contains an io_channel_both function.

  • Added a package.metadata.docs.rs to the cargo.toml file.

Changed

  • Corrected the spellings of various methods and struct fields.

  • Both channel sides now keep their own sender and receiver counts.

  • Partially cleaned up the code.

  • In crossbeam/mpmc/tokio/array_queue/Recevier recv_notify_one has been changed to try_recv, recv_or_wait has been changed to recv and a drop implementation has been added.

  • Improved handling of waiting and potentially waiting tasks when sides of channels are dropped.

  • Replaced the ThreadRng oriented implementation of state id generation of the BaseReturnStore with an incrementation centric one.

  • Disabled the count_waiting_senders_and_receivers feature.

  • Re-implemented the crossbeam/mpmc/tokio/array_queue Receiver object to now use Tokio Semaphores instead of Notify objects.

  • The std/return_store/tokio ReturnStore object now uses a SemaphoreController instead of a Notify object to manage task permits.

  • Updated the std Notifier struct level documentation.

  • Disabled NotifierWaitResult and NotifierWaitTimeoutResult in the std module and updated the methods of the Notifier object to reflect these changes.

  • Made certain that the senders and receivers Semaphores are closed when ever one side is dropped in the Crossbeam Tokio channel implementations.

  • In the crossbeam/mpmc/tokio/seg_queue/Receiver struct, the try_recv method now only forgets a receivers Semaphore permit if it has successfully received a value.

  • The crossbeam/mpmc/tokio/array_queue/Sender object now manually implements Clone.

  • The BoundedSendError, ReceiveError, TimeoutSendError and TimeoutReceiveError enums now implement the Debug and Display traits.

  • Manually implemented Clone on the crossbeam/mpmc/tokio/seg_queue/Sender object.

  • Updated how the std/PipelineMessageCounter and the std/IncrementedPipelineMessageCounter objects handle message counts.

  • Made the as_ref and as_mut methods public in the CountedPipelineMessageMut object.

  • Changed the FAILED_TO_UNLOCK_MUTEX_MESSAGE static string slice message in the std/notifier module.

  • Conditionally implemented std::fmt::Debug on SharedDetails, BoundedSharedDetails, crossbeam::mpmc::tokio::array_queue::Sender, Receiver, crossbeam::mpmc::tokio::array_queue::io_channels::IOClient and IOServer for the same-named objects in the crossbeam::mpmc::tokio::seg_queue sub-module.

  • Moved the array_queue and seg_queue sub-modules under the crossbeam/mpmc module to the new crossbeam/mpmc/base sub-module.

  • Renamed receivers_notifier to receivers_notifier_ref and senders_notifier to senders_notifier_ref in the moved Sender And Receivers object implementation definitions and updated the relevant parts of the project.

  • Renamed queue to queue_ref in SharedDetails and updated the relevant parts of the project.

  • Updated the copyright year in the LISENSE-MIT file.

  • Updated the readme

  • Updated the crossbeam dependency to version 0.8.4.

  • Updated the tokio dependency to version 1.44.2.

  • Updated the delegate dependency to version 0.13.3.

  • Updated the futures dependency to version 0.3.31.

  • Updated the documentation

Removed

  • SenderTrait, BoundedSenderTrait and ReceiverTrait have been removed.

Fixed

  • Fixed the feature attribute on the std module.