There are many new languages in the same space (Zig, Nim, V). However, if you use a language outside hobby projects, you are dependent on a language having a long-term healthy ecosystem. Of the newer native languages, only Rust, Go, and Swift have enough traction to bet your livelihood on.
In the end, having a rich ecosystem with good libraries and tools is going to leave a far bigger mark on productivity than relatively small differences between Rust, V, Zig, Nim, D, or whatever.
That's why we're working on Go2V, which will be able to fully translate Go code to V. (Having a language so similar to Go also helps.)
It's already been partially used in our translation of Go's crypto modules:
V works just fine for low level stuff, we have a full os/kernel written in V, which can already run g++ and doom.
But there are very few applications that do mandate a non-GCd language, like writing performant runtimes, deterministic workloads, etc.
You don't have to use GC in V. It has optional manual management/autofree/arena.
How does that work in practice? Example please.
For example:
// os.v
fn open(path string) !File {}
// main.v
file := os.open('out.txt') or { panic('failed to open: $err') }
file := os.open('out.txt') or { return }
file := os.open('out.txt')! // propagate the error
if file := os.open('out.txt') {} // alternative scoped syntaxV syntax looks somewhat clear.