Hei John, I read over the first part of your message and it seems
that same information you got is quite outdated:
On Thursday, 18 August 2016 at 22:50:27 UTC, John Smith wrote:
Well there are some things I feel could be improved, a lot of
the things are really just minor but what is a deal breaker for
me mostly is the compilers. The GCC and Clang implementations
are really far behind in terms of the version, so they are
missing a lot of features. A lot of the features that I'd want
to use D for.
That's not true for LDC - it's on par with the latest DMD version
since a while now. It might be that the version shipped with your
Linux distribution is a bit outdated.
http://forum.dlang.org/post/uxupejapglpeokaiq...@forum.dlang.org
In the download section it also says "good optimization" but it
honestly isn't. I rewrote a small portion for one of my
projects to test out D but looking at the assembly a lot of it
was questionable. I'd say DMD probably produced the best
assembly but then there's the problem that it doesn't support
MMX instructions.
That's weird - LDC allows great optimization, see e.g. these two
benchmarks:
https://github.com/kostya/benchmarks
http://forum.dlang.org/post/zxkkjezakirlfepnd...@forum.dlang.org
Even on 64-bit it still uses the FPU, which I can't really use.
The FPU isn't consistent enough for simulations that run on
separate computers and different OSs that need to be synced
through a network.
Inconsistent FP math is a known issue, but most likely a
fusedMath pragma will be added soon:
http://forum.dlang.org/post/hjaiavlfkoamenido...@forum.dlang.org
https://github.com/ldc-developers/ldc/issues/1669
Anyways for some more minor things. I really don't like
__gshared, why couldn't it just be named "gshared" instead.
Don't like how that naming convention is used in C/C++ either
but I feel here in D it is completely out of place. Nothing
else uses a preceding "__" and from the documentation it looks
like it's made to stand out cause it shouldn't be used. But it
is used a lot, and it wouldn't be possible to do certain things
without it. I forget but the dynamic library loader for D,
derelict, is one such case.
Yep you are correct about the motivation: __gshared got its ugly
name to remind
the programmer about the dangerous world he wades into.
There are usually safer & more elegant ways, e.g.:
http://tour.dlang.io/tour/en/multithreading/std-parallelism
http://tour.dlang.io/tour/en/multithreading/synchronization-sharing
http://tour.dlang.io/tour/en/multithreading/message-passing