1. A method for safely executing a native code module on a computing device, where the native code module comprises untrusted program code expressed using an instruction set architecture associated with the computing device, comprising: receiving the native code module; loading the native code module into a secure runtime environment; executing a set of instructions from the native code module in the secure runtime environment; wherein the secure runtime environment enforces code integrity, control flow integrity, and data integrity for the native code module; and wherein the secure runtime environment moderates at least one of: which resources can be accessed by the native code module on the computing device; and how the resources can be accessed by the native code module on the computing device.