Home | History | Annotate | Download | only in reference
      1 {{+bindTo:partials.standard_nacl_article}}
      2 
      3 <section id="design-documents">
      4 <h1 id="design-documents">Design Documents</h1>
      5 <p>This is a list of design documents for Native Client.  This list
      6 generally covers designs that were implemented.  It does not cover
      7 PPAPI (Pepper).</p>
      8 <p>Dynamic loading and linking:</p>
      9 <ul class="small-gap">
     10 <li><a class="reference external" href="http://code.google.com/p/nativeclient/wiki/DynamicLoadingOptions">Dynamic loading: Options for supporting dynamic loading, and how they interact with dynamic libraries</a> (2010)</li>
     11 </ul>
     12 <p>Handling faults (hardware exceptions) in untrusted code:</p>
     13 <ul class="small-gap">
     14 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1T2KQitbOBz_ALQtr4ONcZcSNCIKNla3DI7t6dMcx5AE/edit">NaCl untrusted fault handling:  guide to the implementation</a></li>
     15 </ul>
     16 <p>Sandbox security on Windows:</p>
     17 <ul class="small-gap">
     18 <li><a class="reference external" href="https://src.chromium.org/viewvc/native_client/trunk/src/native_client/documentation/windows_ntdll_patch.txt?revision=HEAD">Native Client&#8217;s NTDLL patch on x86-64 Windows</a> (2012)</li>
     19 </ul>
     20 <p>Debugging using GDB:</p>
     21 <ul class="small-gap">
     22 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1OtVmgJFC7X7aa57DnyiL4V10vAVax_vcRJp4Mw86lIU/edit">Providing a GDB debug stub integrated into native_client</a> (2012).  This was the main design doc for NaCl&#8217;s GDB debug stub.</li>
     23 <li><a class="reference external" href="https://docs.google.com/a/google.com/document/d/1tu2FEA4EKhBH669iUgRZBDBcEd6jzNQ-0OVn9JI4_qk/edit">Native Client Support for Debugging, Crash Reporting and Hardware Exception Handling &#8211; high level design</a> (Jan 2012)</li>
     24 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/19qkl5R4lg-AIDf648Ml-gLRq6eZscjvvdMNWkVu2wLk/edit">NaCl: three kinds of crash handling</a> (2012).  This is an earlier document.  It contains notes on trusted vs. untrusted crash handling, vs. GDB support.</li>
     25 </ul>
     26 <p>PNaCl:</p>
     27 <ul class="small-gap">
     28 <li><a class="reference external" href="https://docs.google.com/a/google.com/document/d/1xUlWyXnaRnIUBnmKdOBkgq2O9OqfvaRBLaz82pNdKt0/edit">Stability of the PNaCl bitcode ABI</a> (2013).  This is an overview of ABI stability issues and the features of LLVM IR that PNaCl is removing.</li>
     29 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1HvZJVwS9KeTc0jUvoQjbLapRbStHk3mZ0rPDUHNN96Y/edit">Incrementally simplifying the PNaCl bitcode format</a> (2013)</li>
     30 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1Bub1bV_IIDZDhdld-zTULE2Sv0KNbOXk33KOW8o0aR4/edit">SJLJ EH: C++ exception handling in PNaCl using setjmp()+longjmp()</a> (2013)</li>
     31 </ul>
     32 <p>Security hardening:</p>
     33 <ul class="small-gap">
     34 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1eskaI4353XdsJQFJLRnZzb_YIESQx4gNRzf31dqXVG8/edit">Hiding PNaCl&#8217;s x86-64 sandbox base address</a> (2013).  This was part of the security hardening we did for enabling PNaCl on the open web.</li>
     35 </ul>
     36 <p>MIPS support:</p>
     37 <ul class="small-gap">
     38 <li><a class="reference external" href="https://code.google.com/p/nativeclient/issues/attachmentText?id=2275&aid=22750018000&name=native-client-mips-0.4.txt">Design for the NaCl MIPS sandbox</a> (2012)</li>
     39 </ul>
     40 <p>Cleanup work:</p>
     41 <ul class="small-gap">
     42 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1lycqf4yPMC84011yvuyO_50V8c8COQ8dAe5rNvbeB9o/edit">Removing NaCl&#8217;s dependency on Chromium</a> (2012)</li>
     43 </ul>
     44 <p>DEPS rolls:</p>
     45 <ul class="small-gap">
     46 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1jHoLo9I3CCS1_-4KlIq1OiEMv9cmMuXES2Z9JVpmPtY/edit">Semi-automated NaCl DEPS rolls: Updates to nacl_revision field in Chromium&#8217;s DEPS file</a> (2013).  This is a description of current practice rather than a design doc.</li>
     47 </ul>
     48 <h2 id="obsolete-not-implemented">Obsolete (not implemented)</h2>
     49 <p>PNaCl multi-threading support:  The following proposals do not reflect what was implemented in PNaCl in the end.  They are listed here for historical reference.</p>
     50 <ul class="small-gap">
     51 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1HcRiGOaaPLk7pQrGnjXceoM7Px3IwOjjwdiVvJVQNr4/edit">Multi-threading support for a first release of PNaCl</a> (2013): Proposal for mutex_v2/cond_v2 IRT interfaces.</li>
     52 <li><a class="reference external" href="https://docs.google.com/a/chromium.org/document/d/1HcRiGOaaPLk7pQrGnjXceoM7Px3IwOjjwdiVvJVQNr4/edit">Explicit vs. implicit atomicity guarantees in PNaCl</a> (2013): Discussion about how to handle atomic memory operations.</li>
     53 </ul>
     54 </section>
     55 
     56 {{/partials.standard_nacl_article}}
     57