EventCore
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.
Supported drivers and operating systems
Driver |
Linux |
Windows |
macOS |
FreeBSD |
Android |
iOS |
SelectEventDriver |
yes |
yes |
yes¹ |
yes¹ |
— |
— |
EpollEventDriver |
yes |
— |
— |
— |
— |
— |
WinAPIEventDriver |
— |
yes |
— |
— |
— |
— |
KqueueEventDriver |
— |
— |
yes¹ |
yes¹ |
— |
— |
LibasyncEevnetDriver |
—¹ |
—¹ |
—¹ |
—¹ |
— |
— |
¹ planned, but not currenly implemented
Driver development status
Feature |
SelectEventDriver |
EpollEventDriver |
WinAPIEventDriver |
KqueueEventDriver |
TCP Sockets |
yes |
yes |
— |
yes |
UDP Sockets |
yes |
yes |
— |
yes |
USDS |
yes |
yes |
— |
yes |
DNS |
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 |
— |
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
Open questions
- 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