This is a high-performance native event loop abstraction for D, focused on asynchronous I/O and GUI message integration. The API is callback (delegate) based. For a higher level fiber based abstraction, take a look at vibe.d.
| Driver | Linux | Windows | macOS | FreeBSD | Android | iOS |
|---|---|---|---|---|---|---|
| SelectEventDriver | yes | yes | yes | yes¹ | — | — |
| EpollEventDriver | yes | — | — | — | — | — |
| WinAPIEventDriver | — | yes | — | — | — | — |
| KqueueEventDriver | — | — | yes | yes¹ | — | — |
| LibasyncEventDriver | —¹ | —¹ | —¹ | —¹ | — | — |
¹ planned, but not currenly implemented
The following compilers are tested and supported:
- DMD 2.073.0
- DMD 2.072.2
- DMD 2.071.2
- DMD 2.070.2
- LDC 1.1.0
- LDC 1.0.0
| Feature | SelectEventDriver | EpollEventDriver | WinAPIEventDriver | KqueueEventDriver |
|---|---|---|---|---|
| TCP Sockets | yes | yes | — | yes |
| UDP Sockets | yes | yes | — | yes |
| USDS | yes | yes | — | yes |
| DNS | yes | yes | yes | yes |
| Timers | yes | yes | yes | yes |
| Events | yes | yes | yes | yes |
| Unix Signals | yes² | yes² | — | — |
| Files | yes | yes | yes | yes |
| UI Integration | yes¹ | yes¹ | yes | yes¹ |
| File watcher | yes² | yes² | yes | — |
| Feature | LibasyncEventDriver |
|---|---|
| TCP Sockets | — |
| UDP Sockets | — |
| USDS | — |
| DNS | — |
| Timers | — |
| Events | — |
| Unix Signals | — |
| Files | — |
| UI Integration | — |
| File watcher | — |
¹ Manually, by adopting the X11 display connection socket
² Currently only supported on Linux
- Error code reporting
- Adopting existing file descriptors (done for files)
- Enqueued writes
- Use the type system to prohibit passing thread-local handles to foreign threads