956978cc79
It could happen that the socket FD got reused before the connection callback was cleared. This in turn could result in the new connection callback to get overwritten with null. |
||
---|---|---|
examples | ||
lib | ||
source/eventcore | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
appveyor.yml | ||
dub.sdl | ||
README.md | ||
travis-ci.sh |
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¹ | — | — |
LibasyncEventDriver | —¹ | —¹ | —¹ | —¹ | — | — |
¹ 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 | 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
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