On Thursday, 26 July 2018 at 21:22:45 UTC, Petar Kirov [ZombineDev] wrote:
[..]

D on the other hand is (or at least I'm hopeful that it is) moving away giving magical powers to its runtime or standard library and is its embracing the spirit of bare bones systems programming where the programmer is allowed or even encouraged to implement everything from scratch (cref -betterC) for when that is the most sensible option. While C and C++ approach portability by abstracting the machine, the approaches portability by laying all the cards on the table and defining things, rather than letting them be unspecified or at least documenting the implementation definition.

[..]

That is not too say that we shouldn't try to improve D's spec to allow more room for compiler optimizations (like the problem that you can't type instances of TypeInfo as fully read-only, because of the questionable feature of using them as an abundant pool of mutexes). My point is that at least in the near term future, D compilers shouldn't try to assume they have monopoly (like there only one right way) on object lifetime, given that everybody in the community so to speak is busy making their own memory management scheme. Removing UBs in this area at the cost of limiting compiler optimizations will at least make the @nogc transition period smoother for everyone. Though I'm sure there's plenty of other opportunities for tightening the spec.

Reply via email to