Vision/2015H2

From D Wiki
Revision as of 20:49, 21 October 2015 by AndreiAlexandrescu (talk | contribs) (H2 2015 Priorities)
Jump to: navigation, search

Meta

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.
Regional meetups have slowly moved along: London, Berlin, Silicon Valley.
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 (ddmd)
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.
Safety
There has been slow progress toward improvement language and standard library safety.
C++ integration
Progress has been slow.
Quality
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
gdc and ldc have made good progress and are keeping up with the current front-end.

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.
Porting the reference compiler to D
The front-end has been ported. There is work on porting the backend as well.
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.
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.
Safety
Safety remains a primary concern of all work, especially work involving early memory reclamation.
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.
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.

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.