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:

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.

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

See also...