it builds and doesn't throw if I compile with: dmd -release though it causes a segfault, what is probably a dmd bug.
No, that's by design. assert(0) compiles to a segfault instruction with -release.
A wrapper that unifies these 4 steps like enforce is pretty easy to implement.
yeah easy to use exception in @nogc as long as the catch knows to free it too.