Pull to refresh

Comments 18

перевод интересный, но зачем на свой вебсайт делать musl?

чтобы был статический бинарник в с минимумом зависимостей -> чтобы докер образ весил меньше

Напоминает как раньше vk работал. Они писали тоже, что просто был один очень большой бинарник

это не сам конкретно сайт, а взятый как попало alpine в сборочном контейнере без понимания, ведь он меньше по размеру /s, там glibc заменен на альтернативный аллокатор musl.

тема аллокаторов сама жирная и обширная в лынукс, но как обычно в нем выбирать приходится из сортов говна - glibc разжирает долгоиграющие бинарники в памяти, у jemaloc есть рандомные краши и дропнута поддержка, musl вот такой +часть функций glibc не имплеменчена.

А что на счёт mimalloc от microsoft?

увы, не знаю. будем ресерч делать, на альтернативные с jemalloc

Я в своих пет-проектах съехал на гугловый tcmalloc. Его область применения ограничена linux x86_64/aarch64 (плюс дополнительно потюнить настройки ядра в районе THP через sysctl). Но там, где мои сервисы подняты, других архитектур и нет

нам увы еще и i386 надо.

Начал читать, увидел Alpine и musl, сразу подумал, что надо комментарий про аллокатор оставить. Рад, что автор сам (пусть и с чужой помощью) додумался. Альтернативные аллокаторы даже на glibc таргетах дают заметный выигрыш по производительности, а на musl они просто необходимы.

Будет быстрей, если бинарник на rust будет считывать текстовые файлы, возможно даже исполнять какие-то куски кода среди них и отвечать на запросы этим текстом. Нужно внести изменения на страницу - поправил текстовый файл и все, не надо ничего перекомпилировать.

Хотя погодите...

Вы ещё скажите, что бинарник можно на си писать! Экий вы фантазёр!

Глупый вопрос задам: а sccache профита в плане времени не даст?

А зачем он вообще решил контейнер сделать, подскажите, пожалуйста?

мне тоже очень интерестно

Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров

Ему было неудобно собирать бинарники, он решил наворотить контейнер, в котором сборка идёт медленнее.

То есть вместо одного баш-скрипта он решил погрузиться в ад.

Зато он получил от этого удовольствие :)

Мысль про АДЪ мне тоже первой сразу пришла в голову (см. мой комментарий ниже)

Этот человек может легко прогуляться на самое дно ада и непринужденно вернуться. Сделать сайт на rust, удивиться что в докере компилится немного медленно и так упороться в кишки компиляции. Возможно он это может сделать одновременно во всех мультивселенных. Чак Норрис обиженно хныкает в углу

Sign up to leave a comment.

Articles

\\\n | head -n5\n0.42s core::ptr::drop_in_place::<tracing_subscriber::filter::directive::ParseError>\n0.13s core::ptr::drop_in_place::<http::uri::Uri>\n0.12s core::ptr::drop_in_place::<toml_edit::item::Item>\n0.11s core::ptr::drop_in_place::<std::io::error::Error>\n0.1s core::ptr::drop_in_place::<hyper::body::incoming::Incoming>\n\n$ # After\n$ cat ... | jq ... \\\n | grep -P 'core::ptr::drop_in_place::<(?!web_http_server)[a-zA-Z0-9_:]+>
Pull to refresh

Comments 18

перевод интересный, но зачем на свой вебсайт делать musl?

чтобы был статический бинарник в с минимумом зависимостей -> чтобы докер образ весил меньше

Напоминает как раньше vk работал. Они писали тоже, что просто был один очень большой бинарник

это не сам конкретно сайт, а взятый как попало alpine в сборочном контейнере без понимания, ведь он меньше по размеру /s, там glibc заменен на альтернативный аллокатор musl.

тема аллокаторов сама жирная и обширная в лынукс, но как обычно в нем выбирать приходится из сортов говна - glibc разжирает долгоиграющие бинарники в памяти, у jemaloc есть рандомные краши и дропнута поддержка, musl вот такой +часть функций glibc не имплеменчена.

А что на счёт mimalloc от microsoft?

увы, не знаю. будем ресерч делать, на альтернативные с jemalloc

Я в своих пет-проектах съехал на гугловый tcmalloc. Его область применения ограничена linux x86_64/aarch64 (плюс дополнительно потюнить настройки ядра в районе THP через sysctl). Но там, где мои сервисы подняты, других архитектур и нет

нам увы еще и i386 надо.

Начал читать, увидел Alpine и musl, сразу подумал, что надо комментарий про аллокатор оставить. Рад, что автор сам (пусть и с чужой помощью) додумался. Альтернативные аллокаторы даже на glibc таргетах дают заметный выигрыш по производительности, а на musl они просто необходимы.

Будет быстрей, если бинарник на rust будет считывать текстовые файлы, возможно даже исполнять какие-то куски кода среди них и отвечать на запросы этим текстом. Нужно внести изменения на страницу - поправил текстовый файл и все, не надо ничего перекомпилировать.

