SIMD: https://openjdk.java.net/jeps/338 (to be merged soon), plus, of course, auto vectorisation, which is already in.
Allocating small objects on the stack: this already happens automatically through escape analysis, but more generally (and more importantly) arrays-of-structs: http://cr.openjdk.java.net/~briangoetz/valhalla/sov/01-backg...
UTF-8: What do you mean? Java has supported UTF-8 for a loooong long time. Even the source files support Unicode with UTF-8 encoding.
compile-time asserts: Not sure what you mean. But there's a rich compile-time plugin mechanism: https://www.baeldung.com/java-annotation-processing-builder and even pluggable type systems: https://checkerframework.org/manual/
Async/await: how about lightweight threads, instead? https://wiki.openjdk.java.net/display/loom/
For Async/await, I believe a much better approach is available with Quasar today or with Project Loom soon.
SIMD is an issue though if you need that.
See Project Panama for the encompassing project: https://openjdk.java.net/projects/panama/
You can specify UTF-8 as the default charset (unless you mean for identifiers?) and Grall does exist for AOT.
If you'll forgive a light trolling: how about ahead-of-time compilation, allocating small objects on the stack, UTF-8, compile-time asserts, or SIMD support?
(Was going to include await/async, but then I remembered EA Async.)
I realise this is a little off topic, but the JVM isn't without limitations. (Or perhaps all my examples are wrong - disproof welcome!)