Libhybris

Last updated

Hybris
Original author(s) Carsten Munk
Developer(s) Mer, Jolla, Open webOS community, Canonical Ltd.
Initial release5 August 2012;10 years ago (2012-08-05) [1]
Written in C, C++
Operating system Linux
Type Compatibility layer
License Apache License 2 [2]
Website github.com/libhybris
The GNU C Library (glibc) and libbionic act as a wrapper around the Linux system calls. Libhybris replaces Libbionic and works on top of the glibc, i.e. it hooks into glibc instead of into the Linux kernel system calls, thereby acting as a compatibility layer. Linux API.svg
The GNU C Library (glibc) and libbionic act as a wrapper around the Linux system calls. Libhybris replaces Libbionic and works on top of the glibc, i.e. it hooks into glibc instead of into the Linux kernel system calls, thereby acting as a compatibility layer.
The Android operating system replaces the GNU C Library with libbionic. Both libraries are wrappers around the system calls of the Linux kernel, but while the GNU C Library has aimed to become and stay POSIX-compliant, libbionic does not. Programs written for libbionic can only run on GNU C Library with the help of another wrapper called libhybris. Linux kernel System Call Interface and glibc.svg
The Android operating system replaces the GNU C Library with libbionic. Both libraries are wrappers around the system calls of the Linux kernel, but while the GNU C Library has aimed to become and stay POSIX-compliant, libbionic does not. Programs written for libbionic can only run on GNU C Library with the help of another wrapper called libhybris.
While a programmer targets and uses an API, a compiled program can only use the resulting ABI. . After compilation, the binaries offer an ABI. Linux API and Linux ABI.svg
While a programmer targets and uses an API, a compiled program can only use the resulting ABI. . After compilation, the binaries offer an ABI.

libhybris is a compatibility layer for computers running Linux distributions based on the GNU C library or Musl, [3] intended for using software written for Bionic-based Linux systems, which mainly includes Android libraries and device drivers. [4]

Contents

History

Hybris was initially written by Carsten Munk, a Mer developer, who released it on GitHub on 5 August 2012 [1] and publicly announced the project later that month. [4] [5] Munk has since been hired by Jolla as their Chief Research Engineer. [6]

Hybris has also been picked up by the Open webOS community for WebOS Ports, [7] [8] by Canonical for Ubuntu Touch [6] [9] and by the AsteroidOS [10] project.

In April 2013, Munk announced that Hybris has been extended to allow Wayland compositors to use graphic device drivers written for Android. [6] [11] [12] Weston has had support for libhybris since version 1.3, which was released on 11 October 2013. [13]

Features

Hybris loads "Android libraries, and overrides some symbols from bionic with glibc" [4] calls, making it possible to use Bionic-based software, such as binary-only Android drivers, on glibc-based Linux distributions.

Hybris can also translate Android's EGL calls into Wayland EGL calls, allowing Android graphic drivers to be used on Wayland-based systems. This feature was initially developed by Collabora's Pekka Paalanen for his Android port of Wayland. [6] [14] [15] [16]

See also

Related Research Articles

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

Video Decode and Presentation API for Unix (VDPAU) is a royalty-free application programming interface (API) as well as its implementation as free and open-source library distributed under the MIT License. VDPAU is also supported by Nvidia.

<span class="mw-page-title-main">Wayland (protocol)</span> Display system intended to replace X11

Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a Wayland compositor, because it additionally performs the task of a compositing window manager.

Bionic is an implementation of the standard C library, developed by Google for its Android operating system. It differs from the GNU C Library (glibc) in being designed for devices with less memory and processor power than a typical Linux system. It is a combination of new code and code from FreeBSD, NetBSD, and OpenBSD released under a BSD license, rather than glibc, which uses the GNU Lesser General Public License. This difference was important in the early days of Android, when static linking was common, and is still helpful in introducing Android to software companies used to proprietary operating systems, who can be wary of the LGPL, and unclear about the differences between it and the full GNU General Public License (GPL).

<span class="mw-page-title-main">LightDM</span> Free, open-source X display manager

LightDM is a free and open-source X display manager that aims to be lightweight, fast, extensible and multi-desktop. It can use various front-ends to draw User Interface, also called Greeters. It also supports Wayland.

<span class="mw-page-title-main">Mer (software distribution)</span>

Mer was a free and open-source software distribution, targeted at hardware vendors to serve as a middleware for Linux kernel-based mobile-oriented operating systems. It is a fork of MeeGo.

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

