This document discusses the high-level vision for D. It is revised every six months (January and July of every year). This (2015H2) instance is four months late.
Note: This document focuses on goals the D leadership will personally enable or make happen. Other contributions that don't require their help are always welcome.
Progress in H1 2015
Progress is discussed and measured in comparison with the goals established in the H1 2015 vision document.
- Improve the brand
- Adoption has been growing year over year, with seasonal fluctuations (summer is slower). The 28-day trailing average of daily downloads was 1081 on June 30 2015, compared to 701 exactly one year prior (54.2% increase). See chart.
- DConf 2015 held at Utah Valley University has been a success. However attendance rate (about 50) has been stagnating compared to previous years.
- "This Week in D" has become a community staple.
- Raise participation
- 1871 pull requests have been created in H1 2015 (1796 closed, 71 open). This falls a bit shy off the projected 2000 pull requests, but marks a 21.7% growth over H2 2014 (1538 pull requests) and a 31.8% growth year-over-year compared to H1 2014 (1419 pull requests).
- Create a D Language Foundation
- Work on the D Language Foundation has proceeded. We secured an attorney and drafted the documentation.
- Improve language stability
- Language definition has not improved significantly (e.g. shared semantics, @property). We became more conservative about making language changes.
- Switch to self-hosting (
- Porting the D compiler to D has been making good progress.
- Emphasize vibe.d
- No significant progress. There has been pushback regarding merging vibe.d into the standard distribution.
- Memory Management
- There has been progress on memory management in the standard library. Several functions that allocated memory now have lazy equivalents that do not require allocation.
- There has been slow progress toward improving language and standard library safety.
- C++ integration
- Progress has been slow.
- There has been appropriate improvement of quality across the board.
- Foster additions to the standard library and third-party libraries
- Progress has been slow.
- Alternative compilers
H2 2015 Priorities
Because of delays in drafting this document, some items are past work (as noted) instead of intended work.
- The D Language Foundation
- The Foundation has been incorporated during H2 with the state of Washington, USA. The employer ID is 47-5352856. The plan is to file for non-profit status by the end of H2 (approval takes up to 6 months).
- Raising participation
- This remains an ongoing concern. We're welcoming Martin Nowak's leadership role and looking at expanding participation to all aspects of the D environment. We continue seeking and empowering exceptionally strong contributors.
- We're aiming at exceeding 2000 pull requests in H2 2015. So far we are behind schedule; on Oct 25 with little than two months through the end of the year we're clocking at 1037 pull requests.
- Safety remains a primary concern of all work, especially work involving early memory reclamation (below).
- Memory management
- "No GC" remains a primary concern going forward for the standard library and client code.
- We need good language+library support and robust idioms to follow for good no-GC code.
- Lack of tool support is often invoked by would-be adopters of D. We should focus on adding tooling to the D distributions, starting with dfmt and dfix. Longer term, one key part of it is exposing compiler components (lexer, parser, various checkers) as libraries.
- Library additions
- Strong library additions should drive both language fixes and improvements, and serve as examples to follow for the entire community.
- Continue fostering brand awareness
- This remains a priority going forward. DConf 2016 in Berlin is slated to be a larger event than before. Walter and Andrei held a very successful conference in Brasov, Romania. Andrei will deliver a keynote and a D tutorial at ACCU 2016.
- Improve language stability and specification
- We need a more rigorous writeup of the language specification. At best we'll start a background work of redoing the spec from start that uses "standardese" language, has examples, and covers all of the language properly.
- Any language change must be initiated with a DIP that is properly scrutinized.
- C++ integration
- We left C++ integration at promise level. We should get to the point where people can use staple elements from the C++ standard library (e.g. std::vector, std::string, std::unordered_map) seamlessly. Also we need to document the C++ interface so others can define their own bindings.
- Tactically we need to be able to catch exceptions raised from C++ code. The first header to support in the C++ standard library should be <exception>.
- Smartphones (iPhone/Android)
- Alternative compilers already have some level of support for smartphones. That should continue in stride and be accompanied by the appropriate air support from the leadership and community.
- Objective-C interfacing is an important aspect as well.
- Porting the reference compiler to D
- The front-end has been ported. There is work on porting the backend as well. This is an important topic. The only reason this is at the end is that it has already happened.
In Search of Champions
- Embedded systems
- Some community members have expressed interest in using stripped-down versions of D on embedded systems. Work will need to be done to modularize the compilers and runtime to enable such use in tightly constrained systems.