Skip to content
Sönke Ludwig edited this page May 24, 2016 · 1 revision

This is a work-in-progress rundown of the development plan for the upcoming months. Some points and time estimations are still missing and will be added bit by bit.

  • Split out the individual sub packages of vibe.d as individual libraries. The new libraries will be versioned independently and will each start at version 1.0.0. In the process of moving them into their own repository, they will get a deep refactoring, ruling out any design quirks that may be left from earlier times.
    • vibe.core
      • Replace all heap allocated event object classes with reference counted structs
      • Review the stream interfaces
      • Remove the driver layer and instead built on a single abstraction layer that is built as a thin "proactor" layer on top of the OS APIs
        • This requires a final decision on how to go about the event abstraction layer - there is libasync, eventcore and a yet to be done proposal by chmike to choose from. Top priority for vibe.d is performance - eventcore is about 3 times faster than what was achieved using libevent/libasync, and that should be the baseline for any solution.
    • vibe.http
      • Integrate HTTP/2.0 support
      • Add an intermediate layer that allows processing requests without storing date (callback or range based)
      • Agressively review per-request memory use and allocations
    • The rest of the sub packages will be moved out as-is, major refactorings will be done as part of a 2.0.0 version.