|
| 1 | +# Event Loop Interopability |
| 2 | + |
| 3 | +The purpose of this proposal is to provide a common interface for event loop |
| 4 | +implementations. This will allow libraries and components from different |
| 5 | +vendors to operate in an event driven architecture, sharing a common event |
| 6 | +loop. |
| 7 | + |
| 8 | +## Why Bother? |
| 9 | + |
| 10 | +Some programming languages, such as Javascript, have an event loop that is |
| 11 | +native to the execution environment. This allows package vendors to easily |
| 12 | +create asynchronous software that uses this native event loop. Although PHP |
| 13 | +is historically a synchronous programming environment, it is still possible |
| 14 | +to use asynchronous programming techniques. Using these techniques, package |
| 15 | +vendors have created PHP event loop implementations that have seen success. |
| 16 | + |
| 17 | +However, as these event loop implementations are from package vendors, it |
| 18 | +is not yet possible to create event driven software components that are |
| 19 | +independent of the underlying event loop implementation. By creating a |
| 20 | +common interface for an event loop, interoperability of this nature will |
| 21 | +be possible. |
| 22 | + |
| 23 | +## Goals |
| 24 | + |
| 25 | +The functionality exposed by this interface should include the ability to: |
| 26 | + |
| 27 | +- Watch input streams for available data |
| 28 | +- Watch output streams for the ability to perform non-blocking write operations |
| 29 | +- Run single and periodic timers |
| 30 | +- Listen for signals |
| 31 | +- Defer the execution of callables |
| 32 | + |
| 33 | +## Contributors |
| 34 | + |
| 35 | +* [Aaron Piotrowski](https://github.com/trowski) |
| 36 | +* [Andrew Carter](https://github.com/AndrewCarterUK) |
| 37 | +* [Bob Weinand](https://github.com/bwoebi) |
| 38 | +* [Cees-Jan Kiewiet](https://github.com/WyriHaximus) |
| 39 | +* [Christopher Pitt](https://github.com/assertchris) |
| 40 | +* [Niklas Keller](https://github.com/kelunik) |
| 41 | +* [Stephen M. Coakley](https://github.com/coderstephen) |
0 commit comments