Хотя погодите...

Вы ещё скажите, что бинарник можно на си писать! Экий вы фантазёр!

Глупый вопрос задам: а sccache профита в плане времени не даст?

А зачем он вообще решил контейнер сделать, подскажите, пожалуйста?

мне тоже очень интерестно

Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров

Ему было неудобно собирать бинарники, он решил наворотить контейнер, в котором сборка идёт медленнее.

То есть вместо одного баш-скрипта он решил погрузиться в ад.

Зато он получил от этого удовольствие :)

Мысль про АДЪ мне тоже первой сразу пришла в голову (см. мой комментарий ниже)

Этот человек может легко прогуляться на самое дно ада и непринужденно вернуться. Сделать сайт на rust, удивиться что в докере компилится немного медленно и так упороться в кишки компиляции. Возможно он это может сделать одновременно во всех мультивселенных. Чак Норрис обиженно хныкает в углу

Sign up to leave a comment.

Articles

\\\n | head -n5\n0.59s core::ptr::drop_in_place::<hyper::ext::Protocol>\n0.28s core::ptr::drop_in_place::<http::header::map::HeaderMap>\n0.1s core::ptr::drop_in_place::<std::io::error::Error>\n0.09s core::ptr::drop_in_place::<http::uri::Uri>\n0.08s core::ptr::drop_in_place::<tokio::runtime::io::registration::Registration>\u003C\u002Fcode\u003E\u003Cdiv class=\"code-explainer\"\u003E\u003Ca href=\"https:\u002F\u002Fsourcecraft.dev\u002F\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"\u003E\u003Cimg style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\u002F\u003E\u003C\u002Fa\u003E\u003C\u002Fdiv\u003E\u003C\u002Fpre\u003E\u003Cp\u003EМежду ними есть некоторые изменения, но для многих зависимостей всё равно выполняется компиляция того же \u003Ccode\u003Ecore::ptr::drop_in_place\u003C\u002Fcode\u003E!\u003C\u002Fp\u003E\u003Cp\u003EВпрочем, несмотря на это, время оптимизации существенно снизилось — если смотреть только на экземпляры \u003Ccode\u003Edrop_in_place\u003C\u002Fcode\u003E, то с 21,7 с до 17,4 с, и гораздо больше, если учитывать всё вместе (с 128 с до 104 с; при многопоточности и с оверхедом профилирования LLVM).\u003C\u002Fp\u003E\u003Ch4\u003EУходим с Alpine\u003C\u002Fh4\u003E\u003Cp\u003EУэсли Мур в Lobsters (\u003Ca href=\"https:\u002F\u002Fbsky.app\u002Fprofile\u002Fwezm.net\u002Fpost\u002F3lskc72tz2s24\" rel=\"noopener noreferrer nofollow\"\u003Eчерез Bluesky\u003C\u002Fa\u003E) \u003Ca href=\"https:\u002F\u002Flobste.rs\u002Fs\u002F72hbqg\u002Fwhy_is_rust_compiler_so_slow#c_oah8c1\" rel=\"noopener noreferrer nofollow\"\u003Eпредложил уйти с Alpine\u003C\u002Fa\u003E, потому что используемый в нём по умолчанию распределитель памяти может влиять на время компиляции:\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cp\u003EПо моему опыту, распределитель памяти может сильно влиять на время сборки. Например, когда Chimera Linux перешёл со scudo (который уже был лучше, чем стандартный распределитель памяти musl) на mimalloc, время чистой сборки Gleam снизилось с 67 с до 46 с.\u003C\u002Fp\u003E\u003Cp\u003EСхожие результаты можно наблюдать, сменив базовый образ сборки в docker [ ... ]\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cstrong\u003EЭто привело к огромным изменениям.\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003EПерейдя с alpine на debian и убрав \u003Ccode\u003E--target=x86_64-unknown-linux-musl\u003C\u002Fcode\u003E, я снизил время компиляции с 29,1 с аж до 9,1 с!\u003C\u002Fp\u003E\u003Ch3\u003EПодведём итог\u003C\u002Fh3\u003E\u003Col\u003E\u003Cli\u003E\u003Cp\u003EМы начинали примерно с 175 с\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EОтключив LTO (и отладочные символы!), мы получили 51 с (-71%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EПерейдя на \u003Ccode\u003Eopt-level = 1\u003C\u002Fcode\u003E для финального крейта, мы получили 48,8 с (-4%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EУменьшив встраивание при помощи \u003Ccode\u003E-C llvm-args\u003C\u002Fcode\u003E, мы получили 40,7 с (-16%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EЛокальные изменения позволили добиться 37,7 с (-7%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EИзменения в зависимостях дали нам 32,3 с (-14%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cp\u003E\u003Cstrong\u003EС дополнениями:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Col start=\"7\"\u003E\u003Cli\u003E\u003Cp\u003EВключив \u003Ccode\u003E-Zshare-generics\u003C\u002Fcode\u003E, мы получили 29,1 с (-10%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EА уйдя с alpine, получили 9,1 с (-69%)\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Ch4\u003EЧто дальше?\u003C\u002Fh4\u003E\u003Cp\u003EХоть я и рассмотрел большое количество проблем, на самом деле, инструментарий работал очень хорошо, а документации было достаточно для того, чтобы человек с относительно малым опытом смог внести существенные улучшения в свою кодовую базу.\u003C\u002Fp\u003E\u003Cp\u003EЧасть проблем решить было легко: это устранения багов, после которых человеку, попавшему в похожую ситуацию, разбираться будет удобнее.\u003C\u002Fp\u003E\u003Cp\u003EС другими всё было сложнее:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003EНеобходимо улучшить время компиляции графов глубоких вызовов async-функций: возможно, у LLVM есть неудачный пограничный случай, который легко вызвать при помощи того, что генерирует \u003Ccode\u003Erustc\u003C\u002Fcode\u003E; а может, это просто плохая эвристика, которая в других языках почти не используется.\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EВозможно, \u003Ccode\u003Erustc\u003C\u002Fcode\u003E \u003Cem\u003Eстоит \u003C\u002Fem\u003Eсоздать особый случай для \u003Ccode\u003Ecore::ptr::drop_in_place<T>\u003C\u002Fcode\u003E , чтобы он компилировался в крейт, определяющий \u003Ccode\u003ET\u003C\u002Fcode\u003E. Такое решение подойдёт не во всех случаях (например, для обобщённых типов), зато благодаря нему даунстрим-крейтам не потребуется повторно компилировать один и тот же деструктор несколько раз.\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cp\u003E\u003Cstrong\u003EДополнение:\u003C\u002Fstrong\u003E \u003Ccode\u003E-Zshare-generics\u003C\u002Fcode\u003E здесь \u003Cem\u003Eпомог\u003C\u002Fem\u003E, но это не полное решение проблемы. Однако я обнаружил, что \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frust-lang\u002Frust\u002Fissues\u002F84175\" rel=\"noopener noreferrer nofollow\"\u003Eэто уже обсуждалось\u003C\u002Fa\u003E и, к сожалению, похоже, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frust-lang\u002Frust\u002Fpull\u002F108838#issuecomment-1471619165\" rel=\"noopener noreferrer nofollow\"\u003Eэто существенно повышает время компиляции\u003C\u002Fa\u003E из-за компиляции всего drop-клея, который в ином случае не использовался бы. Возможно, здесь можно найти какой-то компромисс (например, сигнализировать, что мы хотим отдать приоритет времени компиляции финального двоичного файла в ущерб зависимостям), но сложно понять, какой подход был бы правильным.\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003C\u002Fli\u003E\u003Cli\u003E\u003Cp\u003EВероятно, инструментарий мог бы помочь с изоляцией тех частей кодовой базы, которые занимают больше всего времени в процессе компиляции (а также предоставить рекомендации по устранению проблем), но это гораздо более масштабный проект, чем мой пост.\u003C\u002Fp\u003E\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E\u003Cstrong\u003EА пока вам вполне может подойти \u003C\u002Fstrong\u003E\u003Ccode\u003E\u003Cstrong\u003Eopt-level = 0\u003C\u002Fstrong\u003E\u003C\u002Fcode\u003E\u003Cstrong\u003E!\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E","tags":[{"titleHtml":"docker"},{"titleHtml":"профилирование"},{"titleHtml":"трассировка"},{"titleHtml":"компиляция"},{"titleHtml":"rustc"}],"metadata":{"stylesUrls":[],"scriptUrls":[],"shareImageUrl":"https:\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fupload_files\u002Fd95\u002F93a\u002F2c8\u002Fd9593a2c823f0a6922672e8af2149320.jpg","shareImageWidth":1200,"shareImageHeight":630,"vkShareImageUrl":"https:\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fupload_files\u002Fd95\u002F93a\u002F2c8\u002Fd9593a2c823f0a6922672e8af2149320.jpg","schemaJsonLd":"{\"@context\":\"http:\\\u002F\\\u002Fschema.org\",\"@type\":\"Article\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https:\\\u002F\\\u002Fhabr.com\\\u002Fru\\\u002Farticles\\\u002F922534\\\u002F\"},\"headline\":\"«Почему компилятор Rust такой медленный?»\",\"datePublished\":\"2025-07-15T16:08:24+03:00\",\"dateModified\":\"2025-07-15T16:42:53+03:00\",\"author\":{\"@type\":\"Person\",\"name\":\"PatientZero\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Habr\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fwebt\\\u002Fa_\\\u002Flk\\\u002F9m\\\u002Fa_lk9mjkccjox-zccjrpfolmkmq.png\"}},\"description\":\"Я потратил месяц на создание веб-сайта в Docker и теперь готов поделиться ужасными историями.У меня есть проблема.Мой веб-сайт (на котором была опубликована эта...\",\"url\":\"https:\\\u002F\\\u002Fhabr.com\\\u002Fru\\\u002Farticles\\\u002F922534\\\u002F#post-content-body\",\"about\":[\"h_rust\",\"h_virtualization\",\"h_webdev\",\"h_programming\",\"f_develop\",\"f_admin\"],\"image\":[\"https:\\\u002F\\\u002Fhabr.com\\\u002Fshare\\\u002Fpublication\\\u002F922534\\\u002F38ac24d9e90b6173f50776d8e28de237\\\u002F\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002F564\\\u002F826\\\u002Fad6\\\u002F564826ad6615edc261f34861115d9185.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002Fd2e\\\u002F40e\\\u002Fd67\\\u002Fd2e40ed67b34eeeb24fbe60aaa4d623f.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002F2a3\\\u002F851\\\u002F6d6\\\u002F2a38516d625010cb18e25eb64e179048.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002F031\\\u002F806\\\u002F807\\\u002F0318068079467dc468da884b3f7a2e24.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002Fd7d\\\u002Fb93\\\u002F9c2\\\u002Fd7db939c2e314b6098efb1e583dd1233.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002Fe61\\\u002Fef8\\\u002F5bb\\\u002Fe61ef85bb44381ef5a52d65f65ce6741.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002F20e\\\u002F196\\\u002F659\\\u002F20e1966592787bc01c366f12fe00da8e.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002Fb10\\\u002Ff30\\\u002F0d0\\\u002Fb10f300d052663a66a4d6882cd1beef7.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002F94f\\\u002F687\\\u002F2dd\\\u002F94f6872dd49d14d691f57e4e6dab7766.png\",\"https:\\\u002F\\\u002Fhabrastorage.org\\\u002Fgetpro\\\u002Fhabr\\\u002Fupload_files\\\u002Fd95\\\u002F93a\\\u002F2c8\\\u002Fd9593a2c823f0a6922672e8af2149320.jpg\"]}","metaDescription":"Я потратил месяц на создание веб-сайта в Docker и теперь готов поделиться ужасными историями. У меня есть проблема. Мой веб-сайт (на котором была опубликована эта статья) в основном обслуживается...","mainImageUrl":null,"amp":true,"customTrackerLinks":[]},"polls":[],"commentsEnabled":{"status":true,"reason":null},"rulesRemindEnabled":false,"votesEnabled":true,"status":"published","plannedPublishTime":null,"checked":null,"hasPinnedComments":false,"format":null,"banner":null,"multiwidget":null,"multiwidgetUuid":null,"readingTime":43,"complexity":"medium","isEditorial":true,"flowNew":{"id":"2","title":"Backend","alias":"backend"},"linkedPostTranslation":null,"hasRegionalRestrictions":false}},"articlesIds":{},"isLoading":false,"pagesCount":{},"route":{},"reasonsList":null,"postReasonsList":null,"view":"cards","oldEditorForm":null,"lastVisitedRoute":{},"ssrCommentsArticleIds":[],"viewedPosts":[],"myFeedFilter":{"complexity":"all","score":"all","types":["articles","posts","news"]},"myFeedIsApplyFilters":false,"myFeedIsForce":false},"me":{"user":null,"uuid":null,"ppgDemanded":false,"karmaResetInfo":{"canReincarnate":null,"wasReincarnated":null,"currentScore":null},"notes":null,"userUpdates":{"feeds":{"newCount":null},"conversationUnreadCount":0,"trackerUnreadCount":0},"features":null},"flowsMenu":{"flowsMenuData":{"whatsNew":{"newAuthors":{"order":7,"items":[{"alias":"Maden4ic","fullname":"Maden4ic","avatarUrl":null},{"alias":"slavacpp","fullname":"0xC0DE1E55","avatarUrl":null},{"alias":"Gim6626","fullname":"Дмитрий Винокуров","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002F27a\u002Fe3f\u002Fda7\u002F27ae3fda77c3828724b6c0568d17ee16.jpg"}]},"updates":{"order":8,"items":[{"title":"Changelog","url":"https:\u002F\u002Fhabr.com\u002Fen\u002Fdocs\u002Fchangelog\u002F2025\u002F","imageUrl":null},{"title":"Habr Code of Authors","url":"https:\u002F\u002Fhabr.com\u002Fen\u002Fdocs\u002Fauthors\u002Fcodex\u002F","imageUrl":null},{"title":"How it works","url":"https:\u002F\u002Fhabr.com\u002Fen\u002Fdocs\u002Fhelp\u002Frules\u002F","imageUrl":null},{"title":"Corporate blogs","url":"https:\u002F\u002Fhabr.com\u002Fen\u002Fdocs\u002Fcompanies\u002Fcorpblogs\u002F","imageUrl":null}]},"socialNetwork":{"order":1},"thematicChannels":{"order":3},"ourActivities":{"order":4},"partnersActivities":{"order":5},"banner":{"order":6},"ourBlogs":{"order":2}},"flows":{"backend":{"technologies":{"order":1,"items":[{"alias":"go","title":"Go","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002Fa10\u002Fc5c\u002F626\u002Fa10c5c62685d9a7d2964993daf6958c3.png"}]},"topics":{"order":2,"items":[]},"topPosts":{"order":3,"items":[],"period":"day"},"topAuthors":{"order":4,"items":[{"alias":"xeovo","fullname":"xeovo","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002Fe83\u002Fde8\u002Ff9e\u002Fe83de8f9ed182d9287ca9900d263c2f9.png"}]},"topCompanies":{"order":5,"items":[{"alias":"xeovo","title":"Xeovo VPN","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fcompany\u002F864\u002F431\u002F196\u002F864431196b8a78de320f5707f6d8ff33.png"}]},"banner":{"order":6}},"frontend":{"technologies":{"order":1,"items":[{"alias":"javascript","title":"JavaScript","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002F2b3\u002F99b\u002F964\u002F2b399b964d456f3ad1bfddc0346b60d4.png"},{"alias":"reactjs","title":"ReactJS","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002Fe77\u002F27d\u002F25b\u002Fe7727d25b433a67f0e69acc74d2ba785.png"},{"alias":"nestjs","title":"NestJS","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002F820\u002Ff03\u002F364\u002F820f03364cccdb926fd93cfe2438f962.png"}]},"topics":{"order":2,"items":[]},"topPosts":{"order":3,"items":[],"period":"day"},"topAuthors":{"order":4,"items":[{"alias":"aymericzip","fullname":"Aymeric PINEAU","avatarUrl":null}]},"topCompanies":{"order":5,"items":[]},"banner":{"order":6}},"hardware_and_gadgets":{"technologies":{"order":1,"items":[]},"topics":{"order":2,"items":[]},"topPosts":{"order":3,"items":[{"id":"1033642","isCorporative":false,"lang":"en","titleHtml":"Appeal to keyboard makers: Please Stop Adding FN Buttons","postType":"article","hubs":[{"id":"21898","alias":"hardware","type":"collective","title":"Computer hardware","titleHtml":"Computer hardware","isProfiled":false},{"id":"17189","alias":"itstandarts","type":"collective","title":"IT Standards","titleHtml":"IT Standards","isProfiled":true},{"id":"21954","alias":"Peripheral","type":"collective","title":"Periphery","titleHtml":"Periphery","isProfiled":false}],"author":{"alias":"Murz","fullname":"Alexey Murz Korepov","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002F527\u002Fcd0\u002F606\u002F527cd060631ef496fb52ce16199efca0.jpg"}}],"period":"day"},"topAuthors":{"order":4,"items":[]},"topCompanies":{"order":5,"items":[]},"banner":{"order":6}},"mobile_development":{"technologies":{"order":1,"items":[{"alias":"dart","title":"Dart","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002F41e\u002F671\u002F2dd\u002F41e6712dd7d298077553efff8562bd73.png"},{"alias":"flutter","title":"Flutter","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002F63b\u002F728\u002Fb76\u002F63b728b76ec18862a5454a684509940b.png"},{"alias":"cpp","title":"C++","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002F89a\u002Fc44\u002F09e\u002F89ac4409ea406d835a82383fa53fcda7.png"},{"alias":"qt_software","title":"Qt","imageUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Fhub\u002Fa69\u002F436\u002F043\u002Fa69436043016a35349d05068d584b316.png"}]},"topics":{"order":2,"items":[]},"topPosts":{"order":3,"items":[],"period":"day"},"topAuthors":{"order":4,"items":[{"alias":"Paulik8","fullname":"Paulik8","avatarUrl":null},{"alias":"slavacpp","fullname":"0xC0DE1E55","avatarUrl":null}]},"topCompanies":{"order":5,"items":[]},"banner":{"order":6}},"industrial_engineering":{"technologies":{"order":1,"items":[]},"topics":{"order":2,"items":[]},"topPosts":{"order":3,"items":[],"period":"day"},"topAuthors":{"order":4,"items":[{"alias":"rsashka","fullname":"Александр Рябиков","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002Fad5\u002Fd5f\u002Feb2\u002Fad5d5feb2fbf547d4d74f65d041cb2c7.jpg"}]},"topCompanies":{"order":5,"items":[]},"banner":{"order":6}}},"events":{"items":[]}},"isMenuVisible":false},"banner":{"isArticleStickyPanelVisible":false,"isArticleStickyPanelAtTheBottom":false,"bannerContainer":null,"isHeaderBannerInView":true,"isSponsorBlockPresent":false,"isHeaderBannerVisible":true,"isPBrandingVisible":false},"refs":{"flowsRefs":[{"id":"2","title":"Бэкенд","alias":"backend"},{"id":"4","title":"Фронтенд","alias":"frontend"},{"id":"6","title":"Мобильная разработка","alias":"mobile_development"},{"id":"8","title":"Системное администрирование","alias":"admin"},{"id":"10","title":"Информационная безопасность","alias":"information_security"},{"id":"12","title":"AI и ML","alias":"ai_and_ml"},{"id":"14","title":"Промышленная инженерия","alias":"industrial_engineering"},{"id":"16","title":"Геймдев","alias":"gamedev"},{"id":"18","title":"Тестирование","alias":"quality_assurance"},{"id":"20","title":"Техническая поддержка","alias":"support"},{"id":"22","title":"Системный и бизнес-анализ","alias":"analytics"},{"id":"24","title":"Дизайн","alias":"design"},{"id":"26","title":"Менеджмент","alias":"management"},{"id":"28","title":"Топ-менеджмент","alias":"top_management"},{"id":"30","title":"Маркетинг и контент","alias":"marketing"},{"id":"34","title":"Продажи","alias":"sales"},{"id":"36","title":"HR","alias":"human_resources"},{"id":"38","title":"Бэк-офис","alias":"back_office"},{"id":"40","title":"Зерокодинг","alias":"zero-code_development"},{"id":"42","title":"Железо и гаджеты","alias":"hardware_and_gadgets"},{"id":"44","title":"DIY","alias":"diy"},{"id":"46","title":"Здоровье","alias":"healthcare"},{"id":"48","title":"Научпоп","alias":"popsci"},{"id":"50","title":"Другое","alias":"other"}]},"promoData":{"isLoading":false,"hasLoaded":false,"featurer":null,"megaposts":null,"promoLinks":null,"promoPosts":null,"sticker":null,"stories":null,"activities":[],"partnerActivities":[],"isPromoDataAvailable":{"featurer":true,"promoPosts":true,"promoLinks":false,"megaposts":false}},"fixedBanner":{"isLoading":false,"viewEventsSent":[],"imagesLoaded":{}},"companies":{"companyRefs":{"__ALIAS_STORE__":true},"companyIds":{},"companyTopIds":[],"companyRouteStatistics":{},"pagesCount":{},"companyProfiles":{"__ALIAS_STORE__":true},"companiesCategories":[],"companiesCategoriesTotalCount":0,"companiesWidgets":{"__ALIAS_STORE__":true},"companiesWorkers":{"__ALIAS_STORE__":true},"companiesFans":{"__ALIAS_STORE__":true},"multiwidgets":{"__ALIAS_STORE__":true},"route":{},"isLoading":false,"companyWorkersLoading":false,"companyFansLoading":false,"multiwidgetLoading":false,"vacancies":{},"companiesGalleries":{"__ALIAS_STORE__":true},"companiesBanners":{"__ALIAS_STORE__":true},"companiesLandingVacancies":{"__ALIAS_STORE__":true},"companiesTechnologies":{"__ALIAS_STORE__":true},"workplaceInfo":null},"ssr":{"error":null,"isDataLoaded":true,"isDataLoading":false},"hubs":{"hubRefs":{"__ALIAS_STORE__":true},"hubIds":{},"hubRouteStats":{},"pagesCount":{},"isLoading":false,"counters":{"__ALIAS_STORE__":true},"route":{"name":"","params":{},"query":{}}},"adblock":{"hasAcceptableAdsFilter":false,"hasAdblock":false},"pullRefresh":{"shouldRefresh":false},"viewport":{"prevScrollY":{},"scrollY":0,"width":0,"pageContentHeight":0},"feedStatistics":{"feedsStatistics":{}},"pageArticleComments":{"lastViewedComment":0,"postId":null,"lastCommentTimestamp":1753100997,"moderated":[],"moderatedIds":[],"commentRoute":"","idempotenceKey":""},"comments":{"articleComments":{"922534":{"refs":{"28575610":{"id":"28575610","parentId":null,"level":0,"timePublished":"2025-07-15T13:47:04+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":3,"votesCount":3,"message":"\u003Cp\u003Eперевод интересный, но зачем на свой вебсайт делать musl?\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"626449","alias":"vlad4kr7","fullname":null,"avatarUrl":null,"speciality":"Разработчик","deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28575792","28575984"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28575648":{"id":"28575648","parentId":null,"level":0,"timePublished":"2025-07-15T13:55:02+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":1,"votesCount":1,"message":"\u003Cp\u003EНачал читать, увидел Alpine и musl, сразу подумал, что надо комментарий про аллокатор оставить. Рад, что автор сам (пусть и с чужой помощью) додумался. Альтернативные аллокаторы даже на glibc таргетах дают заметный выигрыш по производительности, а на musl они просто необходимы.\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"144062","alias":"V1tol","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28575792":{"id":"28575792","parentId":"28575610","level":1,"timePublished":"2025-07-15T14:24:22+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":1,"votesCount":3,"message":"\u003Cp\u003Eчтобы был статический бинарник в с минимумом зависимостей -> чтобы докер образ весил меньше\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"71329","alias":"Kerrigan","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28578892"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28575984":{"id":"28575984","parentId":"28575610","level":1,"timePublished":"2025-07-15T15:01:51+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":2,"votesCount":4,"message":"\u003Cp\u003Eэто не сам конкретно сайт, а взятый как попало alpine в сборочном контейнере без понимания, ведь он меньше по размеру \u002Fs, там glibc заменен на альтернативный аллокатор musl.\u003C\u002Fp\u003E\u003Cp\u003Eтема аллокаторов сама жирная и обширная в лынукс, но как обычно в нем выбирать приходится из сортов говна - glibc разжирает долгоиграющие бинарники в памяти, у jemaloc есть рандомные краши и дропнута поддержка, musl вот такой +часть функций glibc не имплеменчена.\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"578357","alias":"max9","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28576424"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28576424":{"id":"28576424","parentId":"28575984","level":2,"timePublished":"2025-07-15T17:13:02+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003EА что на счёт mimalloc от microsoft?\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"2790571","alias":"okhsunrog","fullname":"Данила Горнушко","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002F198\u002F40f\u002Fedb\u002F19840fedbb4535d790c66f2af884465f.jpg","speciality":"Rust Developer","deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28576884"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28576884":{"id":"28576884","parentId":"28576424","level":3,"timePublished":"2025-07-15T19:05:24+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003Eувы, не знаю. будем ресерч делать, на альтернативные с jemalloc\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"578357","alias":"max9","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28580560"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28577088":{"id":"28577088","parentId":null,"level":0,"timePublished":"2025-07-15T19:50:33+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":14,"votesCount":14,"message":"\u003Cp\u003EБудет быстрей, если бинарник на rust будет считывать текстовые файлы, возможно даже исполнять какие-то куски кода среди них и отвечать на запросы этим текстом. Нужно внести изменения на страницу - поправил текстовый файл и все, не надо ничего перекомпилировать.\u003C\u002Fp\u003E\u003Cp\u003EХотя погодите...\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"1027416","alias":"NotSlow","fullname":"Крупченко Евгений","avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002F035\u002F535\u002F890\u002F0355358900089b1870872ba59cc890b9.jpg","speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28579966","28602100"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28577464":{"id":"28577464","parentId":null,"level":0,"timePublished":"2025-07-15T22:24:02+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003EГлупый вопрос задам: а sccache профита в плане времени не даст?\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"900457","alias":"hogstaberg","fullname":null,"avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002Ff4a\u002Fab4\u002F28f\u002Ff4aab428f1452c04dc388de9a271a095.jpg","speciality":"Пользователь","deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28578514":{"id":"28578514","parentId":null,"level":0,"timePublished":"2025-07-16T06:27:06+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":4,"votesCount":4,"message":"\u003Cp\u003EА зачем он вообще решил контейнер сделать, подскажите, пожалуйста? \u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"4160556","alias":"warkid","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28580622","28581032"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28578892":{"id":"28578892","parentId":"28575792","level":2,"timePublished":"2025-07-16T07:23:26+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":1,"votesCount":1,"message":"\u003Cp\u003EНапоминает как раньше vk работал. Они писали тоже, что просто был один очень большой бинарник \u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"3798888","alias":"JerryI","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28579966":{"id":"28579966","parentId":"28577088","level":1,"timePublished":"2025-07-16T10:00:35+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":3,"votesCount":3,"message":"\u003Cp\u003EВы ещё скажите, что бинарник можно на си писать! Экий вы фантазёр!\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"1608137","alias":"legolegs","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28580486":{"id":"28580486","parentId":null,"level":0,"timePublished":"2025-07-16T11:13:05+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":14,"votesCount":14,"message":"\u003Cp\u003EЭтот человек может легко прогуляться на самое дно ада и непринужденно вернуться. Сделать сайт на rust, удивиться что в докере компилится немного медленно и так упороться в кишки компиляции. Возможно он это может сделать одновременно во всех мультивселенных. Чак Норрис обиженно хныкает в углу\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"164444","alias":"Antohin","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28580560":{"id":"28580560","parentId":"28576884","level":4,"timePublished":"2025-07-16T11:23:45+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003EЯ в своих пет-проектах съехал на гугловый tcmalloc. Его область применения ограничена linux x86_64\u002Faarch64 (плюс дополнительно потюнить настройки ядра в районе THP через sysctl). Но там, где мои сервисы подняты, других архитектур и нет\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"937050","alias":"tbl","fullname":"tnvd","avatarUrl":null,"speciality":"Пользователь","deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28580568"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28580568":{"id":"28580568","parentId":"28580560","level":5,"timePublished":"2025-07-16T11:24:38+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003Eнам увы еще и i386 надо.\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"578357","alias":"max9","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28580622":{"id":"28580622","parentId":"28578514","level":1,"timePublished":"2025-07-16T11:32:42+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003Eмне тоже очень интерестно\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"209722","alias":"Arenoros","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28581032":{"id":"28581032","parentId":"28578514","level":1,"timePublished":"2025-07-16T12:33:34+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":6,"votesCount":6,"message":"\u003Cblockquote\u003E\u003Cp\u003E Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров \u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003EЕму было неудобно собирать бинарники, он решил наворотить контейнер, в котором сборка идёт медленнее.\u003C\u002Fp\u003E\u003Cp\u003EТо есть вместо одного баш-скрипта он решил погрузиться в ад.\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"695935","alias":"Revertis","fullname":null,"avatarUrl":"\u002F\u002Fhabrastorage.org\u002Fgetpro\u002Fhabr\u002Favatars\u002Ff72\u002Fcc8\u002F962\u002Ff72cc8962beb95cdf0bb64aaf461e63f.png","speciality":"Разработчик под Android, перешедший на Rust","deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":["28581238"],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28581238":{"id":"28581238","parentId":"28581032","level":2,"timePublished":"2025-07-16T13:10:47+00:00","timeChanged":"2025-07-16T13:12:16+00:00","isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003EЗато он получил от этого удовольствие :)\u003C\u002Fp\u003E\u003Cp\u003EМысль про АДЪ мне тоже первой сразу пришла в голову (см. мой комментарий ниже)\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"164444","alias":"Antohin","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false},"28602100":{"id":"28602100","parentId":"28577088","level":1,"timePublished":"2025-07-21T12:29:57+00:00","timeChanged":null,"isSuspended":false,"status":"published","score":0,"votesCount":0,"message":"\u003Cp\u003Ephp, js...\u003C\u002Fp\u003E","editorVersion":2,"author":{"id":"547344","alias":"gerashenko","fullname":null,"avatarUrl":null,"speciality":null,"deleted":false},"isAuthor":false,"isPostAuthor":false,"isNew":false,"isFavorite":false,"isCanEdit":false,"timeEditAllowedTill":null,"children":[],"vote":null,"votePlus":null,"voteMinus":null,"isPinned":false}},"root":["28575610","28575648","28577088","28577464","28578514","28580486"],"cacheKey":"fc34c034-0bbb-43c0-ab44-63ca69da24bd"}},"articlePinnedComments":{"922534":{"refs":{},"commentIds":[]}},"searchCommentsResults":null,"pagesCount":null,"commentAccess":{},"scrollParents":{}},"publicationStats":{"statsInfo":{},"statsFunnels":{},"statsGraph":{},"defaultSuggest":{},"suggest":{},"timeTracker":{},"isUserActive":true,"otherPublicationStats":{}}};(function(){var s=document.currentScript||document.scripts[document.scripts.length-1];s.parentNode.removeChild(s);}());
Pull to refresh

Comments 18

перевод интересный, но зачем на свой вебсайт делать musl?

чтобы был статический бинарник в с минимумом зависимостей -> чтобы докер образ весил меньше

Напоминает как раньше vk работал. Они писали тоже, что просто был один очень большой бинарник

это не сам конкретно сайт, а взятый как попало alpine в сборочном контейнере без понимания, ведь он меньше по размеру /s, там glibc заменен на альтернативный аллокатор musl.

тема аллокаторов сама жирная и обширная в лынукс, но как обычно в нем выбирать приходится из сортов говна - glibc разжирает долгоиграющие бинарники в памяти, у jemaloc есть рандомные краши и дропнута поддержка, musl вот такой +часть функций glibc не имплеменчена.

А что на счёт mimalloc от microsoft?

увы, не знаю. будем ресерч делать, на альтернативные с jemalloc

Я в своих пет-проектах съехал на гугловый tcmalloc. Его область применения ограничена linux x86_64/aarch64 (плюс дополнительно потюнить настройки ядра в районе THP через sysctl). Но там, где мои сервисы подняты, других архитектур и нет

нам увы еще и i386 надо.

Начал читать, увидел Alpine и musl, сразу подумал, что надо комментарий про аллокатор оставить. Рад, что автор сам (пусть и с чужой помощью) додумался. Альтернативные аллокаторы даже на glibc таргетах дают заметный выигрыш по производительности, а на musl они просто необходимы.

Будет быстрей, если бинарник на rust будет считывать текстовые файлы, возможно даже исполнять какие-то куски кода среди них и отвечать на запросы этим текстом. Нужно внести изменения на страницу - поправил текстовый файл и все, не надо ничего перекомпилировать.

Хотя погодите...

Вы ещё скажите, что бинарник можно на си писать! Экий вы фантазёр!

Глупый вопрос задам: а sccache профита в плане времени не даст?

А зачем он вообще решил контейнер сделать, подскажите, пожалуйста?

мне тоже очень интерестно

Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров

Ему было неудобно собирать бинарники, он решил наворотить контейнер, в котором сборка идёт медленнее.

То есть вместо одного баш-скрипта он решил погрузиться в ад.

Зато он получил от этого удовольствие :)

Мысль про АДЪ мне тоже первой сразу пришла в голову (см. мой комментарий ниже)

Этот человек может легко прогуляться на самое дно ада и непринужденно вернуться. Сделать сайт на rust, удивиться что в докере компилится немного медленно и так упороться в кишки компиляции. Возможно он это может сделать одновременно во всех мультивселенных. Чак Норрис обиженно хныкает в углу

Sign up to leave a comment.

Articles