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 an environment in which software is executed. It may be the hardware or the operating system (OS), a web browser and associated application programming interfaces, or other underlying software, as long as the program code is executed using the services provided by the platform. Computing platforms have different abstraction levels, including a computer architecture, an OS, or runtime libraries. A computing platform is the stage on which computer programs can run.

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.

<span class="mw-page-title-main">Bochs</span>

Bochs is a portable x86-32 and x86-64 IBM PC compatible emulator and debugger mostly written in C++ and distributed as free software under the GNU Lesser General Public License. It supports emulation of the processor(s), memory, disks, display, Ethernet, BIOS and common hardware peripherals of PCs.

<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 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">Jolla</span> Finnish technology company

Jolla Oy is a Finnish technology company; vendor and developer of Sailfish OS. Headquartered in Tampere, Finland, Jolla has its own research and development offices in Helsinki, Tampere and Cyberport, Hong Kong. Jolla was founded in 2011 by former Nokia staff of the MeeGo project team to use the MeeGo opportunities and its "endless possibilities".

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

Sailfish OS is a 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">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">Anbox</span> Free and open-source compatibility layer that aims to allow mobile applications and mobile games

Anbox is a free and open-source compatibility layer that aims to allow mobile applications and mobile games developed for Android to run on Linux distributions. Canonical introduced Anbox Cloud, for running Android applications in a cloud environment.

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.