You can do a lot though. And for many of the remaining things, such as all arithmetic UB, one can require run-time traps. The same for bounds checking (which will require some minor language extensions). The only difficult thing is temporal memory safety, but there also several known options what one could do.