12 KiB
12 KiB
Change Log
Unreleased
0.13.0 -- 2024-02-25
Breaking changes
- Bump
nixtov0.28. Asnixis exposed in the public API, this is a breaking change. (#176)
Bugfixes
- Fix a panic that would occur when a task is scheduled in an event callback. (#172)
0.12.4 -- 2024-01-15
Additions
calloopis now supported for Windows. (#168)- Add the
signalsfeature todocs.rs. (#166)
Bugfixes
- Fix a borrow error that can occur while using the executor. (#165)
0.12.3 -- 2023-10-10
Additions
TokenandRegistrationTokenare now invalidated when the event source they represent is removed from the event loop.- Implement
AsRawFdandAsFdforEventLoop<'l, Data>
Bugfixes
- Fix an issue, where id-reuse could execute a PostAction on a newly registered event source
0.12.2 -- 2023-09-25
Bugfixes
- Fix an issue where the
Genericevent source would try to unregister its contents from the event loop after a failed registration. - Fix an issue where the
EventLoopwould panic when processing aPostAction::Removefrom an event source with subsources.
0.12.1 -- 2023-09-19
Bugfixes
- Fix
EventSource::before_handle_events()being erroneously give an iterator over synthetic events instead of real events
0.12.0 -- 2023-09-11
Breaking changes
- Bump MSRV to 1.63
- Make signals an optional feature under the
signalsfeatures. - Replace the
nixcrate with standard library I/O errors and therustixcrate. pre_runandpost_runonEventSourcehave been replaced withbefore_sleepandbefore_handle_events, respectively. These are now opt-in through theNEEDS_EXTRA_LIFECYCLE_EVENTSassociated constant, and occur at slightly different times to the methods they are replacing. This allows greater compatibility with Wayland based event sources.
0.11.0 -- 2023-06-05
Bugfixes
- Fixed a crash due to double borrow when handling pre/post run hooks
- Fixes a panic that can occur when large
Durations are passed toTimer::from_duration. - Replace the
sysmodule with thepollingcrate.
Additions
- With the
block_onfeature enabled, theEventLoopmethod now has ablock_onmethod that runs a future to completion on the event loop.
Breaking changes
- Bump MSRV to 1.56
- Breaking: The
TransientSourceis now an opaque type. It provides API methods for removing or replacing the wrapped source. This mitigates a potential leak of registration data if the TransientSource is replaced by direct assignment in a parent source. - Breaking:
Timer::current_deadlinereturnsOption<Instant>, so that it can returnNonein the event of an overflow. - Breaking: Use
AsFdinstead ofAsRawFd/RawFd.
0.10.2 -- 2022-11-08
Bugfixes
- The return value of
LoopHandle::insert_idleno longer borrows theLoopHandle.
0.10.1 -- 2022-06-20
Additions
- The
Channelnow has proxy methods forReceiver::recvandReceiver::try_recv - Enable support for
target_os = "android"
0.10.0 -- 2022-05-06
- Breaking: Calloop's internal storage is now backed by a
slotmap. As a result theRegistrationTokenis nowCopy+Clone, and the low-level registration API ofPollis altered in a breaking way. MSRV is bumped to 1.49. - Breaking:
generic::Fdadapter is removed, as since that rust versionRawFdimplementsAsRawFd, allowing it to be used directly inGeneric. - Breaking: The
EventSourcetrait has a new associated typeError. This determines the type of the error variant returned byEventSource::process_events(). It must be convertible intoBox<dyn std::error::Error + Sync + Send>. - Breaking: All library-provided event sources now have their own error types for the
associated
Errortype on theEventSourcetrait. - Breaking: Many API functions now use Calloop's own error type (
calloop::Error) instead ofstd::io::Erroras the error variants of their returned results. - Breaking: The
Timerevent source has been completely reworked and is now directly driven by calloop polling mechanism instead of a background thread. Timer multiplexing is now handled by creating multipleTimers, and self-repeating timers is handled by the return value of the associated event callback. - Breaking: The minimum supported Rust version is now 1.53.0
- Introduce
EventLoop::try_new_high_precision()for sub-millisecond accuracy in the event loop - The
PingSourceevent source now uses aneventfdinstead of a pipe on Linux.
0.9.2 -- 2021-12-27
Additions
- Introduce the methods
pre_run()andpost_run()toEventSource, allowing event sources to do preparations before entering a run/dispatch session, and cleanup afterwards. They have default implementations doing nothing.
0.9.1 -- 2021-08-10
- Update
nixdependency to 0.22
0.9.0 -- 2021-06-29
Breaking changes
- MSRV is now 1.41
- The
futuresmodule now has a proper error type forScheduler::schedule() - The return type of
EventSource::process_events()is nowio::Result<PostAction>allowing the sources to directly request the event loop to reregister/disable/destroy them. - The
Tokencreation mechanism is now driven by aTokenFactory, that dynamically generates new unique token for sub-sources. Following for this if you create a new event source that is not built by composing the ones provided by calloop, you need to check if theTokenprovided toprocess_eventsis the same as the one you created when (re)registering your source. If you delegateprocess_eventsto a sub-source, you no longer need to check thesub_idbefore, instead the source you are delegating to is responsible to to this check.
Bugfixes
- Cancelling a timeout no longer prevents later timeouts from firing.
0.8.0 -- 2021-05-30
Breaking changes
- The
Dispatchertype no longer has the closure type within its type parameters, but instead now has an explicit lifetime parameter, as well as the source typeSand the event loopDatatype. This allows the type to be explicitly named and stored into an other struct.
Additions
Tokennow has a methodwith_sub_id()that returns a copy of the token but with the givensub_id.
0.7.2 -- 2021-02-09
Changes
EventLoop::run()now acceptsInto<Option<Duration>>, likeEventLoop::dispatch()
Bugfixes
- The
Pingevent source now automatically disables itself when its sending end is dropped, preventing to always be considered readable (which caused a busy-loop). This also fixes a similar behavior ofExecutorandChannel, which usePinginternally.
0.7.0 -- 2020-10-13
Breaking Changes
- The return type for
LoopHandle::insert_sourcewas renamed asRegistrationTokenand can be used in{enable,disable,update,remove,kill}just like before. - Allow non-
'staticevent sources and callbacks, so they can hold references to other values.LoopHandle::with_sourcewas removed. To achieve the same behaviour, use aDispatcherand register it via theLoopHandle::register_dispatcher. TheEventSourcewill be available usingDispatcher::as_source_{ref,mut}.LoopHandle::removedoesn't return the event source any more. To achieve the same behaviour, use aDispatcherand register it via theLoopHandle::register_dispatcher. After removing theEventSourcewithLoopHandle::remove, you will be able to callDispatcher::into_source_innerto get ownership of theEventSource.LoopHandle::register_dispatchercan be used in place ofLoopHandle::insert_sourcewhen the source needs to be accessed after its insertion in the loop.
Interestis changed into a struct to allow empty interest queries
Additions
- Introduce a futures executor as a new event source, behind the
executorcargo feature. - Introduce the
LoopHandle::adapt_iomethod for creatingAsync<F>adapters to adapt IO objects for async use, powered by the event loop.
0.6.5 -- 2020-10-07
Fixes
- Channel now signals readinnes after the event has actually been sent, fixing a race condition where the event loop would try to read the message before it has been written.
0.6.4 -- 2020-08-30
Fixes
- Fix double borrow during dispatch when some event source is getting removed
0.6.3 -- 2020-08-27
Aditions
- Add support for
openbsd,netbsd, anddragonfly. InsertError<E>now implementsstd::error::Error.
Changes
- Allow non-
'staticdispatchData.Datais passed as an argument to thecallbacks while dispatching. This change allows definingDatatypes which can hold references to other values. dispatchnow will retry onEINTR.
0.6.2 -- 2020-04-23
- Update the README and keywords for crates.io
0.6.1 -- 2020-04-22
- Introduce
LoopHandle::killto allow dropping a source from within its callback
0.6.0 -- 2020-04-22
- Drop the
miodependency - Breaking Change: Significantly rework the
calloopAPI, notably:- Event sources are now owned by the
EventLoop - Users can now again set the polling mode (Level/Edge/OneShot)
- Event sources are now owned by the
- Introduce the
Pingevent source
0.5.2 -- 2020-04-14
channel::Channelis nowSend, allowing you to create a channel in one thread and sending its receiving end to an other thread for event loop insertion.
0.5.1 -- 2020-03-14
- Update
mioto0.7
0.5.0 -- 2020-02-07
- Update to 2018 edition
- Update
nixdependency to0.17 - Breaking Update
miodependency to0.7.0-alpha.1. The API ofcalloopfor custom event sources significantly changed, and the channel and timer event sources are now implemented incallooprather than pulled frommio-extras.
0.4.4 -- 2019-06-13
- Update
nixdependency to0.14
0.4.3 -- 2019-02-17
- Update
miodependency - Update
nixdependency
0.4.2 -- 2018-11-15
- Implement
DebugforInsertError.
0.4.1 -- 2018-11-14
- Disable the
sources::signalmodule on FreeBSD so that the library can be built on this platform.
0.4.0 -- 2018-11-04
- Breaking Use
mio-extrasinstead ofmio-morewhich is not maintained. - Breaking Reexport
miorather than selectively re-exporting some of its types. - Add methods to
Genericto retrive the innerRcand construct it from anRc - Breaking
LoopHandle::insert_sourcenow allows to retrieve the source on error.
0.3.2 -- 2018-09-25
- Fix the contents of
EventedRawFdwhich was erroneously not public.
0.3.1 -- 2018-09-25
- introduce
EventedRawFdas a special case for theGenericevent source, for when you really have to manipulate raw fds - Don't panic when the removal of an event source trigger the removal of an other one
0.3.0 -- 2018-09-10
- Fixed a bug where inserting an event source from within a callback caused a panic.
- [breaking] Erase the
Datatype parameter fromSourceandIdle, for improved ergonomics.
0.2.2 -- 2018-09-10
- Introduce an
EventLoop::runmethod, as well as theLoopSignalhandle allowing to wakeup or stop the event loop from anywhere.
0.2.1 -- 2018-09-01
- Use
FnOncefor insertion in idle callbacks.
0.2.0 -- 2018-08-30
- [breaking] Add a
&mut shared_dataargument toEventLoop::dispatch(..)to share data between callbacks.
0.1.1 -- 2018-08-29
Genericevent source for wrapping arbitraryEventedtypes- timer event sources
- UNIX signal event sources
- channel event sources
0.1.0 -- 2018-08-24
Initial release