Introduce Native Client
Web Browser can
● Render html
● handle various object(Multimedia) via plugins
o flash
o quicktime
o applet
● perform ecma script
o aka java script
Plugin system
● not portable
o CPU Architecture
o OS
o Browser
 but many browsers were implemented npapi
● not integrated browser
● insecure
o can access Hardware or OS resource directly
o infect unstablitiy
 chrome, firefox run plugins in other process
space
ECMA Script
● poor performance
● can't hide sourcecode
NaCL Can
● perform native code that has depend on
CPU Archtecture
o not depend on OS, Browser(?)
o modified ELF binary form
o browser has integrated loader(linker) can run native
code
● native client can perform limited operation
o run in sandbox
o perform only primitive function such as
 graphic
 audio
 input event
 message with webapplication
NaCL Cannot
● access hardware or OS resource directly.
o Native client can access resource that browser
allowed.
o These will be expand when html5 grow up
● create process
o For security reason, Native client can't create
process
o but can create thread
o In near future, webworker will be integrated
Plugins vs NaCL
● http://goo.gl/XCygS
Applications
● Gaming
o Graphic rendering
o Audio mixing with low latency
o Physics Engine
● Enterprise Application that require heavy
computation
● Multimedia
NaCL SDK
● http://code.google.com/intl/ko/chrome/native
client/docs/download.html
● currently support
o Development Enrivonment
 Windows
● x86, x86-64
 MacOSX
● x86-64
 Linux
● x86, x86-64
 XXX
● arm, arm-thumb2
o Language
NaCL in HTML
● http://nacl-quake.appspot.com/
● <embed name="nacl_module" id="Quake"
width="800" height="600" src="quake.nmf"
type="application/x-nacl">
NaCL Manifest
● quake.nmf
{
"program": {
"x86-32": {"url": "quake32.nexe"},
"x86-64": {"url": "quake64.nexe"}
}
}
● Full specification
o http://www.chromium.org/nativeclient/desi
gn-documents/nacl-manifest-specification
Future
● NaCL with glibc
o support shared library
● PNaCL
o Portable NaCL
o perform llvm bytecode
● NaCL in other browser
o Two NaCL implements exist
 PPAPI (chrome)
 NPAPI (netscape)
● mozilla already rejected NaCL

Introduce native client

  • 1.
  • 2.
    Web Browser can ●Render html ● handle various object(Multimedia) via plugins o flash o quicktime o applet ● perform ecma script o aka java script
  • 3.
    Plugin system ● notportable o CPU Architecture o OS o Browser  but many browsers were implemented npapi ● not integrated browser ● insecure o can access Hardware or OS resource directly o infect unstablitiy  chrome, firefox run plugins in other process space
  • 4.
    ECMA Script ● poorperformance ● can't hide sourcecode
  • 5.
    NaCL Can ● performnative code that has depend on CPU Archtecture o not depend on OS, Browser(?) o modified ELF binary form o browser has integrated loader(linker) can run native code ● native client can perform limited operation o run in sandbox o perform only primitive function such as  graphic  audio  input event  message with webapplication
  • 6.
    NaCL Cannot ● accesshardware or OS resource directly. o Native client can access resource that browser allowed. o These will be expand when html5 grow up ● create process o For security reason, Native client can't create process o but can create thread o In near future, webworker will be integrated
  • 7.
    Plugins vs NaCL ●http://goo.gl/XCygS
  • 8.
    Applications ● Gaming o Graphicrendering o Audio mixing with low latency o Physics Engine ● Enterprise Application that require heavy computation ● Multimedia
  • 9.
    NaCL SDK ● http://code.google.com/intl/ko/chrome/native client/docs/download.html ●currently support o Development Enrivonment  Windows ● x86, x86-64  MacOSX ● x86-64  Linux ● x86, x86-64  XXX ● arm, arm-thumb2 o Language
  • 10.
    NaCL in HTML ●http://nacl-quake.appspot.com/ ● <embed name="nacl_module" id="Quake" width="800" height="600" src="quake.nmf" type="application/x-nacl">
  • 11.
    NaCL Manifest ● quake.nmf { "program":{ "x86-32": {"url": "quake32.nexe"}, "x86-64": {"url": "quake64.nexe"} } } ● Full specification o http://www.chromium.org/nativeclient/desi gn-documents/nacl-manifest-specification
  • 12.
    Future ● NaCL withglibc o support shared library ● PNaCL o Portable NaCL o perform llvm bytecode ● NaCL in other browser o Two NaCL implements exist  PPAPI (chrome)  NPAPI (netscape) ● mozilla already rejected NaCL

Editor's Notes

  • #13 NaCL: Sodium chloride PNaCL: Pinnacle Pepper