Большую часть карьеры разработчик проработал внутри JVM, с параллельным опытом в Python. Поэтому когда контейнеризированный Bifrost впервые столкнулся с несовместимостью libc, а GPT предложил в качестве решения musl, решение не только было принято — остальные Rust-проекты тоже перевели на musl. Самодостаточные бинарники с единой реализацией libc внутри — что может быть удобнее?
Затем коллега по имени Райан упомянул, что у musl известная проблема с неоптимальным аллокатором памяти, и указал на статью Дэниела Ранеланда. Пришлось проверить, насколько всё плохо на практике.

Результат подтвердил опасения: аллокатор musl действительно плох. Даже ужасен. И, вопреки некоторым прочитанным статьям, проблема проявляется не только в сценариях высокой конкурентности — эти цифры получены на 4-ядерных EC2 VM, и Bifrost настраивает размер пулов потоков соответствующим образом.
Это серьёзная скрытая ловушка для пользователей, и, честно говоря, было бы разумнее, если бы musl поставлялся вообще без встроенного аллокатора, заставляя разработчика выбирать его самостоятельно. Тогда выбор плохого варианта (может быть, у него действительно минимальный размер кода? неизвестно) был бы осознанным решением, а не неприятным сюрпризом из мелкого шрифта документации.
К сожалению, простое решение «просто используйте mimalloc» (или jemalloc) не является волшебной палочкой, которая уравнивает производительность musl с glibc: musl с mimalloc всё равно на 26% медленнее. Пришлось копнуть глубже в два типа задач, которые показали наихудшую деградацию производительности.

scan_usages действительно получает некоторую выгоду от mimalloc, но всё равно остаётся медленнее, чем на glibc. structural_clone_smells, напротив, почти не выполняет аллокаций; разница на musl с mimalloc и без него — статистический шум. При этом s_c_s страдает от musl пропорционально даже сильнее, чем scan_usages.
Оказалось, что дело не только в аллокаторе — несколько распространённых функций работы с памятью в musl тоже работают заметно медленнее:

Простота всё равно имеет цену
Для небольших проектов, где падение производительности на 25% некритично (как в случае с Hel), musl останется единственным вариантом сборки ради простоты — с добавлением mimalloc. Но, не желая оставлять новых скрытых ловушек, из куда более чувствительного к производительности Bifrost musl убрали как предустановленный вариант сборки.