On 31/08/18 23:22, Steven Schveighoffer wrote:
On 8/31/18 3:50 PM, Walter Bright wrote:
https://news.ycombinator.com/item?id=17880722
Typical comments:
"`assertAndContinue` crashes in dev and logs an error and keeps going
in prod. Each time we want to verify a runtime assumption, we decide
which type of assert to use. We prefer `assertAndContinue` (and I push
for it in code review),"
e.g. D's assert. Well, actually, D doesn't log an error in production.
-Steve
I think it's the music of the thing rather than the thing itself.
Mecca has ASSERT, which is a condition always checked and that always
crashes the program if it fails, and DBG_ASSERT, which, like D's built
in assert, is skipped in release mode (essentially, an assert where you
can log what went wrong without using the GC needing format).
When you compare this to what Walter was quoting, you get the same end
result, but a vastly different intention. It's one thing to say "this
ASSERT is cheap enough to be tested in production, while this DBG_ASSERT
one is optimized out". It's another to say "well, in production we want
to keep going no matter what, so we'll just ignore the asserts".
Shachar