| Тип | стандартна бібліотека мови C |
|---|---|
| Розробник | Rich Felker (dalias) та інші |
| Перший випуск | 20 березня 2014[1] |
| Стабільний випуск | 1.1.14[2] (22 лютого2016; 9 років тому (2016-02-22)) |
| Платформа | x86,x86 64,ARM,MIPS,Microblaze,PowerPC |
| Операційна система | Linux 2.6 або пізніші |
| Мова програмування | C[3] |
| Ліцензія | MIT License[4] |
| Репозиторій | git.musl-libc.org/cgit/musl |
| Вебсайт | www.musl-libc.org |
musl —стандартна бібліотека мови C (libc), орієнтована для використання вLinux на вбудованих і мобільних пристроях. Бібліотека відрізняється невеликим розміром, високою продуктивністю, безпекою, простотою і дотриманням стандартів. Автором проекту є Рич Фелкер (Rich Felker), учасник проекту Openwall і член групи Austin Group, що розвиває і підтримує стандартиPOSIX. Перший стабільний випуск 1.0 побачив світ у березні 2014.[1]Початковий код Musl поставляється під вільноюліцензією MIT, що допускає використання бібліотеки і у власницьких проектах.
musl є універсальною реалізацією libc і підходить для застосування як на стаціонарнихПК ісерверах, так і на мобільних системах, поєднуючи повноцінну підтримку стандартів, властиву для повновагих бібліотек, таких якGlibc (GNU C library), з невеликим розміром, низьким споживанням ресурсів і високою продуктивністю, властивим спеціалізованим варіантам libc для вбудованих систем, таких якuClibc,dietlibc іAndroid Bionic. Musl надає повну підтримку всіх обов'язкових інтерфейсівC99 і POSIX 2008, а також частковоC11 і набір розширень, що набули поширення в Linux-оточеннях. У тому числі бібліотека надає засоби длябагатониткового програмування (POSIX threads), управління пам'яттю і роботи злокаллю.
Musl підтримує роботу тільки вLinux і може працювати зядрами Linux, починаючи з випуску 2.6.39. Офіційно підтримуються наступні архітектури:i386,x86 64,ARM (armv4t і новіше),MIPS,PowerPC іMicroblaze. Експериментальна підтримка забезпечена для SuperH (SH) і x32. З компіляторів підтримуютьсяGCC 3.4.6+,Clang 3.2+,PCC 1.1.0+ і CParser/firm. При статичному зв'язуванні всі компоненти musl займають приблизно 400 Кб, при динамічному - 500 Кб (для порівняння в Glibc 1.5 Мб і 2 Мб). Мінімальний розмір статично зібраної програми становить 1.8 Кб,Hello World - 13k (в Glibc - 508 Кб), при динамічному зв'язуванні додається 20 Кб. По продуктивності, musl в основному близька до Glibc, за винятком операцій динамічного зв'язування і декодуванняUTF-8, які виконуються в musl швидше в кілька разів.[5]
На базі musl розвивається кількадистрибутивів Linux, серед яких проекти OSv, Sabotage, LightCube OS, starchlinux, morpheus і Snowflake. Musl також застосовується в компіляторіEmscripten, використовуваному для перетворенняC/C++ проектів в подання наJavaScript. З відомих дистрибутивів, в яких забезпечена опціональна підтримка Musl, можна відзначитиDebian,Ubuntu,OpenWrt,Gentoo іArch Linux. Серед дистрибутивів, які планують перехід за замовчуванням на Musl: Aboriginal,Alpine і Dragora.