The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск стандартной Си-библиотеки Musl 1.2.5

01.03.2024 16:23

После 10 месяцев разработки представлен релиз стандартной Си-библиотеки Musl 1.2.5, предоставляющей реализацию libc, которая подходит для применения как на стационарных ПК и серверах, так и на мобильных системах, сочетая полноценную поддержку стандартов (как в Glibc) с небольшим размером, низким потреблением ресурсов и высокой производительностью (как в uClibc, dietlibc и Android Bionic). Имеется поддержка всех обязательных интерфейсов C99 и POSIX 2008, а также частично C11 и набор расширений для многопоточного программирования (POSIX threads), управления памятью и работы с локалями. Код Musl поставляется под свободной лицензией MIT.

Основные изменения:

  • Добавлена функция statx(), которая отличается от fstatat64 наличием дополнительного флагового аргумента. В случае, если ядро не поддерживает системный вызов statx, возвращающего расширенную информацию о файле, включая время создания файла и специфичные для файловых систем флаги, осуществляется откат на использованием системного вызова fstatat.
  • Добавлены функции preadv2() и pwritev2(), предоставляющие обвязки над одноимёнными системными вызовами ядра Linux. От preadv() и pwritev() новые функции отличаются наличием ещё одного аргумента для передачи ядру дополнительных флагов, таких как RWF_SYNC (сброс данных и метаданных из кэша на носитель после выполнения операции) и RWF_DSYNC (принудительный сброс на носитель только данных).
  • Добавлена поддержка архитектур Loongarch64 и Riscv32.
  • Реализация функции clone() доведена до состояния, пригодного к использованию.
  • В функции statvfs() обеспечено возвращение результата с типом f_type.
  • Для систем Riscv64 добавлена поддержка механизма TLSDESC (Thread-Local Storage Descriptor).
  • В DNS-резолвере реализована обработка ответов с длинными последовательностями CNAME. Решена проблема, из-за которой отбрасывались некоторые большие ответы, передаваемые через TCP.
  • В интерфейсах mntent появилась поддержка экранирования пробелов в файловых путях и опциях.
  • В snprintf и swprintf обеспечена корректная обработка ситуации в случае обработки чисел размером больше INT_MAX. Улучшено соответствие стандарту функций семейства printf.


  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Выпуск системной библиотеки Glibc 2.39 и набора утилит GNU Binutils 2.42
  3. OpenNews: Выпуск стандартной Си-библиотеки PicoLibc 1.8.6
  4. OpenNews: Gentoo начал формирование дополнительных сборок на базе Musl и systemd
  5. OpenNews: Выпуск стандартной Си-библиотеки Musl 1.2.4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60702-musl
