76 lines
3.1 KiB
Markdown
76 lines
3.1 KiB
Markdown
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/).
|
|
|
|
The API documentation is part of vibe.d:
|
|
- [`EventDriver`](https://vibed.org/api/eventcore.driver/EventDriver)
|
|
- [`eventDriver`](https://vibed.org/api/eventcore.core/eventDriver)
|
|
- [Experimental `eventcore.socket`](https://vibed.org/api/eventcore.socket/)
|
|
|
|
[![DUB Package](https://img.shields.io/dub/v/eventcore.svg)](https://code.dlang.org/packages/eventcore)
|
|
[![Posix Build Status](https://api.travis-ci.com/vibe-d/eventcore.svg?branch=master)](https://travis-ci.com/github/vibe-d/eventcore)
|
|
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/1a9r8sypyy9fq2j8/branch/master?svg=true)](https://ci.appveyor.com/project/s-ludwig/eventcore)
|
|
|
|
|
|
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
|
|
|
|
|
|
Supported compilers
|
|
-------------------
|
|
|
|
The following compilers are tested and supported:
|
|
|
|
- DMD 2.087.1
|
|
- DMD 2.086.1
|
|
- DMD 2.085.1
|
|
- DMD 2.084.1
|
|
- DMD 2.079.0
|
|
- LDC 1.17.0
|
|
- LDC 1.16.0
|
|
- LDC 1.15.0
|
|
- LDC 1.14.0
|
|
- LDC 1.13.0
|
|
- LDC 1.9.0
|
|
|
|
|
|
Driver development status
|
|
-------------------------
|
|
|
|
Feature \ EventDriver | Select | Epoll | WinAPI | Kqueue | Libasync
|
|
----------------------|--------|-------|---------|---------|----------
|
|
TCP Sockets | yes | yes | yes | yes | —
|
|
UDP Sockets | yes | 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 | yes² | —
|
|
Pipes | yes | yes | — | yes | —
|
|
Processes | yes | yes | — | yes | —
|
|
|
|
¹ Manually, by adopting the X11 display connection socket
|
|
|
|
² Systems other than Linux use a polling implementation
|
|
|
|
|
|
### Open questions
|
|
|
|
- Error code reporting
|
|
- Enqueued writes
|
|
- Use the type system to prohibit passing thread-local handles to foreign threads
|