Indeed that is why WebAssembly has been created and is growing.
Nobody agrees which language is best, and adding many languages would be a maintenance nightmare for browser maintainers.
So that's why they didn't add a bunch of languages for humans, but a single one for compilers to target. That way people use Rust, C++, assemblyscript but the browser only supports one language...
People were already kind of doing that workflow, with many languages targeting JS, like CoffeeScript, Typescript, Kotlin, Dart, ClojureScript... Which kinda works, but Javascript is not designed for performance, or for being a convenient compile target.
So that's why WebAssembly is great news, will hopefully solve many problems, and should have been introduced much earlier.
As for hardware access, browsers have apis to access things like cameras and microphones, and there's webGL for graphics hardware. However there are more security considerations than for desktop programs, and arguably more than for apps, because there isn't an install step where users can consider security implications.