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

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

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">Bochs</span>

Bochs is a portable IA-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.

Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class C of hardware devices to be accessed through identical interfaces even though C may contain different subclasses of devices that each provide a different hardware interface.

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

QEMU is a free and open-source emulator that uses dynamic binary translation to emulate the processor of a computer. It provides a variety of hardware and device models for the machine, enabling it to run different guest operating systems. QEMU can be used in conjunction with Kernel-based Virtual Machine (KVM) to execute virtual machines at near-native speeds. Additionally, QEMU supports the emulation of 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.

In computer security, executable-space protection marks memory regions as non-executable, such that an attempt to execute machine code in these regions will cause an exception. It makes use of hardware features such as the NX bit, or in some cases software emulation of those features. However, technologies that emulate or supply an NX bit will usually impose a measurable overhead while using a hardware-supplied NX bit imposes no measurable overhead.

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

A family of computer models is said to be compatible if certain software that runs on one of the models can also be run on all other models of the family. The computer models may differ in performance, reliability or some other characteristic. These differences may affect the outcome of the running of the 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.

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> Software to run Android apps on Linux

Anbox is a free and open-source compatibility layer that allows Android applications to run on Linux distributions by using containerization techniques. Originally introduced by Canonical, Anbox executes Android applications in a lightweight system container, isolated from the host system for security and efficiency.

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