musl

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

musl
Developer(s)Rich Felker (dalias) and others
Initial releaseFebruary 11, 2011 (2011-02-11)[1]
Stable release
1.2.4[2] / May 1, 2023 (2023-05-01)
Repository
Operating systemLinux 2.6 or later
Platformx86, x86_64, ARM, MIPS, Microblaze, PowerPC, powerpc64, x32, riscv64, OpenRISC, s390x, SuperH
Type
LicenseMIT License
Websitemusl.libc.org

Overview

musl was designed from scratch to allow efficient static linking and to have realtime-quality robustness by avoiding race conditions, internal failures on resource exhaustion and various other bad worst-case behaviors present in existing implementations.[4] The dynamic runtime is a single file with stable ABI allowing race-free updates and the static linking support allows an application to be deployed as a single portable binary without significant size overhead.

It claims compatibility with the POSIX 2008 specification and the C11 standard. It also implements most of the widely used non-standard Linux, BSD, and glibc functions.[5] There is partial ABI compatibility with the part of glibc required by Linux Standard Base.[6]

Version 1.2.0 has support for (no longer current) Unicode 12.1.0 (while still having full UTF-8 support,[7] more conformant/strict than glibc), and version 1.2.1 "features the new 'mallocng' malloc implementation, replacing musl's original dlmalloc-like allocator that suffered from fundamental design problems."[2]

Use

Some Linux distributions that can use musl as the standard C library include Alpine Linux,[8] Dragora 3,[9] Gentoo Linux,[10] OpenWrt,[11] Sabotage,[12] Morpheus Linux,[13] Chimera Linux,[14] and Void Linux.[15] The seL4 microkernel[16] ships with musl. For binaries that have been linked against glibc, gcompat[17] can be used to execute them on musl-based distros.

See also

References

  1. "musl - obsolete versions". musl-libc.org. 2017-10-31. Retrieved 2018-01-14.>
  2. "musl libc Release History". musl.libc.org. Archived from the original on 2021-10-16. Retrieved 2020-08-13.
  3. Rich Felker; et al. (2016-04-29). "COPYRIGHT". Archived from the original on 2021-10-16. Retrieved 2016-09-26.
  4. "Introduction to musl". 2016-04-21. Archived from the original on 2021-10-16. Retrieved 2016-09-26.
  5. "Compatibility". wiki.musl-libc.org. 2014-05-27. Archived from the original on 2021-10-16. Retrieved 2016-09-26.
  6. "Comparison of C/POSIX standard library implementations for Linux". www.etalabs.net. Archived from the original on 2021-10-16.
  7. "musl libc - Functional differences from glibc". wiki.musl-libc.org. Archived from the original on 2021-10-16. Retrieved 2020-08-13.
  8. "About". Alpine Linux. Retrieved 18 June 2022.
  9. Larabel, Michael (30 September 2018). "Dragora 3.0 Alpha 2 Released As One Of The Libre GNU/Linux Platforms". Phoronix. Phoronix Media. Retrieved 18 June 2022.
  10. Gentoo Authors (20 July 2021). "Additional stage downloads for amd64, ppc, x86, arm available". Gentoo Linux. Retrieved 18 June 2022.
  11. Fietkau, Felix (16 Jun 2015). "OpenWrt switches to musl by default". Archived from the original on 28 July 2015.
  12. README.md on GitHub
  13. "morpheus". Archived from the original on 2021-10-16. Retrieved 2018-06-15.
  14. "Chimera Linux - About". Chimera Linux. Retrieved 2023-05-10.
  15. "Enter the void". Void Linux. Retrieved 18 June 2022.
  16. seL4/musllibc, seL4 microkernel and related repositories, 2020-08-30, archived from the original on 2021-10-16, retrieved 2020-09-05
  17. "Adélie Linux / gcompat". GitLab. Archived from the original on 2021-10-16. Retrieved 2019-10-21.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.