1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
.. _publications_and_presentations:
##############################
Publications and Presentations
##############################
This page lists Native Client and Portable Native Client talks, demos,
and publications from various conferences and academic symposiums.
Recent talks and demos
----------------------
.. list-table::
:header-rows: 1
* - Date
- Event
- Talk
* - 2013/05/16
- `Google I/O 2013 <https://developers.google.com/events/io/2013>`_
- `Introduction to Portable Native Client
<https://www.youtube.com/watch?v=5RFjOec-TI0>`_
* - 2012/12/11
- `Google Developers Live <https://developers.google.com/live/>`_
- `Native Client Acceleration Modules
<https://developers.google.com/live/shows/7320022-5002/>`_ Learn
how to use Native Client to deliver performance where it counts
(`source code <https://github.com/johnmccutchan/NaClAMBase/>`__)
* - 2012/07/26
- `Casual Connect Seattle 2012
<http://casualconnect.org/seattle/content.html>`_
- `Take your C++ To the Web with Native Client
<https://www.youtube.com/watch?v=RV7SMC3IJNo>`_ Includes an
overview of Native Client technology, porting legacy applications
from the Windows desktop, and current third-party use of Native
Client in middleware and games
* - 2012/06/28
- `Google I/O 2012 <https://developers.google.com/events/io/2012>`_
- `Native Client Live
<https://www.youtube.com/watch?v=1zvhs5FR0X8>`_ Demonstrates how
to port an existing C application to Native Client using a Visual
Studio add-in that lets developers debug their code as a trusted
Chrome plugin
* - 2012/06/28
- `Google I/O 2012 <https://developers.google.com/events/io/2012>`_
- `The Life of a Native Client Instruction
<https://www.youtube.com/watch?v=KOsJIhmeXoc>`_ (`slides
<https://nacl-instruction-io12.appspot.com>`__)
* - 2012/03/05
- `GDC 2012 <http://www.gdcvault.com/free/gdc-12>`_
- `Get Your Port On <https://www.youtube.com/watch?v=R281PhQufHo>`_
Porting Your C++ Game to Native Client
* - 2011/08/12
- ---
- `Native Client Update and Showcase
<https://www.youtube.com/watch?v=g3aBfkFbPWk>`_
* - 2011/05/11
- `Google I/O 2011
<https://www.google.com/events/io/2011/index-live.html>`_
- `Beyond JavaScript: Programming the Web with Native Client
<https://www.google.com/events/io/2011/sessions/beyond-javascript-programming-the-web-with-native-client.html>`_
* - 2010/11/04
- `2010 LLVM Developers' Meeting
<http://llvm.org/devmtg/2010-11/>`_
- `Portable Native Client
<http://llvm.org/devmtg/2010-11/videos/Sehr_NativeClient-desktop.mp4>`_
Publications
------------
.. list-table::
:header-rows: 1
* - Title
- Authors
- Published in
* - `Language-Independent Sandboxing of Just-In-Time Compilation and
Self-Modifying Code
<http://research.google.com/pubs/archive/37204.pdf>`_
- Jason Ansel, Petr Marchenko, `Ăšlfar Erlingsson
<http://research.google.com/pubs/ulfar.html>`_, Elijah Taylor,
`Brad Chen <http://research.google.com/pubs/author37895.html>`_,
Derek Schuff, David Sehr, `Cliff L. Biffle
<http://research.google.com/pubs/author38542.html>`_, Bennet
S. Yee
- ACM SIGPLAN Conference on Programming Language Design and
Implementation (PLDI), 2011
* - `Adapting Software Fault Isolation to Contemporary CPU
Architectures <http://research.google.com/pubs/pub35649.html>`_
- David Sehr, Robert Muth, `Cliff L. Biffle
<http://research.google.com/pubs/author38542.html>`_, Victor
Khimenko, Egor Pasko, Bennet S. Yee, Karl Schimpf, `Brad Chen
<http://research.google.com/pubs/author37895.html>`_
- 19th USENIX Security Symposium, 2010, pp. 1-11
* - `Native Client: A Sandbox for Portable, Untrusted x86 Native Code
<http://research.google.com/pubs/pub34913.html>`_
- Bennet S. Yee, David Sehr, Greg Dardyk, `Brad Chen
<http://research.google.com/pubs/author37895.html>`_, Robert
Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas
Fullagar
- IEEE Symposium on Security and Privacy (Oakland '09), 2009
* - `PNaCl: Portable Native Client Executables
<http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf>`_
- Alan Donovan, Robert Muth, Brad Chen, David Sehr
- February 2010
External Publications
---------------------
In these articles outside developers and Google engineers describe their
experience porting libraries and applications to Native Client and
Portable Native Client. They share their insights and provide some tips
and instructions for how to port your own code.
Porting Nebula3 to Portable Native Client
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Andre Weissflog ported his Nebula3 engine to Portable Native Client (see
`his demos <http://www.flohofwoe.net/demos.html>`__). He discusses
`build systems
<http://flohofwoe.blogspot.de/2013/08/emscripten-and-pnacl-build-systems.html>`__
and `app entry
<http://flohofwoe.blogspot.de/2013/09/emscripten-and-pnacl-app-entry-in-pnacl.html>`__.
Porting Go Home Dinosaurs
^^^^^^^^^^^^^^^^^^^^^^^^^
`Fire Hose Games <http://firehosegames.com>`_ developed a new webgame
`Go Home Dinosaurs
<https://chrome.google.com/webstore/detail/icefnknicgejiphafapflechfoeelbeo>`_.
It features tower defense, dinosaurs, and good old fashioned BBQ. This
article explains their experiences developing for Native Client
including useful lessons learned to help you get started.
`Read more <http://www.gamasutra.com/view/feature/175210/the_ins_and_outs_of_native_client.php>`__
Porting Zombie Track Meat
^^^^^^^^^^^^^^^^^^^^^^^^^
`Fuzzycube Software <http://www.fuzzycubesoftware.com>`_, traditionally
a mobile game development studio, talks about their adventure into the
web, porting the undead decathlon `Zombie Track Meat
<https://chrome.google.com/webstore/detail/jmfhnfnjfdoplkgbkmibfkdjolnemfdk/reviews>`_
from Objective C to Native Client.
`Read more <http://fuzzycube.blogspot.com/2012/04/zombie-track-meat-post-mortem.html>`__
Porting AirMech
^^^^^^^^^^^^^^^
`Carbon Games <http://carbongames.com/>`_ chose Native Client as a
solution for cross-platform delivery of their PC game `AirMech
<https://chrome.google.com/webstore/detail/hdahlabpinmfcemhcbcfoijcpoalfgdn>`_
to Linux and Macintosh in lieu of native ports. They describe the
porting process on their blog.
`Read more <http://carbongames.com/2012/01/Native-Client>`__
Porting XaoS
^^^^^^^^^^^^
Google engineers ported `XaoS
<http://wmi.math.u-szeged.hu/xaos/doku.php>`_, an interactive graphical
exploration tool for fractals, to Native Client. Many of the porting
problems they encountered are quite common, and the techniques described
here should help with similar porting efforts. Some of the background
information might also benefit those who are writing new Native Client
applications.
`Read more
<https://developers.google.com/native-client/community/porting/xaos>`__
.. TODO Fix link once it is ReST-ified.
Porting MAME
^^^^^^^^^^^^
Multiple Arcade Machine Emulator (`MAME <http://mamedev.org>`_) is an
emulator for a large number of classic arcade games. Google engineers
ported it to Native Client. This article discusses the overall porting
strategy, dealing with ``newlib`` incompatibilities, and handling
binaries that are built and run as part of the build process.
`Read more
<https://developers.google.com/native-client/community/porting/MAME>`__
.. TODO Fix link once it is ReST-ified.
How to Port SDL Games
^^^^^^^^^^^^^^^^^^^^^
`Simple Directmedia Layer <http://www.libsdl.org>`_ (SDL) is a popular
library that many games and applications use to access sound and video
capabilities on end-user machines. Native Client bindings for SDL are
available on naclports, making it possible to port SDL-based games to
Native Client. This article by Google engineers describes how to
complete such a port, focusing on writing the glue code for fusing your
game with the Pepper APIs.
`Read more
<https://developers.google.com/native-client/community/porting/SDLgames>`__
|