2016-01-16 14:47:27 +00:00
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 ](https://vibed.org/ ).
2016-06-18 05:32:17 +00:00
[![Build Status ](https://travis-ci.org/vibe-d/eventcore.svg?branch=master )](https://travis-ci.org/vibe-d/eventcore)
2016-01-16 14:47:27 +00:00
Supported drivers and operating systems
---------------------------------------
2017-01-22 10:46:48 +00:00
Driver | Linux | Windows | macOS | FreeBSD | Android | iOS
---------------------|---------|---------|---------|---------|---------|---------
SelectEventDriver | yes | yes | yes¹ | yes¹ | — | —
EpollEventDriver | yes | — | — | — | — | —
WinAPIEventDriver | — | yes | — | — | — | —
KqueueEventDriver | — | — | yes¹ | yes¹ | — | —
2017-01-22 20:01:13 +00:00
LibasyncEventDriver | — ¹| — ¹| — ¹| — ¹| — | —
2016-06-24 12:22:08 +00:00
¹ planned, but not currenly implemented
2016-01-16 14:47:27 +00:00
Driver development status
-------------------------
2016-10-19 12:29:18 +00:00
Feature | SelectEventDriver | EpollEventDriver | WinAPIEventDriver | KqueueEventDriver
-----------------|-------------------|------------------|-------------------|------------------
2017-01-22 19:55:16 +00:00
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
2017-01-22 08:46:31 +00:00
Unix Signals | yes² | yes² | — | —
2017-01-22 19:55:16 +00:00
Files | yes | yes | yes | yes
2017-01-22 20:01:13 +00:00
UI Integration | yes¹ | yes¹ | yes | yes¹
2017-01-22 08:46:31 +00:00
File watcher | yes² | yes² | yes | —
2016-10-07 17:40:18 +00:00
2017-01-22 10:46:48 +00:00
Feature | LibasyncEventDriver
-----------------|---------------------
TCP Sockets | —
UDP Sockets | —
USDS | —
DNS | —
Timers | —
Events | —
Unix Signals | —
Files | —
UI Integration | —
File watcher | —
2017-01-22 09:43:18 +00:00
¹ Manually, by adopting the X11 display connection socket
2017-01-22 20:01:13 +00:00
2016-10-16 19:06:11 +00:00
² Currently only supported on Linux
2016-10-16 12:30:52 +00:00
2017-01-22 10:39:41 +00:00
### Open questions
2016-10-07 17:40:18 +00:00
- Error code reporting
2017-01-22 02:09:55 +00:00
- Adopting existing file descriptors (done for files)
2016-10-07 17:40:18 +00:00
- Enqueued writes
2017-01-22 10:39:41 +00:00
- Use the type system to prohibit passing thread-local handles to foreign threads