Bug 4722 – Debug Phobos lib

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
Windows
Creation time
2010-08-24T19:51:16Z
Last change time
2024-12-13T17:53:08Z
Keywords
bootcamp
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: dmd#18295 →

Comments

Comment #0 by bearophile_hugs — 2010-08-24T19:51:16Z
This is one example from Phobos, a small part of std.bitmanip.BitArray: void init(void[] v, size_t numbits) in { assert(numbits <= v.length * 8); assert((v.length & 3) == 0); } body { ptr = cast(uint*)v.ptr; len = numbits; } But if you compile (with no compilation arguments but the file name) this wrong program runs, with no runtime errors: import std.bitmanip: BitArray; void main() { ubyte[4] data; BitArray bits; bits.init(data, 100); } The problem is real, but I don't know if the following suggestion is stupid or impossible. The idea is to have two precompiled libs, like phobos.lib and phobos_debug.lib (where the debug one contains the asserts too), and DMD (or rmdm) may pick phobos.lib if the -release switch is used, and use phobos_debug.lib otherwise. This may allow to replace the enforce() in Phobos with normal asserts inside DbC contracts.
Comment #1 by robert.schadek — 2024-12-13T17:53:08Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18295 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB