… | |
… | |
80 | that isn't them. What's worse, all the potential users of your module |
80 | that isn't them. What's worse, all the potential users of your module |
81 | are *also* forced to use the same event loop you use. |
81 | are *also* forced to use the same event loop you use. |
82 | |
82 | |
83 | AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works |
83 | AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works |
84 | fine. AnyEvent + Tk works fine etc. etc. but none of these work together |
84 | fine. AnyEvent + Tk works fine etc. etc. but none of these work together |
85 | with the rest: POE + IO::Async? No go. Tk + Event? No go. Again: if your |
85 | with the rest: POE + EV? No go. Tk + Event? No go. Again: if your module |
86 | module uses one of those, every user of your module has to use it, too. |
86 | uses one of those, every user of your module has to use it, too. But if |
87 | But if your module uses AnyEvent, it works transparently with all event |
87 | your module uses AnyEvent, it works transparently with all event models |
88 | models it supports (including stuff like IO::Async, as long as those use |
88 | it supports (including stuff like IO::Async, as long as those use one of |
89 | one of the supported event loops. It is easy to add new event loops to |
89 | the supported event loops. It is easy to add new event loops to |
90 | AnyEvent, too, so it is future-proof). |
90 | AnyEvent, too, so it is future-proof). |
91 | |
91 | |
92 | In addition to being free of having to use *the one and only true event |
92 | In addition to being free of having to use *the one and only true event |
93 | model*, AnyEvent also is free of bloat and policy: with POE or similar |
93 | model*, AnyEvent also is free of bloat and policy: with POE or similar |
94 | modules, you get an enormous amount of code and strict rules you have to |
94 | modules, you get an enormous amount of code and strict rules you have to |
… | |
… | |
837 | AnyEvent::Impl::Glib based on Glib, slow but very stable. |
837 | AnyEvent::Impl::Glib based on Glib, slow but very stable. |
838 | AnyEvent::Impl::Tk based on Tk, very broken. |
838 | AnyEvent::Impl::Tk based on Tk, very broken. |
839 | AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse. |
839 | AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse. |
840 | AnyEvent::Impl::POE based on POE, very slow, some limitations. |
840 | AnyEvent::Impl::POE based on POE, very slow, some limitations. |
841 | AnyEvent::Impl::Irssi used when running within irssi. |
841 | AnyEvent::Impl::Irssi used when running within irssi. |
|
|
842 | AnyEvent::Impl::IOAsync based on IO::Async. |
|
|
843 | AnyEvent::Impl::Cocoa based on Cocoa::EventLoop. |
842 | |
844 | |
843 | Backends with special needs. |
845 | Backends with special needs. |
844 | Qt requires the Qt::Application to be instantiated first, but will |
846 | Qt requires the Qt::Application to be instantiated first, but will |
845 | otherwise be picked up automatically. As long as the main program |
847 | otherwise be picked up automatically. As long as the main program |
846 | instantiates the application before any AnyEvent watchers are |
848 | instantiates the application before any AnyEvent watchers are |
847 | created, everything should just work. |
849 | created, everything should just work. |
848 | |
850 | |
849 | AnyEvent::Impl::Qt based on Qt. |
851 | AnyEvent::Impl::Qt based on Qt. |
850 | |
|
|
851 | Support for IO::Async can only be partial, as it is too broken and |
|
|
852 | architecturally limited to even support the AnyEvent API. It also is |
|
|
853 | the only event loop that needs the loop to be set explicitly, so it |
|
|
854 | can only be used by a main program knowing about AnyEvent. See |
|
|
855 | AnyEvent::Impl::IOAsync for the gory details. |
|
|
856 | |
|
|
857 | AnyEvent::Impl::IOAsync based on IO::Async, cannot be autoprobed. |
|
|
858 | |
852 | |
859 | Event loops that are indirectly supported via other backends. |
853 | Event loops that are indirectly supported via other backends. |
860 | Some event loops can be supported via other modules: |
854 | Some event loops can be supported via other modules: |
861 | |
855 | |
862 | There is no direct support for WxWidgets (Wx) or Prima. |
856 | There is no direct support for WxWidgets (Wx) or Prima. |