A bucket of issues that we haven't taken time to create individual github issues for.
opt-in @nogc doesn't work (it probably should have been opt-in GC)
strings, arrays, classes, delegates usually require the GC
doing things in @nogc are rather ugly compared to "idiomatic D"
there may be other ideas for GC vs NonGC besides function attributes
ranges aren't a zero-cost abstraction (typically ~20-50% overhead)
homework: read the c++ proposal on ranges
the DIP1000's failed attempt to get more safety into the language return scope
no pay-for-what-you-use runtime
built-in associative arrays are slow (compared to C++) (though Nathan recently started to look into this)
dmd has a very unintuitive CLI interfaces like e.g. not allowing to merge DFLAGS environment variables with the existing dmd.conf and Walter repeatedly rejected a few proposals on modernizing the interfaces like allowing a concise comma-syntax for multiple arguments or an opt-in '=' for those old flags (e.g -of=).
Walter still objects to defaulting to Visual Studio's C runtime (or mingw as fallback since 2.079) even though people constantly run into issues with his unmaintained, one-man, closed-source DigitalMars C runtime
@property is useless and there's no good binary assignment syntax, e.g. you can't do += on a bitfield because of this (https://github.com/dlang/DIPs/pull/97 might change this)
shared is half-baked
classes bring serious overhead (e.g. the __monitor that's always there)
it's really hard to do proper @safe reference-counting
toString doesn't work nicely with ranges and always needs to allocates :/
the compilation time and memory (!) is a lot worse than promoted
inout is a tough sell to newbies (enum to force static execution too btw)
'is(myType == anotherType) != void' (sadly a very common pattern in Phobos, it could have been 'is(a != b)'
assert diagnostics (e.g. the built-in assert should display the actual values that lead to the assertion failure)
nicer syntax for mixin
opt-in default constructors for classes (I know we can generate this with mixins, but it adds up to the compilation overhead)
nice error messages when overloads with if constraints don't match (e.g. showing which parts were true and especially for traits, which attribute wasn't fulfilled.)
more "seamless" / low-overhead integration of third-party packages (even though it definitely has its downsides, Go's syntax would already be a huge leap forward.)
safe dereferencing
a range shouldn't be required to implement opDollar (it should default to length)
more concise multi-dimensional numpy-like array indexing syntax (e.g. a[_, 3 .. 5] to select column 4 and 5)
using markdown in ddoc comments
almost zero cost importing of source files (i.e. don't run semantic on not used symbols)
negative attributes
per-module level compiler features (e.g. opting to sth. like -dip1000 only for a single module or even a single scope)
more runtime introspection
:= operator instead of auto (see also PEP572 on assignment expressions)
scope(failure, e) (i.e. have optional access to the thrown exception)
A bucket of issues that we haven't taken time to create individual github issues for.
Missing features: