Compatibility layer

Last updated

In software engineering, 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.

Contents

Software

Examples include:

Compatibility layer in kernel:

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. [23]

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 version of NetBSD. [24]

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 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

Related Research Articles

<span class="mw-page-title-main">Wine (software)</span> Windows compatibility software

Wine is a free and open-source compatibility layer to allow application software and computer games developed for Microsoft Windows to run on Unix-like operating systems. Developers can compile Windows applications against WineLib to help port them to Unix-like systems. Wine is predominantly written using black-box testing reverse-engineering, to avoid copyright issues. No code emulation or virtualization occurs. Wine is primarily developed for Linux and macOS.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

A computing platform, digital platform, or software platform is the infrastructure on which software is executed. While the individual components of a computing platform may be obfuscated under layers of abstraction, the summation of the required components comprise the computing platform.

In computer science, dynamic recompilation is a feature of some emulators and virtual machines, where the system may recompile some part of a program during execution. By compiling during execution, the system can tailor the generated code to reflect the program's run-time environment, and potentially produce more efficient code by exploiting information that is not available to a traditional static compiler.

In computing, binary translation is a form of binary recompilation where sequences of instructions are translated from a source instruction set to the target instruction set. In some cases such as instruction set simulation, the target instruction set may be the same as the source instruction set, providing testing and debugging features such as instruction trace, conditional breakpoints and hot spot detection.

<span class="mw-page-title-main">The SWORD Project</span>

The SWORD Project is the CrossWire Bible Society's free software project. Its purpose is to create cross-platform open-source tools—covered by the GNU General Public License—that allow programmers and Bible societies to write new Bible software more quickly and easily.

PearPC is a PowerPC platform emulator capable of running many PowerPC operating systems, including pre-Intel versions of Mac OS X, Darwin, and Linux on x86 hardware. It is released under the GNU General Public License (GPL). It can be used on Windows, Linux, FreeBSD and other systems based on POSIX-X11. The first official release was made on May 10, 2004. The software was often used to run early versions of OS X on Windows XP computers.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one processor architecture to run on another.

<span class="mw-page-title-main">Rosetta (software)</span> Operating system component

Rosetta is a dynamic binary translator developed by Apple Inc. for macOS, an application compatibility layer between different instruction set architectures. It enables a transition to newer hardware, by automatically translating software. The name is a reference to the Rosetta Stone, the artifact which enabled translation of Egyptian hieroglyphs.

<span class="mw-page-title-main">Executor (software)</span> Program used to emulate Motorola 68000-based Macintosh programs

Executor is a software application that allows Motorola 68000-based classic Mac OS programs to be run on various x86-based operating systems. Executor was created by ARDI. As of 2005, Executor development has been indefinitely postponed. As of 2008, it was published as open source software.

Binary-code compatibility is a property of a computer system, meaning that it can run the same executable code, typically machine code for a general-purpose computer central processing unit (CPU), that another computer system can run. Source-code compatibility, on the other hand, means that recompilation or interpretation is necessary before the program can be run on the compatible system.

<span class="mw-page-title-main">Virtualization</span> Methods for dividing computing resources

In computing, virtualization (v12n) is a series of technologies that allows dividing of physical computing resources into a series of virtual machines, operating systems, processes or containers.

<span class="mw-page-title-main">Sailfish OS</span> Mobile operating system

Sailfish OS is a paid Linux-based operating system based on free software, and open source projects such as Mer as well as including a closed source UI. The project is being developed by the Finnish company Jolla.

<span class="mw-page-title-main">PPSSPP</span> PSP emulator

PPSSPP is a free and open-source PSP emulator for Windows, macOS, Linux, iOS, Android, Nintendo Wii U, Nintendo Switch, BlackBerry 10, MeeGo, Pandora, Xbox Series X/S and Symbian with a focus on speed and portability. It was released to the public on November 1, 2012, licensed under the GNU GPLv2 or later. The PPSSPP project was created by Henrik Rydgård, one of the co-founders of the Dolphin emulator.

<span class="mw-page-title-main">Darling (software)</span> Open-source macOS compatibility layer

Darling is a free and open-source macOS compatibility layer for Linux. It duplicates functions of macOS by providing alternative implementations of the libraries and frameworks that macOS programs call. This method of duplication differs from other methods that might also be considered emulation, where macOS programs run in a virtual machine. Darling has been called the counterpart to WINE for running macOS apps.

Cycada is a compatibility layer that aims to allow applications designed for iOS to run unmodified on the Android operating system. The method uses compile-time adaptation to run unmodified code with minimal implementation effort.

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Compatibility layer for running Linux binary executables natively on Windows

Windows Subsystem for Linux (WSL) is a feature of Microsoft Windows that allows developers to run a Linux environment without the need for a separate virtual machine or dual booting. There are two versions of WSL: WSL 1 and WSL 2. WSL is not available to all Windows 10 users by default. It can be installed either by joining the Windows Insider program or manually via Microsoft Store or Winget.

Android devices have the ability to run virtual machines or emulate other operating systems. It does this either via desktop virtualization, platform virtualization, or emulation via compatibility layer.

References

  1. Charlie Russel, Microsoft MVP for Windows Server and Tablet PC (2002-02-18). "Application Compatibility in Windows XP".
  2. "Cygwin". www.cygwin.com. Retrieved 2019-11-23.
  3. "Project: 2ine | Patreon".
  4. "Tizen OS will run Android apps -- with a little help from third-party software (Video)".
  5. "OpenMobile ACL for webOS resurrected on Kickstarter, hopes to bring Android apps to HP Touchpad".
  6. "OpenMobile demos ACL for MeeGo, promises 100 percent compatibility with Android apps (Video)".
  7. "Myriad 'Alien Dalvik' runs Android apps on any phone... Starting with MeeGo (Video)".
  8. "Myriad Alien Dalvik hands-on (Video)".
  9. "Running Android Apps on the iPad with Myriad's Alien Dalvik". YouTube .
  10. "Hands-on with Myriad's Alien Dalvik 2.0 on an iPad (Video)".
  11. "Android apps to run on iPad with Alien Dalvik 2.0".
  12. "TouchHLE: High-level emulator for iPhone OS apps". GitHub .
  13. "High-level iOS emulator touchHLE runs on Windows and Mac, aims to preserve old iOS gaming apps".
  14. "Developer ports iOS emulator to Android, but you shouldn't get excited about it". 24 April 2023.
  15. Joneš, Jan (27 June 2019). "IOS emulator for Windows". hdl:20.500.11956/108316.
  16. "Aah". GitHub .
  17. "BRS-EMU: BrightScript Emulator". GitHub .
  18. "Linux emulation in FreeBSD".
  19. "Emulation". freebsd.org. Retrieved 2014-03-16.
  20. "A look inside..." freebsd.org. Retrieved 2014-03-16.
  21. "NetBSD Binary Emulation". netbsd.org. Retrieved 2014-03-16.
  22. "Comparing WSL 1 and WSL 2". 20 March 2023.
  23. BenchMark-0.9.5 Archived 2010-12-09 at the Wayback Machine - The Official Wine Wiki
  24. Emmanuel Dreyfus (August 8, 2002). "IRIX Binary Compatibility, Part 1". onlamp.com. Archived from the original on 2017-10-21. Retrieved 2014-03-16.