In
software engineering
Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, a compatibility layer is an interface that allows
binaries for a legacy or foreign system to run on a host system. This translates
system calls for the foreign system into native system calls for the host system. With some
libraries 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 allow
hardware emulation.
Software
Examples include:
*
Wine
Wine is an alcoholic drink made from Fermentation in winemaking, fermented fruit. Yeast in winemaking, Yeast consumes the sugar in the fruit and converts it to ethanol and carbon dioxide, releasing heat in the process. Wine is most often made f ...
, which runs some
Microsoft Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
binaries on
Unix-like
A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
systems using a program loader and the
Windows API implemented in DLLs
*
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
's application compatibility layers to attempt to run poorly written applications or those written for earlier versions of the platform.
* KernelEX, which runs some Windows 2000/XP programs on Windows 98/Me.
* Prism is a
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
emulator for ARM-powered Windows devices that translates the underlying code of software built for traditional x86 and x64 binaries from
Windows 11 24H2
*
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.
*
Anbox, an
Android compatibility layer for
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
.
* ACL allows Android apps to natively execute on Tizen, webOS, or MeeGoo phones.
* Alien Dalvik allows Android apps to run on MeeGo and Meamo. Alien Dalvik 2.0 was also revealed for iOS on an iPad, however unlike MeeGo and Meamo, this version ran from the cloud.
*
Darling, a translation layer that attempts to run Mac OS X and Darwin binaries on Linux.
*
Rosetta 2,
Apple
An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
'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. The compatibility layer was only able to run one software,
Super Monkey Ball as of version 0.1.0. As of version 0.1.2, support for the Lite version of Super Monkey Ball, as well as
Crash Bandicoot Nitro Kart 3D and ''Touch & Go'' has been added. She says that fans will have to "be patient" for anything else to emulate. It uses code translation along with CPU emulation when necessary, and specifically stated that she does not want to be compatible with 64 bit software. Later a pull request to add support for Android was issued, which allowed Android devices to run Super Monkey Ball for iOS.
* ipasim is a compatibility layer for Windows that uses WinObjC to translate code from Objective C to native Windows code.
* 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 the
Catalyst framework.
*
Hybris, library that translates Bionic into glibc calls.
*
2ine, a project to run
OS/2
OS/2 is a Proprietary software, proprietary computer operating system for x86 and PowerPC based personal computers. It was created and initially developed jointly by IBM and Microsoft, under the leadership of IBM software designer Ed Iacobucci, ...
application on Linux
*
Cygwin, a
POSIX
The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
-compatible environment that runs natively on Windows.
* brs-emu is a compatibility layer to run Roku software via BrightScript on other platforms: Web, Windows, macOS, and Linux.
Compatibility layer in
kernel:
*
FreeBSD's Linux compatibility layer, which enables binaries built specifically for
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
to run on
FreeBSD the same way as the native FreeBSD API layer. FreeBSD also has some Unix-like system emulations, including NDIS, NetBSD, PECoff, SVR4, and different CPU versions of FreeBSD.
*
NetBSD has several Unix-like system emulations.
*
Columbia Cycada, an unreleased compatibility layer which runs
Apple iOS applications on
Android systems
*
Windows Subsystem for Linux provides a
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
-compatible kernel interface developed by Microsoft.
The PEACE Project(aka COMPAT_PECOFF) has Win32 compatible layer for NetBSD. The project is now inactive.
* On
RSTS/E
RSTS () is a multi-user time-sharing operating system developed by Digital Equipment Corporation (DEC, now part of Hewlett-Packard) for the PDP-11 series of 16-bit minicomputers. The first version of RSTS (RSTS-11, #Versions, Version 1) was implem ...
for the
PDP-11 series of
minicomputers, programs written to run on the
RT-11
RT-11 (Real-time 11) is a discontinued small, low-end, single-user real-time operating system for the full line of Digital Equipment Corporation PDP-11 16-bit computers. RT-11 was first implemented in 1970. It was widely used for real-time compu ...
operating system could run (without recompiling) on RSTS through the RT-11 Run-Time System having its EMT flag set, meaning that an RT-11
EMT 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 a ''second'' 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 hardware
emulation. 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.
Even on similar systems, the details of implementing a compatibility layer can be quite intricate and troublesome; a good example is the
IRIX binary compatibility layer in the
MIPS architecture
MIPS (Microprocessor without Interlocked Pipelined Stages) is a family of reduced instruction set computer (RISC) instruction set architectures (ISA)Price, Charles (September 1995). ''MIPS IV Instruction Set'' (Revision 3.2), MIPS Technologies ...
version of
NetBSD.
A compatibility layer requires the host system's
CPU to be (upwardly)
compatible to that of the foreign system. For example, a Microsoft Windows compatibility layer is not possible on
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
hardware because Windows requires an
x86 CPU. In this case full emulation is needed.
Hardware
Hardware compatibility layers involve tools that allow
hardware emulation. Some hardware compatibility layers involve
breakout boxes because breakout boxes can provide compatibility for certain
computer buses that are otherwise incompatible with the machine.
See also
*
Hypervisor
*
Paravirtualization
*
Emulator
In computing, an emulator is Computer hardware, hardware or software that enables one computer system (called the ''host'') to behave like another computer system (called the ''guest''). An emulator typically enables the host system to run sof ...
*
Cross-platform virtualization
*
Computing platform
*
Shim (computing)
*
Driver wrapper
*
Glue code
References
External links
Windows XP Application Compatibility Technologies(Dave Morehouse and Todd Phillips, Microsoft Corporation, 1 June 2001)
{{DEFAULTSORT:Compatibility Layer