memcpy() comparison: C, Rust, and D
Random D user via Digitalmars-d
digitalmars-d at puremagic.com
Thu Feb 2 12:37:32 PST 2017
On Wednesday, 1 February 2017 at 23:49:29 UTC, H. S. Teoh wrote:
> We would love to change the defaults, but unfortunately that
> boat has already sailed a long time ago.
What if d had a -safe-defaults switch? It should be ok, since
safe is stricter than unsafe right?
This way old/existing code would compile fine by default, but if
you want to use that code/lib with safe-defaults you either have
to do trusted wrappers or modify it to be safe.
All new code with safe-defaults would compile fine in safe mode
and unsafe mode.
To me it's similar approach to 'warnings-all' and
'warnings-as-errors'.
---
I myself don't really care for @safe, it's complex and seems to
have big practical hole with @trusted. Kind of like 'refs can't
be null in c++' (as some people claim/argue) and then someone
passes nullptr into function ref arg. Completely unreliable, even
though refs usually work ok 99% of the time (by conventions and
effort).
I've already thrown const, immutable, inout mostly in to trash
(string literals etc. are exception) after few tries. They make
the code more complex and harder to modify especially when you
have bigger system. Often you realize that your system/module
isn't truly 100% const in the last insignificant leaf function,
and that triggers large cascading modifications and rewrites,
just to get the code work. Also I can't really remember when I
accidentally modified data that I shouldn't have (i.e. violate
const protection). But I often modify correct data incorrectly. I
believe most programmers first figure out what they need to do
before doing it instead of just writing randomly into some
array/pointer that looked handy :)
I prefer flexible (fun), fast and debuggable (debugger/printing
friendly) code. It seems that neither @safe or const are part of
it. (I'm not writing life and death safety critical code anyway).
More information about the Digitalmars-d
mailing list