But the 'newly proposed one' is the definition that I have been
using all
along.
+1. Until this came up, I didn't know another definition existed.
The 'regular' definition of assert that you claim is what I see
as
the redefinition - it is a definition based on the particular
implementation of assert in other languages, not on the
conceptual idea of
assert as I understand it (and as it appears to be intended in
D).
In my view, it's also a redefinition of -release. My view is
influenced by Common Lisp. If you want speed, you test your
program, and then when you feel comfortable, set the optimization
levels to get as much speed as possible. If you want safety and
debugging, set the optimization levels accordingly. I was always
under the impression that -release was a statement to the
compiler that "I've tested the program, make it run as fast as
possible, and let me worry about any remaining bugs."