This enables certain things, e.g. debug_assert!(false = true) will panic. It also does stuff like bounds checks for every access and integer overflow/underflow checks every time any number is used. These are great things to do, but they are usually done in debug builds which are used in testing, not in release. This will make our code literally hundreds of times slower, so we should probably remove this.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
Reason this is invalid: We're matching Tor's C code behaviour here, which always includes debug symbols, even in releases.
That makes sense to try to match the C behaviour. Although, I think building Rust code in debug mode isn't really comparable to a C binary with debugging symbols… there's extra stuff going on there (like the over/under-flow checks), and it's not like we can just run strip on it to make it what it would've been without debugging enabled. It's more like building a C binary with UBSan and whatever other sanitisers enabled, which IIRC we don't do (--enable-expensive-hardening is off by default).
Trac: Resolution: invalid toN/A Status: closed to reopened
"Compiling in debug mode is the default for development-- compilation time is shorter since the compiler doesn't do optimizations, but the code will run slower. Release mode takes longer to compile, but the code will run faster."