musl Implementation of C standard library for Linux operating system

musl is a C standard library intended for operating systems based on the Linux kernel, released under the MIT License. It was developed by Rich Felker with the goal to write a clean, efficient and standards-conformant libc implementation.

<span class="mw-page-title-main">Ubuntu Touch</span> Mobile interface for Ubuntu developed by Canonical Ltd.

Ubuntu Touch is a mobile version of the Ubuntu operating system, being developed by the UBports community. Its user interface is written in Qt, and is designed primarily for touchscreen mobile devices such as smartphones and tablet computers, but the original goal of convergence was intended to bring Ubuntu Touch to laptops, desktops, IOT devices and TVs for a complete unified user experience.

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

Maliit is an input method framework for computers with particular focus on implementing virtual keyboards. Designed mostly for touchscreen devices, Maliit allows the inputting of text without the presence of a physical keyboard. More advanced features such as word correction and prediction are also available.

Mir is a computer display server and, recently, a Wayland compositor for the Linux operating system that is under development by Canonical Ltd. It was planned to replace the currently used X Window System for Ubuntu; however, the plan changed and Mutter was adopted as part of GNOME Shell.

bhyve is a type-2 hypervisor initially written for FreeBSD. It can also be used on a number of illumos based distributions including SmartOS, OpenIndiana, and OmniOS. A port of bhyve to macOS called xhyve is also available.

Vulkan is a low-overhead, cross-platform API, open standard for 3D graphics and computing. Vulkan targets high-performance real-time 3D graphics applications, such as video games and interactive media. Vulkan is intended to offer higher performance and more efficient CPU and GPU usage compared to older OpenGL and Direct3D 11 APIs. It provides a considerably lower-level API for the application than the older APIs, making Vulkan comparable to Apple's Metal API and Microsoft's Direct3D 12. In addition to its lower CPU usage, Vulkan is designed to allow developers to better distribute work among multiple CPU cores.

<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 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 1 was first released on August 2, 2016, and acts as a compatibility layer for running Linux binary executables by implementing Linux system calls on the Windows kernel. It is available on Windows 10, Windows 10 LTSB/LTSC, Windows 11, Windows Server 2016, Windows Server 2019 and Windows Server 2022.

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

AsteroidOS is an open source operating system designed for smartwatches. It is available as a firmware replacement for some Android Wear devices. The motto for the AsteroidOS project is "Hack your wrist."

postmarketOS Free and open-source operating system for smartphones, based on Alpine Linux

postmarketOS is an operating system primarily for smartphones, based on the Alpine Linux distribution.

References

  1. 1 2 "Initial commit of stskeeps/libhybris". GitHub. 5 August 2012. Retrieved 3 July 2013.
  2. "libhybris/hybris/COPYING". GitHub. 4 April 2013. Retrieved 3 July 2013.
  3. "Hybris - postmarketOS". wiki.postmarketos.org. Retrieved 21 October 2019.
  4. 1 2 3 Carsten Munk. "So, introducing libhybris,…". Google+. Retrieved 3 July 2013.
  5. "Libhybris: Load Android Libraries, Override Bionic Symbols". Phoronix. 25 September 2012. Retrieved 3 July 2013.
  6. 1 2 3 4 Carsten Munk (11 April 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 1". Mer Project. Retrieved 3 July 2013.
  7. "Open webOS ported to Nexus 7 over holiday break". The H Open. 7 January 2013. Retrieved 3 July 2013.
  8. "WebOS-Ports". WebOS-Ports. Retrieved 3 July 2013.
  9. "libhybris in Launchpad". Launchpad.net. 5 February 2013. Retrieved 3 July 2013.
  10. "AsteroidOS: An open-source operating system for smartwatches". AsteroidOS. Retrieved 27 January 2016.
  11. Munk, Carsten (8 May 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 2". Mer Project. Retrieved 3 July 2013.
  12. "Jolla Brings Wayland Atop Android GPU Drivers". Phoronix. 11 April 2013. Retrieved 3 July 2013.
  13. "Wayland and Weston 1.3 release notes". 11 October 2013.
  14. Munk, Carsten (13 April 2013). "libhybris/hybris/egl/platforms/common/wayland-android.xml". GitHub. Retrieved 3 July 2013.
  15. "First Signs Of Wayland Running On Android". Phoronix. 27 April 2012. Retrieved 3 July 2013.
  16. Pekka Paalanen (24 September 2012). "Wayland on Android: upgrade to 4.0.4 and new build integration" . Retrieved 3 July 2013.