On Monday, 11 October 2021 at 15:59:10 UTC, Atila Neves wrote:
>- Worst features implemented in a non-toy language
Everything to do with header files.
>- Worst features (in your opinion) in D
Autodecoding. Autodecoding. Autodecoding.
Mutable by default.
Template errors. (esp. template instance func(T) where T = string cannot be instantiated with T = string
, or something along those lines, really, really, frustrates me)
Inconsistent built-in property naming. (As a bonus: historical baggage)
A fear of language solutions because of reasons, leading to annoying issues like std.sumtype being a PITA to debug sometimes due to bad error messages it can't really do anything about.
alias this
abc => { return 123; }
should not be returning a function that returns a function.
- Features you'd like to see in D
Language support for complex types:
-
sumtype and/or tagged unions. esp. in regards to pattern matching
-
optional types.
-
Maybe even a result/value_or_error type.
ProtoObject
Taken from C#: Having to specify ref
and out
parameters at point of usage, not just at definition.
Being able to specify new/experimental functionality per-module, a.l.a nullable syntax in C#.
Being able to match structs against an interface
or other such construct. As a language feature since a template version I can foresee eating my CPU.
Allocators being better integrated with the language/phobos.
Standard, de-facto interface/library/whatever for things like logging, databases, etc.
Object initialisers: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-objects-by-using-an-object-initializer
And most importantly, a plan for D's future and development, because personally I have 0 idea where D is trying to go now, what it's trying to be, who it tries to please, etc. What is our vision? What are our goals and ambitions for the language?
I know it's basically completely infeasible but it's a fun thought experiment to think about what a "D3" could be like. Learning from the warts of the current language, removing historical issues, just a complete redesign whilst still being D.