Ключевые слова: musl, libc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:29, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > В DNS-резолвере реализована обработка ответов с длинными последовательностями CNAME. Решена проблема, из-за которой отбрасывались некоторые большие ответы, передаваемые через TCP.

    И это поделие используют в докер-контейнерах?!

     
     
  • 2.9, OpenEcho (?), 17:13, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И это поделие используют в докер-контейнерах?!

    Да типун тебе на язык, пользуются исключительно только твоей реализацией ну и еще пропихнутыми  CoreOS-ями, все ведь любят - больше зависимостей в каждый докер

     
  • 2.16, RM (ok), 17:58, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У musl с DNS весело
    https://www.opennet.me/opennews/art.shtml?num=59069 Выпуск стандартной Си-библиотеки Musl 1.2.4
    > В DNS-резолвер добавлена возможность отправки запроса по TCP в случае неудачного обращения по UDP, что решило проблему с запросом больших DNS-записей и наладило совместимость с рекурсивными DNS-серверами, не поддерживающими отдачу части результата в обрезанных UDP-ответах. Попутно устранено ещё несколько недоработок, связанных с DNS, таких как невозможность раздельной обработки состояний NODATA и NXDOMAIN.

    А сейчас в 1.2.5
    > В DNS-резолвере реализована обработка ответов с длинными последовательностями CNAME. Решена проблема, из-за которой отбрасывались некоторые большие ответы, передаваемые через TCP.

    что в лоб, что по лбу....

     

  • 1.2, Аноним (2), 16:32, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Считаю musl хорошим проектом - альтернативные реализации нужны, а у неё ещё и лицензия по-настоящему свободная.

    Однако есть минус - очень популярен миф про её производительность - на самом деле musl медленнее Glibc в реальных задачах. Например, есть много случаев, когда "современные" разработчики (и на нативных, и на интерпретируемых языках) использовали шаблоны контейнеров на основе Alpine (или других дистрибутивов, где musl) и видели большие потери в производительности, вплоть до разницы в более чем 10 раз.

     
     
  • 2.3, Аноним (3), 16:41, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну это не миф. Это авторы затирали, что, мол, у нас код проще и быстрее. А толпы хомяков поверили, не будут же авторы врать.
     
     
  • 3.5, Аноним (5), 16:49, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это блогеры синтетику нашли где обычный глибс быстрее и трындят на каждом углу. А такое с чем угодно можно найти даже с джаваскриптом. Это как с р-стом типа за границы буфера не выходит значит безопасТный.
     
     
  • 4.7, Аноним (3), 16:57, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для начала придётся найти хоть что-то, в чём обычный глибц медленнее. Только когда среднее в итоге всё равно настолько быстрее, выводы тут напрашиваются вполне определённые. В синтетике быстрее быть дело не хитрое, кстати, вон Интел подтвердит.
     
  • 4.11, OpenEcho (?), 17:28, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это как с р-стом типа за границы буфера не выходит значит безопасТный.

    CVE-2021-28879 с вами не согласен, overflow не победим

     
  • 2.4, Аноним (5), 16:46, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это докер по айо проседает. Надо хотя бы с хоста диск читать или оперы.
     
  • 2.6, Аноним (6), 16:54, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а у неё ещё и лицензия по-настоящему свободная

    Нет, там Expat/MIT.

     
     
  • 3.26, Аноним (26), 23:36, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    MIT - это и есть свободная.
     
  • 2.10, Аноним (10), 17:20, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Насколько помню, в Musl медленный аллокатор. Можно использовать другой, например jemalloc, который может и медленней maloc из GLibc, но потребляет в разы меньше памяти.
     
     
  • 3.19, Аноним (19), 18:15, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    да, это политика разработчиков. В стандартной библиотеке будет простой и надежный аллокатор, которого достаточно для большей части софта, а если нужна скорость - то вот вам на здоровье jemalloc, mimalloc, и что там еще есть. В пакете alpine есть даже специальный скрипт jemalloc.sh, устанавливающий его в LD_PRELOAD.
     
     
  • 4.20, n00by (ok), 18:25, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Для всякого аллокатора можно найти сценарий использования, когда он проиграет другому аллокатору. Так что политика разумная. Другое дело, что пользователи библиотеки почему-то не всегда озадачиваются выбором подходящего аллокатора или написанием своего, когда им нужна скорость.
     
  • 2.12, OpenEcho (?), 17:30, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, есть много случаев, когда "современные" разработчики (и на нативных, и на интерпретируемых языках) использовали шаблоны контейнеров на основе Alpine (или других дистрибутивов, где musl) и видели большие потери в производительности

    bind mount реальных дисков разработчики не пробовали?

     
  • 2.15, Аноним (15), 17:45, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > лицензия по-настоящему свободная.

    Опять двадцать пять.

    MIT и т.п. — свобода для производителей ограничивать права пользователей (отсюда пропаганда пермиссив-лицензий со стороны корпораций),

    GPL — свобода для потребителей (нельзя ограничивать пользователей в правах, что корпорациям очень не нравится, откуда и fud про несвободность и вирусность).

     
     
  • 3.18, Аноним (-), 18:00, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    MIT и т.п. — свобода для разрабов, которые могут продавать результаты своего труда, а не ходит побираться по корпам.
    GPL — мнимая свобода для потребл##дей, что совсем не мешает корпам зарабатывать и при этом вертеть их как хочет

    Поправил, не благодари

     
     
  • 4.22, бгг (?), 19:35, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Они мнимые (права) потому что прошло то время когда васяны открывали Глибс с Емакс. Теперь кроме патчсетов под свежие либы и опакечивание сил у сообщества не хватает - время дорого им жаба душит.
     
  • 4.23, Анончик (?), 19:49, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И как же авторам продавать результаты своего труда под MIT лицензией, расскажите мне? Чем это отличается от зарабатывания на GPL? Двойное лицензирование, например, возможно в обоих случаях.

    А корпам зарабатывать вообще никто не запрещает. Главное, чтоб при этом они предоставляли эти самые свободы своим пользователям. И если они "вертят своих пользователей как хотят", то скорее всего никаких свобод тут и нет, и стоит просто отказаться от поддержки таких корпораций.

     

  • 1.8, бгг (?), 17:04, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если Musl не имеет поддержки х32,то можно ли yf y'v собрать Wine c  wow64 для 32 битных приложений?
     
     
  • 2.17, RM (ok), 18:00, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    x32 и из ведра выпилили уже. Мсье видимо хотел сказать i386
     
     
  • 3.21, бгг (?), 19:29, 01/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Та ты понял о чём я говорил... Кажется нельзя так собрать. Нужно чтобы в системе была поддержка мультилиб.Печалька.
     

  • 1.25, Аноним (25), 22:17, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В Void Linux, где еще 1.1.24, когда ждать?
    В Alpine Linux Edge уже прилетело.
     
  • 1.27, Имя Моё (?), 02:56, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Что приятно удивило (когда несколько лет назад пробовал эту альтернативу glibc) так это то, что код после компиляции получается в 10, а иногда и в 20 раз меньше объёмом. НО! По производительности математических расчётов иногда терял 20% по сравнению с glibc. Поэтому да, не панацея, но очень интересный и перспективный проект. И я лично его планирую проверять для каждого отдельного решения. Где-то нужен компактный код закинуть в прошивку, а где-то лучше использовать все возможности оптимизации современных CISC CPU для высокопроизводительных проектов.
     
  • 1.28, Аноним (28), 21:47, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Добавлены функции preadv2() и pwritev2() […]. От preadv() и pwritev() новые функции отличаются наличием ещё одного аргумента

    После Лиспов и Кложуры от такого становится почему-то очень смешно. А когда понадобится ещё один аргумент передать, preadv3() и pwritev3() будут вводить, да? «У» в названии языка Си значит «удобство».

     

  • 1.30, Аноним (30), 20:11, 05/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пробовал в void linux. Вернулся на glibc. Musl не юзабелен если не хочешь вылавливать какие-то постоянные рандомные баги. Да и ваще вся шумиха больше напоминает тему gcc->clang и x11>wayland, т.е. корпорациями лицензия не нравится и они пропихивают угодное им.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру