A language-based system is a type of operating system that uses language features to provide security, instead of or in addition to hardware mechanisms. In such systems, code referred to as the trusted base is responsible for approving programs for execution, assuring they cannot perform operations detrimental to the system's stability without first being detected and dealt with. A very common strategy of guaranteeing that such operations are impossible is to base the system around a high-level language, such as Java, whose design precludes dangerous constructs; many are entirely written in such a language, with only the minimum amount of low-level code being used. Since language-based systems can assure ahead of time that they cannot do things that can damage the system (such as corrupting memory by dereferencing dangling pointers), it is possible for them to avoid expensive address space switches needed by traditional OSes; because of this, microkernels are more popular than traditional systems. A more extreme form of this is a high-level language computer architecture, where the trusted base is pushed into hardware, and the entire system is written in a high-level language.