Revision history for Async-Selector 1.03 2013/02/21 Now watchers are free of cyclic refs even if they are included in their watcher callback closures. This is because watcher callbacks are now kept in Selector object along with the watchers. Now that a watcher does not have the callback, call() method is removed from Watcher. call() is public but undocumented, so users should not be using it. Change some private method names from camelCase to snake_case. Documented methods are not changed. 1.02 2013/02/11 Add Async::Selector::Aggregator module. This module aggregates multiple watchers and treats them as a single watcher. The aggregator can cancel all its watchers at once. Add Test::Memory::Cycle to build-requires. Cyclic references are tested with it. Async::Selector::Watcher now undefs its callback when cancel()ed. This greatly reduces the risk of cyclic references and memory leak. 1.011 2012/12/24 Minor fixes in POD. 1.01 2012/12/24 select(), select_lt(), select_et(), selections(), cancel() methods are now deprecated (but can be used to maintain compatibility). They are replaced by watch API now. See "COMPATIBILITY" for details. Bug fix: a selection callback did not fire when triggered if its condition input was undef. 0.02 2012/07/29 Modify the behavior of select() method with no resource selection. Before: It accepts the (no) selection without warning. After : It ignores (rejects) the selection without warning. Because a selection without selected resource will never be removed except that the user explicitly cancel() it, it easily causes memory leak. To avoid this danger, selection with no resource is explicitly rejected. In this case, select() returns undef. 0.01 2012/07/17 First version.