Vision/2017H1

From D Wiki
Jump to: navigation, search

Meta

This document discusses the high-level vision for D with semestrial granularity. It is released in January and July.

Note: This document focuses on goals the D leadership will personally enable or make happen, or strongly believes are important for the success of the D language. Other contributions are always welcome and do not need to be necessarily aligned with this document.

H2 2016 Review

The D Language Foundation
Since 2016 we are a 501(c) public charity organization.
Since November the Foundation has granted 4 scholarships to MSc students at University "Politehnica" Bucharest.
The Foundation has a positive balance sheet from DConf 2016 and a number of speaking and training engagements. We have two years of autonomy with the current balance and expense structure.
Organization
Martin Nowak has improved the release model and integration of fixes.
Raising participation
Sebastian Wilzbach, Martin Nowak, and Vladimir Panteleev have improved automation in the process of creating, reviewing, and integrating contributions.
Scholarship recipients started contributing to the codebase
Contributions on github have declined compared to last year, as shown in this table:
Year Pull Requests Created
2011 1134
2012 1846
2013 2891
2014 2954
2015 3246
2016 3074


Safety and Memory Management
We merged DIP1000 as an opt-in feature
PR4878 is the first safe reference counted buffer of bytes. It is not general enough because it does not offer reference to its elements.
Walter Bright has fixed many bugs that allow unsafe behavior in @safe code.

H1 2017 Priorities

We have decided to focus on three overarching goals in the first six months of 2017:

1. @safety: we aim to enable large-scale uses of D with safety guarantees.

2. @nogc: Use of D without a garbage collector, most likely by using reference counting and related methods Unique/Weak references) for reclamation of resources. This task is made challenging by the safety requirement.

3. Static introspection: We believe this is an important strategic advantage of D and we should continue to improve both compiler support and library support.

All other goals are secondary or adjunct to the above. Such include:

  • Infrastructure:
    • Rework CI infrastructure
    • Overhaul dub registry
  • Compiler (including paying technical debt and supporting collaboration on compiler work):
    • Redoing compiler code into lowerings and __traits-based introspection that leverage client code, thus moving compiler smarts into simpler library facilities
    • Templatize dmd <-> druntime API
    • Better support for C-style libraries with light or no runtime
    • Better information hiding and encapsulation in dmd
    • Refactoring of overloads in dmd
  • Performance and Scalability:
    • Improved support for vector instructions in the front- and back-end
    • New CTFE engine 1.0 (w/o classes & exceptions)
    • Address compile time/resource issues (compilation model, template instantiation & template instance emission)
  • Library:
    • High-level shared library wrapper