Memory unsafety (by default without opt-in) is being treated like a feature in these newer languages.
Odin has numerous memory safety features enabled by default. Having manual memory management does not entail no "memory safety". You could easily have a language with GC or ARC and still have all of the unsafe features of C. Objective-C is a brilliant example of this.
Many memory safety can be achieved with many constructs such as:
* Bounds checking for array-like types
* Having no pointer arithmetic
* Having distinct typing (virtually no implicit type conversions)
* Having no array-to-pointer demotion like in C (combination of the above to problems)
* Having actually decent array types: fixed-length arrays, slices, dynamic arrays, #soa arrays, etc
* Have length-bound strings rather NUL-terminated strings
* `Maybe(^T)` type to allow for non-nil pointers to be explicitly checked
* Built-in discriminated `union`s (of which `Maybe` is just one of those)
* Virtual Memory Protects
* And many more!
Most of the unsafe features in C/C++ come from most of the above features, especially pointer-semantics and the lack of a decent array type.
What Odin does not offer is ownership semantics and lifetime semantics, which is an entire discuss to itself which I won't talk in this comment.