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/ ).
2019-10-08 19:26:26 +00:00
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/ )
2017-01-23 08:06:28 +00:00
[![DUB Package ](https://img.shields.io/dub/v/eventcore.svg )](https://code.dlang.org/packages/eventcore)
2020-10-30 07:27:26 +00:00
[![Posix Build Status ](https://api.travis-ci.com/vibe-d/eventcore.svg?branch=master )](https://travis-ci.com/github/vibe-d/eventcore)
2017-01-23 08:06:28 +00:00
[![Windows Build Status ](https://ci.appveyor.com/api/projects/status/1a9r8sypyy9fq2j8/branch/master?svg=true )](https://ci.appveyor.com/project/s-ludwig/eventcore)
2016-06-18 05:32:17 +00:00
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
---------------------|---------|---------|---------|---------|---------|---------
2017-01-25 15:14:42 +00:00
SelectEventDriver | yes | yes | yes | yes¹ | — | —
2017-01-22 10:46:48 +00:00
EpollEventDriver | yes | — | — | — | — | —
WinAPIEventDriver | — | yes | — | — | — | —
2017-01-25 15:14:42 +00:00
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
2017-02-01 11:15:58 +00:00
Supported compilers
-------------------
The following compilers are tested and supported:
2019-08-22 20:23:57 +00:00
- DMD 2.087.1
- DMD 2.086.1
- DMD 2.085.1
- DMD 2.084.1
2019-09-02 16:55:21 +00:00
- DMD 2.079.0
- LDC 1.17.0
2019-08-22 20:23:57 +00:00
- LDC 1.16.0
- LDC 1.15.0
- LDC 1.14.0
- LDC 1.13.0
2019-09-02 16:55:21 +00:00
- LDC 1.9.0
2017-02-01 11:15:58 +00:00
2016-01-16 14:47:27 +00:00
Driver development status
-------------------------
2017-11-25 10:54:05 +00:00
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² | —
2019-04-01 10:09:30 +00:00
Pipes | yes | yes | — | yes | —
Processes | yes | yes | — | yes | —
2017-01-22 10:46:48 +00:00
2017-01-22 09:43:18 +00:00
¹ Manually, by adopting the X11 display connection socket
2017-01-22 20:01:13 +00:00
2017-11-20 23:02:33 +00:00
² Systems other than Linux use a polling implementation
2016-10-16 19:06:11 +00:00
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
- Enqueued writes
2017-01-22 10:39:41 +00:00
- Use the type system to prohibit passing thread-local handles to foreign threads