machines have been used as an implementation mechanism for programming languages for more than thirty years. In their latest incarnation execution engines based on virtual machines offer “Managed Execution”. The implications of this change go far beyond the superficial advantages of platform portability and go to the heart of software reliability. In this paper it is argued that managed execution platforms such as the .NET Common Language Runtime and the Java Virtual Machine form the only reasonable basis for trustworthy component software. There is also an overview of current research in this field, including the vexed question of version evolution.