Vision/2016H2

From D Wiki
Revision as of 18:27, 8 July 2016 by AndreiAlexandrescu (talk | contribs) (H2 2016 Priorities)
Jump to: navigation, search

Meta

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.
Tooling

DUB will be deployed with dmd starting with the next release.

Other

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.
Interoperability
Improve C++ inter-operability: struct mangling, Windows exceptions. Improve Objective-C interoperability.
Tooling
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.
Quality
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