| musl | |
|---|---|
| Developers | Rich Felker (dalias) and others |
| Initial release | February 11, 2011; 15 years ago (2011-02-11)[1] |
| Stable release | |
| Operating system | Linux 2.6 or later |
| Platform | x86,x86_64,ARM,loongarch64,MIPS,Microblaze,PowerPC,powerpc64,x32,RISC-V,OpenRISC,s390x,SuperH |
| Type | |
| License | MIT License |
| Website | musl.libc.org |
| Repository | |
musl is aC standard library intended foroperating systems based on theLinux kernel, released under theMIT License.[3] It was developed by Rich Felker to write a clean, efficient, and standards-conformantlibc implementation.[4]
musl was designed from scratch to allow efficientstatic linking and to have realtime-quality robustness by avoidingrace 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 stableABI 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 thePOSIX 2008 specification and theC11 standard. It also implements most of the widely used non-standardLinux,BSD, andglibc functions.[5] There is partial ABI compatibility with the part of glibc required byLinux Standard Base.[6]
Version 1.2.0 has support for (no longer current)Unicode 12.1.0 (while still having fullUTF-8 support,[7] more conformant/strict thanglibc), and version 1.2.1 "features the new 'mallocng'malloc implementation, replacing musl's originaldlmalloc-like allocator that suffered from fundamental design problems."[2]
Linux distributions which use musl as their standard C library (some useonly musl) include but are not limited to:
TheseL4 microkernel[17] ships with musl.
For binaries that have been linked against glibc, gcompat and[18] glibmus-hq[19] can be used to execute them on musl-based distros.