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.
So these languages stay memory unsafe but tries to minimise the issues caused by the lack of safety.
The key would be hardware supported automatic memory management.
This tech exists since many years but nobody uses it (likely because our "good old friend": patents, which is a death sentence to any good idea).
https://researcher.watson.ibm.com/researcher/files/us-bacon/...
https://people.eecs.berkeley.edu/~kubitron/papers/holistic_r...
https://adept.eecs.berkeley.edu/wp-content/uploads/2018/06/A...