Compatibility layer

Compatibility layer is a set of libraries and utility programs that allows users to run programs originally written for one environment in another one. Wine and Cygwin can serve two best known examples, and they also demonstrate two different levels to do it: Wine creates an environment where unmodified Windows binaries can run, and Cygwin supposes that every program has to be recompiled, but recompilation is made simple - sometimes it is hard to notice when logged through ssh that it is not a strange setup of GNU/Linux with gcc for some reason appending .exe to the names of executable files.

Compatibility layer usually do not form an enclosed space (like virtual machine) - Wine development allows Xine and MPlayer (I guess GStreamer too) to load Windows dynamic libraries while being native GNU/Linux applications in most known builds; as for Cygwin - some programs are ported to Windows from GNU/Linux by compiling using Cygwin environment and bundling with one nearly-megabyte Cygwin library. They can load ordinary Windows libraries and are in all respects ordinary Windows applications when built this way, though they retain the same source code thay had in GNU/Linux.