http://blog.llvm.org/2011/05/what-every-c-programmer-should-...
First, mapping that page doesn't cause all null pointer dereferences to segfault.
And second, the language doesn't require a segfault. In fact, it explicitly permits the implementation to do whatever it likes.
That is the difference between safe and unsafe. It is in the language definition.
C doesn't define behaviour of a null deref, but most compilers map a -rwx page there to ensure that attempts to deref fault.
In what circumstance do they not?
http://blog.llvm.org/2011/05/what-every-c-programmer-should-...
Considering that "safe" removes most of the usefulness of the word "safe".
I agree it's better to avoid null dereference errors by not putting null in your language, but by the normal meaning of safe here, go is safe.
Also, I wasn't making a point about the word "safe". I was making a point that if go is "safe", then the word "safe" is useless.
There is a problem here. Don't want to call it "unsafe"? Ok. Call it crashy, instead.