https://discourse.llvm.org/t/rfc-breaking-basic-format-strings-abi-for-performance-improvements/85431
TL;DR - хорошо им там в Rust, увидел возможность оптимизации, послал PR, и ты в шоколаде.
А в этом вашем C++ - 5 страниц текста только с объяснением идеи и случающегося ABI break, и, в результате, ты будешь тоже в чем-то коричневом (но, скорее всего, это не шоколад, ага).
TL;DR - хорошо им там в Rust, увидел возможность оптимизации, послал PR, и ты в шоколаде.
А в этом вашем C++ - 5 страниц текста только с объяснением идеи и случающегося ABI break, и, в результате, ты будешь тоже в чем-то коричневом (но, скорее всего, это не шоколад, ага).
LLVM Discussion Forums
[RFC] Breaking basic_format_string's ABI for performance improvements
This proposal describes an performance improvement for C++20’s std::format and similar functions. This improvement involves an ABI break. I’d like to get some feedback how we want to tackle this ABI break in libc++. Abstract Something that has bothered me…
🤣13🐳5👍3🔥2❤1
Будни #bootstrap
Случился новый релиз svt-av1, принес красивое:
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/cmake/cpuinfo.cmake?ref_type=heads#L67-68
Что у нас тут написано?
* Заюзали новую либу, от pytorch, вроде, ничего страшного - https://github.com/pytorch/cpuinfo
* Завендорили, причем самым всратым в cmake способом, через FETCH_CONTENT (никогда, никогда так не делайте)
* Самая мякотка - завендорили какой-то васянский форк, https://github.com/1480c1/cpuinfo, наверное, вирус какой-то.
* Прикопали хеш от zip файла - https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/cmake/cpuinfo.cmake?ref_type=heads#L76 Никогда, никогда этого не делайте, ВСЕ известные мне хранилища исходников генерят их нестабильно. Через пару итераций очистки кеша в его gitlab этот хеш протухнет:
https://www.tgoop.com/itpgchannel/916
https://www.tgoop.com/itpgchannel/424
https://www.tgoop.com/itpgchannel/937
Все это, конечно, вызывает некоторую фрустрацию.
Случился новый релиз svt-av1, принес красивое:
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/cmake/cpuinfo.cmake?ref_type=heads#L67-68
Что у нас тут написано?
* Заюзали новую либу, от pytorch, вроде, ничего страшного - https://github.com/pytorch/cpuinfo
* Завендорили, причем самым всратым в cmake способом, через FETCH_CONTENT (никогда, никогда так не делайте)
* Самая мякотка - завендорили какой-то васянский форк, https://github.com/1480c1/cpuinfo, наверное, вирус какой-то.
* Прикопали хеш от zip файла - https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/cmake/cpuinfo.cmake?ref_type=heads#L76 Никогда, никогда этого не делайте, ВСЕ известные мне хранилища исходников генерят их нестабильно. Через пару итераций очистки кеша в его gitlab этот хеш протухнет:
https://www.tgoop.com/itpgchannel/916
https://www.tgoop.com/itpgchannel/424
https://www.tgoop.com/itpgchannel/937
Все это, конечно, вызывает некоторую фрустрацию.
GitLab
Files · master · Alliance for Open Media / SVT-AV1 · GitLab
Welcome to the Gitlab repo for the SVT-AV1!
🤡9🤔4❤3🔥2
Forwarded from Лепра
Обновлённый ChatGPT прекрасно создаёт советские плакаты
Такое можно и на стену повесить👍
🙈 Подписаться на Лепру 🙈
Такое можно и на стену повесить
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19🤣9❤6🔥4🐳2🆒1
Forwarded from Dankest Memes // Данкест Мемс
This media is not supported in your browser
VIEW IN TELEGRAM
AI-стартапы наглядно
🤣27👍20🔥4❤2🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаем тему https://www.tgoop.com/itpgchannel/2798 https://www.tgoop.com/itpgchannel/2673
https://www.opennet.ru/opennews/art.shtml?num=62937
"Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра"
"Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, охарактеризовал текущее состояние, как "почти готовность к написанию реального драйвера на Rust" https://lore.kernel.org/lkml/Z5kokYUDYEO2Cknj@kroah.com/"
UPD - звук к процессу - https://www.youtube.com/watch?v=BzNzgsAE4F0
https://www.opennet.ru/opennews/art.shtml?num=62937
"Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра"
"Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, охарактеризовал текущее состояние, как "почти готовность к написанию реального драйвера на Rust" https://lore.kernel.org/lkml/Z5kokYUDYEO2Cknj@kroah.com/"
UPD - звук к процессу - https://www.youtube.com/watch?v=BzNzgsAE4F0
🤡11🥰8😁7🤔2❤1
Будни #bootstrap
В саппортный чат #stal/ix (не ищите, там нет ничего интересного) пришел интересный коллега, и рассказал, что он случайно пришел к такому же дизайну пакетного менеджера, и OS на его основе:
https://ccx.te2000.cz/stagit/pthbs/file/README.html (диздок 1-в-1 как у IX)
Понятное дело, что тут очень много схожего с прародителями, типа Nix/Guix, но вот есть важная деталь, которая обеспечивает новизну этого дизайна:
"Jinja-based templating system for generating package definitions for pthbs"
https://ccx.te2000.cz/stagit/mrrl/file/templates/pkg/bison.html - вот, например, его пакет с bison.
Много общего с тем, как устроено у меня.
Шаблонизатор для описания пакета - это большое благо, потому что он очень помогает решать задачу "а вот сделай мне то же самое, но вот такую вот мелочь - поменяй". Эта задача или не решается, или решается очень плохо, другими пакетными менеджерами.
В саппортный чат #stal/ix (не ищите, там нет ничего интересного) пришел интересный коллега, и рассказал, что он случайно пришел к такому же дизайну пакетного менеджера, и OS на его основе:
https://ccx.te2000.cz/stagit/pthbs/file/README.html (диздок 1-в-1 как у IX)
Понятное дело, что тут очень много схожего с прародителями, типа Nix/Guix, но вот есть важная деталь, которая обеспечивает новизну этого дизайна:
"Jinja-based templating system for generating package definitions for pthbs"
https://ccx.te2000.cz/stagit/mrrl/file/templates/pkg/bison.html - вот, например, его пакет с bison.
Много общего с тем, как устроено у меня.
Шаблонизатор для описания пакета - это большое благо, потому что он очень помогает решать задачу "а вот сделай мне то же самое, но вот такую вот мелочь - поменяй". Эта задача или не решается, или решается очень плохо, другими пакетными менеджерами.
👍6🥱5🆒3💊3🫡1
#llvmweekly
https://nnethercote.github.io/2025/03/19/how-to-speed-up-the-rust-compiler-in-march-2025.html
"Every LLVM major update for several years has made the Rust compiler faster. This is not due to some law of nature. Rather, it reflects sustained, excellent work from the LLVM developers. Kudos to them"
UPD:
Several years ago:
https://www.npopov.com/2020/05/10/Make-LLVM-fast-again.html
> Each LLVM release is a few percent slower than the last. LLVM 10 put some extra effort in this area, and somehow managed to make Rust compilation a whole 10% slower, for as yet unknown reasons.
(далее описывается внедрение CI с бенчмарком)
https://nnethercote.github.io/2025/03/19/how-to-speed-up-the-rust-compiler-in-march-2025.html
"Every LLVM major update for several years has made the Rust compiler faster. This is not due to some law of nature. Rather, it reflects sustained, excellent work from the LLVM developers. Kudos to them"
UPD:
Several years ago:
https://www.npopov.com/2020/05/10/Make-LLVM-fast-again.html
> Each LLVM release is a few percent slower than the last. LLVM 10 put some extra effort in this area, and somehow managed to make Rust compilation a whole 10% slower, for as yet unknown reasons.
(далее описывается внедрение CI с бенчмарком)
Nicholas Nethercote
How to speed up the Rust compiler in March 2025
It has been just over a year since my last update on the Rust compiler’s performance. Let’s get into it. The information about metrics at the top of this post still applies.
❤9👍4😁3🆒1
Forwarded from Alex Fails Some News Channel
Вышел-таки релиз смака 4.0!
Авторы решились поднять мажор, чтобы подсветить изменения в обратной совместимости и аккуратно выпилить старьё времён версии 2.8.ххх, старее, и вверх до версии 3.5 - старые политики, некоторые кривые вещи, устаревшие ещё с начала 10-х годов, хотя, по изменениям релиз минорный (до февраля это был ещё релиз 3.32, жалко, что красивой цифры 3.33 мы так и не увидели).
Для поддержки сборки проектов, которые собирались на последних версиях (3.31, 3.30 и некоторых раньше) добавили переменную окружения для мейнтейнеров старья CMAKE_MINIMUM_POLICY_VERSION
, и ей надо задать версию 3.5, чтобы старые проекты не ругались на старые политики сборки, которые были удалены. Авторы смака вместе с мейнтейнерами некоторых дистров (дебиан, Федора) помогли починить кое-где сборку.
Если у вас проект, у которого стоит
Помимо этого, там:
- в рамках тикета нашли багу в LLVM, в его поддержке модулей c++20 для clang/libc++ (Там глава Kitware зачинил багу);
- Продолжают внедрять и стабилизировать CPS - декларативный формат для внешних зависимостей, которые потом будут цепляться через
- Улучшают инструментацию сборки/конфигурирования проекта (активности примерно начались с версии 3.18, когда добавили простую возможность профилирования этапа конфигурации проекта), теперь можно будет получить более детальную информацию о том, что именно подтормаживает при процессе конфигурации/сборки проектов. Формат данных - flame-graph, включить в своем проекте можно через флаги --
В четвертой версии эту вещь расширили (на сборку, линковку, кастом-шаги), написали документацию, и сделали возможность задавать свои хуки на измерения, общаться через CMake File API (используется IDE-шками для сбора ВСЕЙ метаинфы о проекте, о таргетах, исходниках и пр.). Новая фича спрятана под волшебным идентификатором
- потихоньку улучшается дока по CMake , поэтому рекомендую периодически ее посматривать - авторы за релиз обычно много всяких полезных уточнений делают/принимают от волонтеров
- на мобильных устройствах теперь левая колонка со ссылками спрятана в "бутерброд"-кнопку контекстного меню;
- старые генераторы для MSVC, которые принимали в своем имени битность архитектуры (вида "Visual Studio 2015 64") были дропнуты в пользу флага
- Теперь можно экспортировать журнал конфигурирования проекта в формат SARIF через флаг
- Началась работа над генерацией SPDX SBOM
- Пачка прочих изменений (384 мерж-реквестов было слито, и там сотни файлов и тысячи строк были дропнуты после удаления старых вещей)
- также там был влит мой "фермерский" MR с фиксом кодировки текста ошибки, который можно получать через функцию FormatMessage(), там неверно интерпретировалась строка как юникод (haha, classic).
Другие изменения (а я рассказал только про удаленные вещи и про интересные экспериментальные фичи) можно глянуть в списке изменений тут: https://cmake.org/cmake/help/v4.0/release/4.0.html
#длиннопостик #смак #cmake #cpp #cxxmodules #profiling #build
v1.1.1-2025-03-09-0046
#длиннопостик@AlexFailsChannel
Авторы решились поднять мажор, чтобы подсветить изменения в обратной совместимости и аккуратно выпилить старьё времён версии 2.8.ххх, старее, и вверх до версии 3.5 - старые политики, некоторые кривые вещи, устаревшие ещё с начала 10-х годов, хотя, по изменениям релиз минорный (до февраля это был ещё релиз 3.32, жалко, что красивой цифры 3.33 мы так и не увидели).
Для поддержки сборки проектов, которые собирались на последних версиях (3.31, 3.30 и некоторых раньше) добавили переменную окружения для мейнтейнеров старья CMAKE_MINIMUM_POLICY_VERSION
, и ей надо задать версию 3.5, чтобы старые проекты не ругались на старые политики сборки, которые были удалены. Авторы смака вместе с мейнтейнерами некоторых дистров (дебиан, Федора) помогли починить кое-где сборку.
Если у вас проект, у которого стоит
cmake_minimum_required(VERSION 3.4)
и ниже - пора обновиться, желательно на 3.10. (у проектов, у которых нет этой команды вверху, лучше добавить эту команду, чтобы правильно применять политики обратной совместимости).Помимо этого, там:
- в рамках тикета нашли багу в LLVM, в его поддержке модулей c++20 для clang/libc++ (Там глава Kitware зачинил багу);
- Продолжают внедрять и стабилизировать CPS - декларативный формат для внешних зависимостей, которые потом будут цепляться через
find_package(libmeow COMPONENTS paws)
- Улучшают инструментацию сборки/конфигурирования проекта (активности примерно начались с версии 3.18, когда добавили простую возможность профилирования этапа конфигурации проекта), теперь можно будет получить более детальную информацию о том, что именно подтормаживает при процессе конфигурации/сборки проектов. Формат данных - flame-graph, включить в своем проекте можно через флаги --
profiling-output=<filename> --profiling-format=google-trace
, например: cmake -S . -B build --profiling-output=configure-profile.json --profiling-format=google-trace.
Полученный JSON можно скормить служебной странице хромиумоподобных браузеров about:profiling, в случае с Firefox - на profiler.firefox.com. Также такие файлы понимают некоторые IDE, типа Qt Creator, vscode и пр. В четвертой версии эту вещь расширили (на сборку, линковку, кастом-шаги), написали документацию, и сделали возможность задавать свои хуки на измерения, общаться через CMake File API (используется IDE-шками для сбора ВСЕЙ метаинфы о проекте, о таргетах, исходниках и пр.). Новая фича спрятана под волшебным идентификатором
CMAKE_EXPERIMENTAL_INSTRUMENTATION
. Такие идентификаторы описаны тут (там и про CPS, и про find_package() с CPS, и про import std, который все ещё не достаточно стабильный, и авторы CMake ходят фиксят/репортят баги в апстримах). Эта тема будет интересна для авторов IDE, для девопсов и тех, кому хочется найти узкие места сборки как локально, так и на CI/CD, и я, возможно, сделаю по этой теме отдельную заметочку;- потихоньку улучшается дока по CMake , поэтому рекомендую периодически ее посматривать - авторы за релиз обычно много всяких полезных уточнений делают/принимают от волонтеров
- на мобильных устройствах теперь левая колонка со ссылками спрятана в "бутерброд"-кнопку контекстного меню;
- старые генераторы для MSVC, которые принимали в своем имени битность архитектуры (вида "Visual Studio 2015 64") были дропнуты в пользу флага
-A <arch-name>
- Теперь можно экспортировать журнал конфигурирования проекта в формат SARIF через флаг
--sarif-output=<file>
- Началась работа над генерацией SPDX SBOM
- Пачка прочих изменений (384 мерж-реквестов было слито, и там сотни файлов и тысячи строк были дропнуты после удаления старых вещей)
- также там был влит мой "фермерский" MR с фиксом кодировки текста ошибки, который можно получать через функцию FormatMessage(), там неверно интерпретировалась строка как юникод (haha, classic).
Другие изменения (а я рассказал только про удаленные вещи и про интересные экспериментальные фичи) можно глянуть в списке изменений тут: https://cmake.org/cmake/help/v4.0/release/4.0.html
#длиннопостик #смак #cmake #cpp #cxxmodules #profiling #build
v1.1.1-2025-03-09-0046
#длиннопостик@AlexFailsChannel
GitLab
`CMAKE_POLICY_VERSION_MINIMUM` should be an environment variable (#26715) · Issues · CMake / CMake · GitLab
CMake 4.0.0-rc1 supports -DCMAKE_POLICY_VERSION_MINIMUM=3.5, which is insufficient because: CMake projects sometimes run sub-CMake with execute_process, which does not inherit this define.
👍7❤5🤡3🔥1
Alex Fails Some News Channel
Вышел-таки релиз смака 4.0! Авторы решились поднять мажор, чтобы подсветить изменения в обратной совместимости и аккуратно выпилить старьё времён версии 2.8.ххх, старее, и вверх до версии 3.5 - старые политики, некоторые кривые вещи, устаревшие ещё с начала…
А кросс-компиляции как не было (https://www.tgoop.com/itpgchannel/132), так и нет. И не будет, ага.
Telegram
commit -m "better"
#cross #cmake В CMake нет кросс-компиляции. Видимо, ее было сложно добавить постфактум(ну, не знаю, не глобальную переменную с набором environment завести, а сделать два экземпляра класса - для target, и для host). Вообще, добавить кросс-компиляцию в систему…
😁18🤷♀3👍1