Make using compiled libs with debug code better

Paul Backus snarwin at gmail.com
Tue Oct 19 14:28:47 UTC 2021


On Tuesday, 19 October 2021 at 13:57:31 UTC, Steven Schveighoffer 
wrote:
>> Better to leave assertions on by default, and make you have to 
>> go out of your way to turn them off.  IMO.
>
> This would leave Phobos in pretty bad shape for performance. 
> Especially with invariants. I know for instance that 
> RedBlackTree has an invariant that validates the tree 
> correctness on every operation (and this runs before and after 
> every function). However, if you build your project with dub, 
> every library you depend on (with source available) will be 
> built the same as your application. So Phobos is kind of alone 
> in this regard based on the way we distribute libraries.
>
> I'm not sure what the right answer is, but that is what this 
> thread is for -- can we solve this in a non-disruptive or 
> minimally-disruptive way?

1. Add a `-preview=releaseModeChecks` switch that enables 
assertions and contract checks in `-release` builds.
2. Build Phobos's unit tests with and without the new `-preview` 
switch and check for performance regressions.
3. Add `debug` to any assertions or contracts that cause 
significant performance regressions.


More information about the Digitalmars-d mailing list