fc96ee9050
- setTimer now starts a task to call the callback. This keeps the timer referenced and avoids issues if I/O functions are called from within the callback. - SpinLock is now also initialized in "shared static this", so that applications using "shared static this" for initialization work properly. |
||
---|---|---|
examples/bench-dummy-http-server | ||
source/vibe | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
dub.sdl | ||
README.md | ||
travis-ci.sh |
vibe.d core module
This is the designated successor of the vibe-d:core
sub package of vibe.d 0.7.x. The API is mostly compatible from a library user point of view, but the whole library has received some heavy lifting under the surface, close to a rewrite. Most classes have been replaced by reference counting structs and @safe nothrow
attributes are now used throughout the library, whenever possible. Adding @nogc
still has to be decided, because of its viral nature.
Another major design change is that instead of the previous driver model, there is now a separate, lower-level event loop abstraction (eventcore) which follows a callback based Proactor pattern. The logic to schedule fibers based on events has been pulled out of this abstraction and is now maintained as a single function, leaving to a huge improvment in terms of robustness (most issues in the previous implementation have probably never surfaced in practice, but there turned out to be lots of hidden bugs).
The implementation is mostly finished, except for final production testing and a final review of the stream API. Also, eventcore is still missing WinAPI and kqueue implementations.
Progress
Feature | State |
---|---|
Task scheduling | done |
Concurrency | done |
Streams | done (may be subject to smaller changes) |
DNS lookup | done |
TCP connections | done |
UDP connections | done |
File I/O | done |
Directory watchers | done |
ManualEvent | done |
Path/URL types | done |