This document discusses the high-level vision for D. It is revised every six months (January and July of every year). This (2015H1) is the first instance of the vision document.
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 H2 2014
- We've improved the core language and standard library, with a focus on quality.
- 1539 pull requests were created in the second half of 2014 (1472 closed, 67 still open). Compare with 1546 in H1 2014 (1516+30 respectively). The halves have been roughly equal in terms of github participation.
- Adoption has continued to increase through H2. Daily 28-days moving average downloads: 524.393 on 2013/12/31, 700.54 on 2014/06/30, and 1226.64 on 2014/12/31. See chart.
- DConf 2014 was a success.
H1 2015 Priorities
- Improve the brand
- We aim to improve the brand of the D programming language. Part of that is raising the quality of all D-related materials: website, documentation, tutorials, reference, wiki, forums, etc. "This Week in D" is a related new initiative we plan to continue promoting. DConf 2015 is the premier event of the community. Regional meetups are also important for branding: London, Berlin, Silicon Valley.
- Raise participation
- Closely related to brand improvement, we plan to foster broader participation in the use and improvement of D. Our aim is to top 2000 pull requests by June 30, 2015.
- Create a D Language Foundation
- We aim to create a foundation that promotes understanding and adoption of the D programming language.
- Improve language stability
- Nail down fuzzily-defined areas of the language (e.g. shared semantics, @property). Foster library additions over language changes, and raise the bar on language changes.
- Emphasize vibe.d
- vibe.d is a comprehensive approach to web development that is approaching maturity. We aim to raise its importance and relevance to D development: offer bundled installation with dmd, release in lockstep, make working with vibe.d an acceptance criterion for dmd releases.
- Memory Management
- We aim to improve D's handling of memory. That includes improving the garbage collector itself and also making D eminently usable with limited or no use of tracing garbage collection. We aim to make the standard library usable in its entirety without a garbage collector. Safe code should not require the presence of a garbage collector.
- We believe safety is an important aspect of language design, and we plan to continue building on the @safe/@trusted/@system troika.
- C++ integration
- Smooth integration with C and C++ is an essential competitive advantage of D. We aim to support significant C++ standard library interoperability by mid-2015 and full interoperability on at least one platform by the end of 2015.
- Quality of implementation (language, standard library, and ecosystem) remains an overall goal.
- Foster additions to the standard library and third-party libraries
- We prefer adding new components to the standard library over refactorings and reorganizations of those that work (barring bug fixes). Our vision is to foster a large standard library complemented by a strong battery of third-party libraries. Aspects like networking, concurrent/parallel/distributed programming, and database connectivity are of interest to place in the standard library.
- Alternative compilers
- gdc and ldc play an important role in the D ecosystem. They should continue to improve over this period.
In Search of Champions
A few domains/niches are desirable, but we lack expertise so we cannot help directly. We are in search of champions for these areas:
- Smartphones (iPhone/Android)
- Some enthusiasts have started intermittently working on Android and iOS support. We would like to see this fleshed out and mobile platform support brought to the same level as the current top-tier platforms.
- 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.