This document discusses the high-level vision for D. It is revised every six months (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.
H1 2016 Review
- The D Language Foundation
- We failed to apply for nonprofit status before the end of H1. Currently the application has been drafted and is under review by a CPA and an attorney.
- Raising participation
- Participation during 2016H1 has been steady but has been below expectations. Of the 2000 PRs planned for H1 we achieved 1711.
- Foster brand awareness
- We have had good results in this area. DConf 2016 has been a success with over 140 participants, a solid program, and an enthusiastic atmosphere. D has been featured in talks at ACCU and NDC Oslo. A number of local meetups (Bay Area, Boston, Berlin etc) took place.
- The official D Blog has been created under the care of Michael Parker and already has good content.
- A formalization of the DIP process has been initiated by Dicebot.
DUB will be deployed with dmd starting with the next release.
Other topics from H1 underwent only little development and will be copied as ongoing topics for H2: safety, memory management, tooling, improve language stability and specification, C++ and Objective C integration, library additions, smartphone support.
H2 2016 Priorities
- The D Language Foundation
- The plan is to file for non-profit status before September 1, 2016
- The Foundation has initiated collaboration with Tech Lounge, an organization that helps finishing students and fresh graduates accumulate industrial experience working on high-impact projects
- The Foundation has in working a number of speaking engagements that will add funds to its coffers
- Initiate and advertise sponsorship and membership programs
- Pursue academic collaborations
- Create online swag store
- Foster articles, books, talks on D
- Improve organization
- More stable release model, better integration of fixes, maintaining LTS releases for professional users. Regressions should be paid utmost attention.
- Better management of language and phobos development, consensus on strategies, basic project management for bigger features, better administration of DIPs and module review queue.
- Raising participation
- More automation: bot for pinging reviewers (mention-both, highfive), automatic linting of pull requests, dfmt, automatically build dub packages to assess regression impact.
- We continue to actively look for "promoting" contributors into top, heavy-hitting ranks: owners of important projects and responsibilities, code reviewers, designers, technical leaders.
- Foster newcomer experience: installation (first five minutes), documentation, articles, error messages (e.g. DIP83), debugging.
- Safety and Memory Management
- Safety and making the GC optional remain important concerns through the end of this year. We are putting them together because the GC alternatives we endorse must address safety.
- Fix all errors in language design and implementation that allow unsafe behavior in @safe code.
- Usable/useful escape reference analysis (finished DIP25, scope methods to avoid escaping of this, in = const scope, D variadic arguments) to enable more efficient resource management (see example)
- Improve the GC.
- Flesh out and solidify std.experimental.allocator
- Improve compiler support so ref counting can be done @safely.
- Improve C++ inter-operability: struct mangling, Windows exceptions. Improve Objective-C interoperability.
- Improve integration of dub, take advantage of its presence in the standard distribution
- Continue work on modularizing compiler-front-end as a library, which will enable many other tools
- Keep an eye for collaboration on large tooling projects: IDEs, debuggers, editors, etc.
- Improve CTFE
- Fix problems with excessively long mangled names
- Improve internal memory management of compiler
- Continue improving DMD front end internals
- Standard Library
- Eliminate Phobos dependency on GC (in other words, make GC opt out a viable and simple option).
- Review all Phobos modules for compatibility with ranges - std.zip, for example, was done before ranges and does not work with them
- Replace modules that are lacking in quality: json, xml
- Strengthen definition of ranges, possibly improve API
- New modules such as: containers, SI units, rational numbers, fixed-point numbers, big decimals, unit testing framework, benchmarking, linear algebra.
- Use -cov to improve code coverage of Phobos modules
- Make sure every function in Phobos has an example
- Make sure every function in Phobos has Params: and Returns: sections http://www.digitalmars.com/d/archives/digitalmars/D/Phobos_Documentation_-_call_to_action_258777.html
- Take inspiration from popular modules in other languages for adding modules to Phobos
- Improve green threads/fiber support
- Create a module that enables code to be run on GPUs
- Create the interface code to the C++ STL
- Review all of Phobos for @safe compatibility
- Remove dependency on autodecode from Phobos