Insoftware engineering, acompatibility layer is an interface that allowsbinaries for a legacy or foreign system to run on a host system. This translatessystem calls for the foreign system into native system calls for the host system. With somelibraries for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allowhardware emulation.
Windows's application compatibility layers to attempt to run poorly written applications or those written for earlier versions of the platform.[1]
KernelEX, which runs some Windows 2000/XP programs on Windows 98/Me, and Windows XP programs on Windows 2000.
Prism is aMicrosoft emulator for ARM-powered Windows devices that translates the underlying code of software built for traditional x86 and x64 binaries fromWindows 11 24H2[2]
Windows Subsystem for Linux v1, which runs Linux binaries on Windows via a compatibility layer which translates Linux system calls into native windows system calls.
Lina, which runs some Linux binaries on Windows,Mac OS X and Unix-like systems with native look and feel.
ACL allows Android apps to natively execute on Tizen, webOS, or MeeGoo phones.[3][4][5]
Alien Dalvik allows Android apps to run on MeeGo[6] and Meamo.[7] Alien Dalvik 2.0 was also revealed for iOS on an iPad, however unlike MeeGo and Meamo, this version ran from the cloud.[8][9][10]
Darling, a translation layer that attempts to run Mac OS X and Darwin binaries on Linux.
Rosetta 2,Apple's translation layer bundled with macOS Big Sur to allow x86-64 exclusive applications to run on ARM hardware.
Executor, which runs 68k-based "classic" Mac OS programs in Windows, Mac OS X and Linux.
touchHLE is a compatibility layer (referred to as a “high-level emulator”) for Windows and macOS made by Andrea "hikari_no_yume" (Sweden) in early 2023 to run legacy 32-bit iOS software.
ipasim is a compatibility layer for Windows that uses WinObjC to translate code from Objective C to native Windows code.[11]
aah (sic) is a program for macOS to run iOS apps on macOS 10.15 "Catalina" on x86 processors via translation of the programs via theCatalyst framework.[12]
Hybris, library that translates Bionic into glibc calls.
2ine, a project to runOS/2 application on Linux[13]
Cygwin, aPOSIX-compatible environment that runs natively on Windows.[14]
brs-emu is a compatibility layer to run Roku software via BrightScript on other platforms: Web, Windows, macOS, and Linux.[15]
FEX-Emu runs x86 Linux applications on ARM64 Linux, and can be paired with Wine to run Windows applications.
OneCoreAPI, which attempts to run programs for Windows Vista and newer on Windows XP.[16]
VxKex, a set of extensions to let Windows 7 run newer versions of programs meant for Windows 10 and newer.[17]
FreeBSD's Linux compatibility layer, which enables binaries built specifically forLinux to run onFreeBSD[18] the same way as the native FreeBSD API layer.[19] FreeBSD also has some Unix-like system emulations, including NDIS, NetBSD, PECoff, SVR4, and different CPU versions of FreeBSD.[20]
NetBSD has several Unix-like system emulations.[21]
The PEACE Project (aka COMPAT_PECOFF) has Win32 compatible layer for NetBSD. The project is now inactive.
OnRSTS/E for thePDP-11 series ofminicomputers, programs written to run on theRT-11 operating system could run (without recompiling) on RSTS through the RT-11 Run-Time System having its EMT flag set, meaning that an RT-11EMT instruction that matches a RSTS EMT is diverted to the RT-11 Run-Time System which translates them to the equivalent RSTS EMT. Programs written to take advantage of RSTS directly (or calls to RSTS within the Run-Time system itself) signal this by having asecond EMT instruction (usually EMT 255) immediately before the actual RSTS EMT code.
A compatibility layer avoids both the complexity and the speed penalty of full hardwareemulation. Some programs may even run faster than the original,e.g. some Linux applications running on FreeBSD's Linux compatibility layer may perform better than the same applications on Red Hat Linux. Benchmarks are occasionally run on Wine to compare it to Windows NT-based operating systems.[23]
Even on similar systems, the details of implementing a compatibility layer can be quite intricate and troublesome; a good example is theIRIX binary compatibility layer in theMIPS architecture version ofNetBSD.[24]
A compatibility layer requires the host system'sCPU to be (upwardly)compatible to that of the foreign system. For example, a Microsoft Windows compatibility layer is not possible onPowerPC hardware because Windows requires anx86 CPU. In this case full emulation is needed.
Hardware compatibility layers involve tools that allowhardware emulation. Some hardware compatibility layers involvebreakout boxes because breakout boxes can provide compatibility for certaincomputer buses that are otherwise incompatible with the machine.