eventcore/README.md
2017-12-17 22:17:40 +01:00

71 lines
2.7 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/).
[![DUB Package](https://img.shields.io/dub/v/eventcore.svg)](https://code.dlang.org/packages/eventcore)
[![Posix Build Status](https://travis-ci.org/vibe-d/eventcore.svg?branch=master)](https://travis-ci.org/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.077.1
- DMD 2.076.1
- DMD 2.075.1
- DMD 2.074.1
- DMD 2.073.2
- DMD 2.072.2
- DMD 2.071.2
- LDC 1.6.0
- LDC 1.5.0
- LDC 1.4.0
- LDC 1.3.0
- LDC 1.2.0
- LDC 1.1.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² | —
¹ 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