On Thursday, 26 May 2022 at 01:07:38 UTC, forkit wrote:
> But the fact that nobody seems to really know (even Walter!), is troubling, to say the least.
Perhaps someone well informed needs to write a brief article, so we can all learn what -release 'really' does.
Well, I surely do know :-) And this is documented at least for GDC and LDC:
"man gdc":
-frelease
Turns on compiling in release mode, which means not emitting runtime
checks for contracts and asserts. Array bounds checking is not done for
@system and @trusted functions, and assertion failures are undefined
behavior.
This is equivalent to compiling with the following options:
gdc -fno-assert -fbounds-check=safe -fno-invariants \
-fno-postconditions -fno-preconditions -fno-switch-errors
"ldc2 --help"
--release - Compile release version, defaulting to disabled
asserts/contracts/invariants, and bounds checks in
@safe functions only
But "man dmd" isn't helpful at all:
-release
Compile release version
Still DMD behaves in the same way as the other compilers.