1. A method for supporting resilient execution of computer programs comprising the steps of: providing a resilient store wherein information in the resilient store can be accessed in the event of a failure; periodically checkpointing application state in the resilient store; providing a resilient executor which comprises software which executes applications by catching failures; using the resilient executor to execute at least one application; and in response to the resilient executor detecting a failure, restoring application state information from a checkpoint in the resilient store, the resilient executor resuming execution of the at least one application.