' Not spew,' said Alphaglosined impatiently.

'It's S-P-E-W.

Stands for the System Propagation

of Event Wells.'

View project on GitHub

Why S.P.E.W?

S-P-E-W came about after a long bout of attempting to implement windowing for D's standard library Phobos without much support.
The sad reason behind this is because of how big and complicated windowing is. Too much weight for the desire of Phobos inclusion.


  • Generic event loop manager

    Event loops are hard topics in of themselves, as they must handle multiple inputs and outputs.
    Of these include windowing, audio, threading and of course sockets.
    On platforms such as Linux these could all be provided by seperate libraries and each have their own event loops.

  • Windowing

    Provide an abstraction above the operating systems window routines.
    On platforms such as Windows and OSX this is WinAPI and Cocoa. Otherwise (mostly for *nix) this will be X11 and friends.
    Windowing covers more than just create a window, it also must be able to take screenshots and have icons. Preferably also notifications.

  • Fast socket handling

    So, with the advent of libasync web servers have never been faster using just D and system libraries.
    Of course that doesn't leave much room for S-P-E-W unless of course we beat it using more friendly API's!

  • Timers

    A useful feature from libasync.

  • File system watching

    Another useful feature from libasync.