CNET también está disponible en español.

Ir a español

Don't show this again

HolidayBuyer's Guide
Software

​Microsoft joins with Mozilla in bid for fast Web apps

In Windows 10, Microsoft's browsers -- both IE and Spartan -- will get the tech Firefox uses to speed up Web-based games. And that's a challenge to Windows itself.

In Windows 10, Microsoft will support Mozilla's asm.js technology for fast JavaScript apps.
In Windows 10, Microsoft will support Mozilla's asm.js technology for fast JavaScript apps.

In a partnership that would have been unthinkable 10 years ago, Microsoft has strongly endorsed Mozilla's asm.js technology for bringing graphically intense games and other performance-critical software to the Web.

During the last 10 years, much of the work that in the '90s would've been handled by software running directly on a Windows PC is now handled by software that runs in a Web browser. Facebook and Gmail, for example, were both born as Web services.

That suited Firefox maker Mozilla just fine, since its mission was to promote the Web as an open foundation for computing. In recent years, to try to attract even more software to the Web, Mozilla created software called asm.js that's designed to accelerate certain types of Web software, such as games in which a character explores a 3D environment.

Microsoft, meanwhile, had a different priority: encourage programmers to write as much software as possible for Windows. But on Wednesday, it announced it will build asm.js into Chakra, a core component of both its Internet Explorer and Spartan browsers for Windows 10. Chakra is Microsoft's engine for running programs written in JavaScript, the programming language of the Web.

Microsoft's move reflects two important changes at the company. First, it has become serious about supporting Web standards and technologies to better compete with Firefox, Chrome and Safari, and to attract Web developers. Second, under Chief Executive Satya Nadella, it's embraced even those technologies that may undermine the power of existing businesses like Windows. In addition to supporting asm.js, it has also released a version of its Office software for Apple's iOS operating system, for example, and opened up Office document storage to rival cloud storage providers like Box.

Microsoft grew to browser dominance in the 1990s with Internet Explorer, which it bundled with Windows. Since Firefox debuted in 2004, though, it's steadily lost that dominance, and IE has been dogged with a reputation as a sluggish browser that doesn't embrace exciting new Web technologies. In part to break with that past, Microsoft is introducing a new browser, called Project Spartan, that strips out a lot of old IE code for a fresher start in Windows 10.

The software giant also has embraced many new Web standards and become more transparent about declaring which ones it supports.

Microsoft has made big progress supporting newer standards. It's even wooed one former critic, Christian Heilmann, who for years railed against IE's standards shortcomings. "Microsoft. Yes, the bane of my existence as a standards protagonist during the dark days of the first browser wars. Just like my doctor, I am going to the source of a lot of our annoyances and will do my best to change the causes instead of fighting the symptoms," Heilmann said in January of his move to Microsoft after serving as Mozilla's principal developer evangelist.

Unsurprisingly, Mozilla is pleased with Microsoft's shift. "We at Mozilla are very excited for IE to join Firefox in providing predictable, top-tier performance on asm.js code and from my discussions with the Chakra team, I expect this will be the case," said Luke Wagner, an asm.js developer at Mozilla, in a blog post.

Gaurav Seth, principal manager of Microsoft's Chakra team, and Ed Maurer, principal group software engineering manager of the the team, praised asm.js as a tool that runs nearly as well as software that lives on a PC's hard drive. "Asm.js is a clear step towards enabling near-native performance for the Web platform," they said, "which is why we're excited to bring it to Chakra in an upcoming release."

Why asm.js matters

JavaScript, while universally supported in browsers and running much faster than a few years ago, still can't match the speed of software that runs natively on an operating system. But an asm.js-optimized browser can run a limited subset of JavaScript operations very fast. A closely related project called Emscripten lets programmers convert their native software, usually written with languages like C and C++, into asm.js-ready JavaScript.

Among asm.js-based games released on the Web are Monster Madness, Dungeon Defenders and Cloud Raider. Epic's Unreal Engine, a foundation used to power other games, also runs in asm.js.

Microsoft likes what it sees with asm.js. "We believe that asm.js and the work we do to enable asm.js has the potential to provide speed benefits to many more scenarios over a period of time," Maurer and Seth said.

Microsoft also likes that -- in contrast with two Web programming technologies from Google, Dart and Native Client -- asm.js is compatible with existing browsers' JavaScript even if they don't explicitly support it.

"The fact that asm.js is a pure subset of JavaScript...guarantees interoperability across platforms and browsers. This means that engines that support asm.js light up the new features, while engines that don't will simply run with degraded performance," Seth and Maurer said. "Since the beginning of Chakra, our team's focus has always been to prioritize this approach to new functionality."

Google has put a high priority on fast JavaScript performance and has been making asm.js adjustments in its Chrome browser, in part through a project called TurboFan. The Chrome team is "actively experimenting" with invoking TurboFan when the browser sees a programmer's "use asm" command in Web page code, the TurboFan team said in February in response to a request to support asm.js.

"We're already beta testing TurboFan in Chrome 41, which significantly improves the performance of numeric code like asm.js," the TurboFan team said. "One could consider this issue 'mostly fixed.' We are actively experimenting with the policy to activate TurboFan, and one signal is the 'use asm' directive" that Web pages use to invoke asm.js.

Updated at 4:41 am PT with further background.