================ Design Documents ================ This is a list of design documents for Native Client. This list generally covers designs that were implemented. It does not cover PPAPI (Pepper). Dynamic loading and linking: * `Dynamic loading: Options for supporting dynamic loading, and how they interact with dynamic libraries `_ (2010) Handling faults (hardware exceptions) in untrusted code: * `NaCl untrusted fault handling: guide to the implementation `_ Sandbox security on Windows: * `Native Client's NTDLL patch on x86-64 Windows `_ (2012) Debugging using GDB: * `Providing a GDB debug stub integrated into native_client `_ (2012). This was the main design doc for NaCl's GDB debug stub. * `Native Client Support for Debugging, Crash Reporting and Hardware Exception Handling -- high level design `_ (Jan 2012) * `NaCl: three kinds of crash handling `_ (2012). This is an earlier document. It contains notes on trusted vs. untrusted crash handling, vs. GDB support. PNaCl: * `Stability of the PNaCl bitcode ABI `_ (2013). This is an overview of ABI stability issues and the features of LLVM IR that PNaCl is removing. * `Incrementally simplifying the PNaCl bitcode format `_ (2013) * `SJLJ EH: C++ exception handling in PNaCl using setjmp()+longjmp() `_ (2013) Security hardening: * `Hiding PNaCl's x86-64 sandbox base address `_ (2013). This was part of the security hardening we did for enabling PNaCl on the open web. MIPS support: * `Design for the NaCl MIPS sandbox `_ (2012) Cleanup work: * `Removing NaCl's dependency on Chromium `_ (2012) DEPS rolls: * `Semi-automated NaCl DEPS rolls: Updates to nacl_revision field in Chromium's DEPS file `_ (2013). This is a description of current practice rather than a design doc. Obsolete (not implemented) ========================== 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. * `Multi-threading support for a first release of PNaCl `_ (2013): Proposal for mutex_v2/cond_v2 IRT interfaces. * `Explicit vs. implicit atomicity guarantees in PNaCl `_ (2013): Discussion about how to handle atomic memory operations.