Ownership isn't a “low-level” issue. It arises in every program that manipulates ephemeral resources (like network connections), and you have to reason about it, whether the type checker forces you to or not.
> Manually controlling the ownership process is a core part of the language and would be pretty hard to change.
It's actually pretty automatic. You only need to implement each destructor once. Using `finally` or `defer` is what is needlessly manual.