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

Reply via email to