Google Adding ARM Support to Native Client (NaCl)
Google software engineer David Sehr reports that support for ARM has been added to Native Client (NaCl). The company introduced Native Client back in 2011 which allows apps compiled in C and C++ to be run within the Chrome browser on x86 machines. Now after a little tweaking, those same programs will be able to run on ARM-based devices as well starting with version 25 of the Native Client SDK.
"One of the main goals of Native Client is to be architecture-independent, so that all machines can run NaCl content," Sehr said. "If your app uses Native Client and newlib, you’ll now be able to reach users on ARM devices by simply adding an ARM .nexe to your app and making a small adjustment to the Native Client manifest."
Native Client was created so that developers can bring their existing code to the web rather than generate a whole new app. It's not only designed for high performance within a web browser, but it also has security mechanisms set in place to prevent hackers from running malicious code directly on the processor. However until now, its biggest drawback was that it didn’t follow the web philosophy of running on multiple platforms.
With the new SDK now available to developers, the next big step for Google will be to release the next-generation Native Client platform in 2013. Called Portable Native Client (pdf), it will introduce "true architecture-independence" by using LLVM bitcode as the wire format.
"With Portable Native Client, we’ll be able to support not just today’s architectures, but also those of tomorrow – and developers won’t have to recompile their app," he said.
That means programmers will be able to create a single package – using the .pexe extension – that will run on all supported ARM and x86-based devices, including smartphones and tablets. Currently, programmers using the new SDK released on Wednesday must create separate .nexe files for x86 and ARM-based devices.
The drawback to this seemingly good news is that software using Native Client is only available through the Chrome Web Store. Even more, Google Chrome is the only browser that supports it, and Chrome has a limited audience on smartphones and tablets due to compatibility issues. Still, Google is in the right direction, providing programmers a platform that supports C and C++ compiled apps which don't require local installation.