NaCl, Native Client
The Native Client technology wants to accelerate Web applications at the point of giving them the speed of 3D games, allowing to run software programmed in C or C++ or another language in the browser.
A Web application then can run compiled native code. It is secured like JavaScript. This may allow the browser to be an alternative to the Metro interface in Windows 8.
Native Client, abbreviated NaCl, is supported by Chrome. Firefox supports it through a plugin. Google encourages game developers to make a version for Chrome. The Unity 3D framework already allows to automatically generate a version for the browser.
Google itself ported the desktop software QuickOffice acquired in 2012 to NaCl, providing an alternative to Office in the browser.
To make the code more portable, developers are working to interface NaCl with the LLVM compiler which produces intermediate code, in turn compiled into machine code.
Note that NaCl is the formula of sodium chloride, ie the common salt. Salt for your apps...
Software required to develop
The end user will not need for these tools. To develop on Native Client, you will need this software:
- A local server, like Xampp.
- GNU Make to compile the examples or Visual Studio Express under Windows.
- Python for some scripts.
LLVM offers a better support to Native Client since December 2, 2011. The new version of the C++ development platform facilitates the creation of applications under Native Client. It was already possible to use it in this context, but it was not in its design. Things have changed.
See LLVM 3.0, what's new.
Creating a programming platform for Native Client
The instructions can change over time, look at the Getting Started manual for the last version.
- Download the Native Client SDK specific to an operating system, among Windows, Linux or MacOS.
- Create a directory, for example nacl, and unpack the contents.
- Read the Getting Started manual.
- Try a demonstration from command line.
- Bookmark the nacl/build/native_client page.
nacl is your installation directory. - Close browsers supporting Native Client.
- Install the plugin at command line with scon.bat on Windows and scon on Unix.
To do this, run scon.bat or scon in /nacl/build/native_client/ - Start a local server as Wamp.
- Perform a check with the test page:
http://localhost:5103/scons-out/nacl-x86-32/staging/examples.html
Who is in the directory /nacl/build/native_client/.
With Chrome 14, NaCl has an interface between HTML 5 and the native code named Pepper (Pepper) or more precisely Pepper Plugin API, a new plugin system that replaces the current system invented by Netscape.
On older version you have to enable NaCl. Type about:flags in the address bar of Chrome and go to the entry native client. Click on enable.
PNaCl
Portable Native Client, or PNaCl, to be pronounced like Pinnacle, is a complement to NaCl which should remove the disadvantage of having to compile the application for each system. This is a set of tools that convert the NaCl application to LLVM bitcode. The latter is contained in a .pexe file which can be automatically converted into binary code at execution time.
It is also possible to directly execute LLVM by a virtual machine once implemented in the browser. This then make of PNaCl an alternative to Asm.js.
A PNaCl virtual machine is available in Chrome version 29.
Linux in the browser
With an emulator written entirely in JavaScript, it is possible to run Linux programs from the command line with JSLinux. This may be another alternative to NaCl.
For example, try:
tcc-run hello.c
Then type ls to see files in the directory. Or to edit the file type:
emacs hello.c
Tools and documents
- Native Client. The project on Google Code.
- GTK3 in HTML 5. Rendering a native GTK app into Canvas.
- NaClBox. Port of DOSBox on Native client, to run old games.
- Porting a game on NaCL. An experiment on AirMech.
See also...
- Asm.js. This subset of JavaScript is like a bytecode and a mean to build fast and portable apps in the briowser.
