Hello DMD devs,

Since we switched to DDMD, there has been a major regression hanging around: asserts are stripped out of the version we ship (except for assert(0)), because for performance reason we ship with `-release`. This can lead to very subtle and hard to spot bug in user code, and requiring someone to build a debug version of DMD in order to post a bug report is a clear red flag.

There has been discussions on what to do with this, in this P.R. : https://github.com/dlang/dmd/pull/5716

One of the solution proposed by Martin was to provide a switch to allow `assert`. This has the disadvantage of still stripping `invariant` and `in`/`out` contracts, and might be confusing to user code.

One other solution - which doesn't require a language change - would be to use exception for ICE (which are rare anyway), and provide a comprehensive handler at the top level to:
- Provide a nice error message
- Provide a dump of the code / AST that produced the error
- Point to bugzilla, as suggested in a recent P.R. by Dicebot: https://github.com/dlang/dmd/pull/6103

Thoughts ?

_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals

Reply via email to