This page answers the most commonly asked questions about Native Client. If you don't find the answer to your question here, please try the [discussion group] (http://groups.google.com/group/native-client-discuss). Also sign up for the announcement group.

Contents

General Native Client Questions

What is Native Client?

Native Client is an open-source research technology from Google for running x86 native code in web applications, with the goal of maintaining the browser neutrality, OS portability, and safety that people expect from web apps.

Why is the download so large?

As this release is mainly intended for the security and research communities, we focused on making them self-contained, and making it build robustly, at the cost of download size. For the “nacl_mac” download, here's what you get (uncompressed sizes):

  • SDK 3rd party source for gcc, binutils, and other tools (67MB)
  • Prebuilt SDK (60MB)
  • Native Client prebuilt binaries (plug-in, container, examples) (22MB)
  • Image source for the map used to generate the spinning globe (5MB)
  • Source, documentation, everything else (9MB)

One download gives you everything you need to try the system, build your own Native Client modules, and even build the SDK, plugins, and secure module container.

What's the process for becoming a contributor?

Before sending us any code, please sign a Contributor License Agreement (CLA). The CLA protects you and us.

Once you've signed the CLA, you can contribute code by posting the diffs to the [Native Client Discuss group] (http://groups.google.com/group/native-client-discuss).

Implementation Questions

Why doesn't Native Client work on 64-bit Windows?

The short answer is that we intend to support 64-bit Windows, but it‘s going to take some time because our 32-bit Windows solution depends on APIs that aren’t in some 64-bit versions. For the long answer, see the [discussion group post] (http://groups.google.com/group/native-client-discuss/browse_thread/thread/3683b35e9ec74f02).

Why does Native Client use an allowlist for the URLs of untrusted modules?

The allowlist is a precaution while we work on hardening the system and on features that are required for defense in depth. Eventually, you should be able to load Native Client modules from any http URL.

How can I make Native Client load modules from non-localhost URLs?

Edit the allowlist in npapi_plugin/origin.cc. For example, if you want to load modules from a Google Code project named kw-test, add http://kw-test.googlecode.com like this:

bool OriginIsInAllowlist(std::string origin) {
  static char const *allowed_origin[] = {
    "http://localhost",
    "http://localhost:80",
    "http://localhost:5103",
    "http://kw-test.googlecode.com",  // NEW: ALLOWLIST MY PROJECT'S WEBSITE
  };
  ...
}

After modifying the allowlist, rebuild as described in [Building Native Client] (http://nativeclient.googlecode.com/svn/trunk/src/native_client/documentation/building.html), and then reinstall as described in [Getting Started] (http://nativeclient.googlecode.com/svn/trunk/src/native_client/documentation/getting_started.html).

Build/Install Questions

Why isn't the plug-in loading?

Assuming you've already [installed the plug-in] (http://nativeclient.googlecode.com/svn/trunk/src/native_client/documentation/getting_started.html#plugin), verify that all files required by the plug-in are in place. For example, on Windows three files are required: sel_ldr.exe, SDL.dll, and npGoogleNaClPlugin.dll. See FilesInstalled for details.

Why is make failing in cygwin (Windows)?

See the explanation and workaround in the discussion group: [notes for makefiles, cygwin, and windows] (http://groups.google.com/group/native-client-discuss/browse_thread/thread/a14268f6bd36cb83).

I see a warning in my Windows build: “is Pywin32 present?” Should I worry?

No, not as long as your build finished successfully. This message is generated by our build system and means that an optional component has not been found.