4 ms·
Go is famously not memory safe. Not only can you trivially create data races, if you data race on an interface fat pointer then you can corrupt its vtable (enti
by tczMUFlmoNk 3y ago
Go is famously not memory safe. Not only can you trivially create data races, if you data race on an interface fat pointer then you can corrupt its vtable (entirely in "safe" code; no `unsafe.Pointer`).
It is of course better at memory safety than C and C++, but these issues do come up in real deployments.
- zakkor1 3y agoGood thing Go has a race detector!
- mgaunard 3y agoand C++ doesn't?
- dontlaugh 3y agoData races aren’t memory unsafe. The vtable thing is, but at least that’s accidental.
- mseepgood 3y agoData races have nothing to do with memory safety. Please do not conflate these two. Java, C#, Go, etc. can all have data races, but they are all memory safe languages.
- anonymoushn 3y agoGolang permits safe code to use a data race to cause type confusion and violate memory safety though.
- Thaxll 3y agoGo is memory safe, data races are inherent to all languages beside Rust? As for interface fat pointer it's a none issue in real life code. https://research.swtch.com/gorace https://research.swtch.com/gorace