Google Chrome beta turns on native code machine

Native Client in the chute

With its latest Chrome beta, Google has turned on Native Client, its rather bold effort to securely run native applications inside the browser.

This means that Native Client is slated to make its official debut with Chrome 14 in September.

In a recent interview with The Register, Google vice president of engineering Linus Upson said that initially, Chrome will run only Native Client–based applications distributed through the company's Chrome Web Store. Through the store, Google will ensure that developers offer versions of their applications for both x86 and ARM, the two processor instruction sets currently supported by Native Client.

Native Client allows Chrome to execute C and C++ with security restrictions that are, according to Google, similar to what you get with JavaScript. The technology is designed to run games and certain other browser applications at speeds that exceed the capabilities of today's JavaScript.

"While the [Chrome] team has made JavaScript tremendously faster over the last two years, there's a lot of applications out there that have existing audiences that are [written in native code, such as C and C++], and there are a few that are specialized applications that need every last bit of performance the hardware can offer. Native Client is a way of addressing both those issues," Upson has told us in the past.

Google has also built a new cross-platform plug-in API known as Pepper, which can provide C and C++ bindings to the capabilities of JavaScript and HTML5, bridging the gap between Native Client and the browser proper. Pepper is already used with the Adobe Flash player that Google integrated with Chrome last year.

Mozilla and Opera have both expressed reservations about Native Client, saying it undermines the web's simple, contained, cross-platform programming model. But Google is answering these criticisms with a new version of Native Client that can run across all processors. Portable Native Client – or PNaCl, pronounced "pinnacle" — compiles C, C++, and other languages into the Low Level Virtual Machine (LLVM) bitcode format, which allows for client-side translation into the client's native instruction set.

This will not be ready in time for Chrome 14, and Google indicates that the existing incarnation of PNaCl is slower that the original Native Client. But Upson told us that when released, PNaCl will offer speeds comparable to JavaScript. ®