I think the approach of languages like Rust, which enforce strict safety by default, but allow "unsafe" regions of code, is the correct way to go.
See http://static.rust-lang.org/doc/master/rust.html#unsafety
See http://static.rust-lang.org/doc/master/rust.html#unsafety
Nothing new in software development. All the "new" shinies are decades (!) old.
I wonder how we got sidetracked like that.