Businesses that can afford to port or rewrite for every platform out there are rare. The web replaced Visual C++ / RogueWave windows apps for a reason.
Mobile pulls back toward per-OS apps, but only really to low degree: iOS for "elite consumers" (I didn't make that up), Android in several ways: native for games, some Java apps, and a long tail of PhoneGap-wrapped web apps.
Common among the mobile app approaches are web(view)-based apps and native apps. Emscripten/asm.js handles the latter by cross-compilation. The plugins escape valve for "alternative tech" is gone on mobile, so this is likely to be "it" for a while, IMHO.
The web+mobile composite is an ecosystem. Energy is never free, so apart from enthalpy beating entropy locally, tech that flows downhill usually wins with developers and publishers. Game devs/pubs porting their C++ catalogs to JS via Emscripten is an example of "flowing downhill".
What about opening files? The Web has lots of APIs, more all the time. Firefox OS has local storage, and it has only the web as its platform.
/be
The fact it's executed through layers of an OS, a web browser, a javascript parser, an ASM parser, is just worrying. What about libraries ? What about opening files ? What about access to the hardware ?
> There's no denying this, ASM.js is an awful hack but that is for a good reason.
The whole idea is to get around the fact companies will lock their system and force some technologies and languages down the throat of programmers who have other solutions and ideas. You can't completely avoid the restrictions and not run into problems. I don't call that a "good reason". You can solve those problems by finding alternative techs and platform to reach an audience.