Forwarded from /g/‘s Tech Memes
Introducing VibeCon — the world’s largest vibe coding conference.
Make sure you register today: http://127.0.0.1:8080/register
Make sure you register today: http://127.0.0.1:8080/register
😁77🐳14🤡10🔥4🌚2❤1
commit -m "better"
https://youtu.be/WPrSZvvt9Ow?si=iLr5Gu4cXXcdF5e9
речь, конечно, про с++1917
🆒10😁8🥴5❤1
commit -m "better"
Все шло хорошо, пока разработчики mesa не решили перестать жить во грехе
Я, когда читал код #mesa, у меня обычно из глаз шла кровь.
Вдруг, внезапно, за столько лет ее чтения, я понял, почему:
https://docs.mesa3d.org/codingstyle.html
"Basic formatting guidelines
* 3-space indentation, no tabs"
Это какой-то зашкаливающий уровень пиздеца, что просто нет слов.
Вдруг, внезапно, за столько лет ее чтения, я понял, почему:
https://docs.mesa3d.org/codingstyle.html
"Basic formatting guidelines
* 3-space indentation, no tabs"
Это какой-то зашкаливающий уровень пиздеца, что просто нет слов.
😁63👍8💯5🥴2🐳1
https://www.opennet.ru/opennews/art.shtml?num=63223
TL;DR - скорее бы на "almost memory safe" написали норм ssh клиент, вот реальной пользы-то было.
TL;DR - скорее бы на "almost memory safe" написали норм ssh клиент, вот реальной пользы-то было.
www.opennet.ru
Уязвимость в Dropbear SSH, допускающая подстановку команд в dbclient
Опубликован выпуск проекта Dropbear 2025.88, развивающего сервер и клиент SSH, получивший распространение в беспроводных маршрутизаторах и компактных дистрибутивах, подобных OpenWrt. В новой версии устранена уязвимость (CVE-2025-47203) в реализации SSH-клиента…
👍15🤡5🆒3❤1
https://www.tomshardware.com/pc-components/gpus/u-s-inks-bill-to-force-geo-tracking-tech-for-gpus-and-servers-high-end-gaming-gpus-also-subject-to-tracking
U.S. inks bill to force geo-tracking tech for high-end gaming and AI GPUs
Senator Tom Cotton's legislation seeks to "prevent advanced American chips from falling into the hands of adversaries like Communist China"
Мне вот интересно, оно без интернета (то есть, без регулярного получения от сервера разрешения на продолжение работы) будет работать? Если да - то кто мне мешает положить карточку в клетку Фарадея, или в коробочку из фольги?
(предложка)
U.S. inks bill to force geo-tracking tech for high-end gaming and AI GPUs
Senator Tom Cotton's legislation seeks to "prevent advanced American chips from falling into the hands of adversaries like Communist China"
Мне вот интересно, оно без интернета (то есть, без регулярного получения от сервера разрешения на продолжение работы) будет работать? Если да - то кто мне мешает положить карточку в клетку Фарадея, или в коробочку из фольги?
(предложка)
Tom's Hardware
U.S. inks bill to force geo-tracking tech for high-end gaming and AI GPUs
Senator Tom Cotton's legislation seeks to "prevent advanced American chips from falling into the hands of adversaries like Communist China."
🤡18👍4🆒3🐳2💅1
#llvmweekly
https://discourse.llvm.org/t/rfc-intra-procedural-lifetime-analysis-in-clang/86291
"This analysis draws inspiration from Rust’s Polonius borrow checker. While adapted for C++'s semantics (e.g., handling opaque calls, no enforced exclusivity, configurable strictness), its internal model still uses concepts like Loans and Origins which are analogous to formulation of lifetime in Rust’s Polonius.
This notion of a Origin/Loans serves a role closely related to the lifewww.tgoop.com/origin tracking in Polonius, providing a conceptual bridge. This proposal develops the necessary CFG-based dataflow infrastructure that could also support more explicit, Rust-style lifetime systems if they were introduced to Clang"
TL;DR - в clang уже есть [[clang::lifetimebound]], его предлагается расширять так, чтобы он мог работать между вызовами функций, используя идеи из Rust borrow checker.
КМК, это хороший путь для С++ - постепенно учиться проверять время жизни объектов все в большем и большем числе случаев, с разметкой времен жизни там, где это необходимо (а может, потом, и всегда).
Это вам не сраные профили безопастности от Страуструпа (https://www.tgoop.com/itpgchannel/2763), ага.
https://discourse.llvm.org/t/rfc-intra-procedural-lifetime-analysis-in-clang/86291
"This analysis draws inspiration from Rust’s Polonius borrow checker. While adapted for C++'s semantics (e.g., handling opaque calls, no enforced exclusivity, configurable strictness), its internal model still uses concepts like Loans and Origins which are analogous to formulation of lifetime in Rust’s Polonius.
This notion of a Origin/Loans serves a role closely related to the lifewww.tgoop.com/origin tracking in Polonius, providing a conceptual bridge. This proposal develops the necessary CFG-based dataflow infrastructure that could also support more explicit, Rust-style lifetime systems if they were introduced to Clang"
TL;DR - в clang уже есть [[clang::lifetimebound]], его предлагается расширять так, чтобы он мог работать между вызовами функций, используя идеи из Rust borrow checker.
КМК, это хороший путь для С++ - постепенно учиться проверять время жизни объектов все в большем и большем числе случаев, с разметкой времен жизни там, где это необходимо (а может, потом, и всегда).
Это вам не сраные профили безопас
LLVM Discussion Forums
[RFC] Intra-procedural Lifetime Analysis in Clang
Utkarsh Saxena @usx95 Dmytro Hrybenko @gribozavr Yitzhak Mandelbaum @ymand Jan Voung @jvoung Kinuko Yasuda @kinu Summary Clang’s current lifetime analysis operates locally within a single statement and cannot track object lifetimes across basic blocks…
👍17❤4🔥3🌭1
commit -m "better"
Из-за боязни проблем с ABI почти весь современный код С++(и его стандартная библиотека) живет в header-only режиме. Это отдельная, очень больная, тема, потому что скорость разработки складывается из отдельных кирпичиков, и скорость компиляции кода один из них.
#llvmweekly #cplpl_doomed
https://discourse.llvm.org/t/factoid-each-class-template-instantiation-costs-1kib/86189
TL;DR - каждый раз, когда вы инстанциируете шаблон,в мире умирает котик, вы тратите 1K памяти, и это очень много, потому что header only библиотеки:
"Maybe what this all points to is that header-only library evolution is a dead end when it comes to compile time, and that if you want to have fast compiles, the old ways, i.e. forward declarations, pimpl patterns, and other forms of implementation hiding, are still relevant if you care about compile time, even in a modular world"
Очень пересекается с цитатой из https://www.tgoop.com/itpgchannel/22, 100500 раз писал, и буду продолжать писать, что избыточная мономорфизация/inline - зло, не надо бояться virtual method call, pimpl, и вот это вот все.
И это коллега пишет только про время и потребление ресурсов компилятором, и не упоминает того, что избыточно встроенный код еще и медленнее может быть, потому что плохо использует кеши процессора (например, https://www.tgoop.com/itpgchannel/1547).
UPD: про pimpl вот еще ссылка - https://github.com/llvm/llvm-project/commit/bb1765179e1f, пример того, как сам LLVM у себя выпиливает излишнюю мономорфизацию.
https://discourse.llvm.org/t/factoid-each-class-template-instantiation-costs-1kib/86189
TL;DR - каждый раз, когда вы инстанциируете шаблон,
"Maybe what this all points to is that header-only library evolution is a dead end when it comes to compile time, and that if you want to have fast compiles, the old ways, i.e. forward declarations, pimpl patterns, and other forms of implementation hiding, are still relevant if you care about compile time, even in a modular world"
Очень пересекается с цитатой из https://www.tgoop.com/itpgchannel/22, 100500 раз писал, и буду продолжать писать, что избыточная мономорфизация/inline - зло, не надо бояться virtual method call, pimpl, и вот это вот все.
И это коллега пишет только про время и потребление ресурсов компилятором, и не упоминает того, что избыточно встроенный код еще и медленнее может быть, потому что плохо использует кеши процессора (например, https://www.tgoop.com/itpgchannel/1547).
UPD: про pimpl вот еще ссылка - https://github.com/llvm/llvm-project/commit/bb1765179e1f, пример того, как сам LLVM у себя выпиливает излишнюю мономорфизацию.
LLVM Discussion Forums
Factoid: Each class template instantiation costs 1KiB
Messing around with clang -cc1 -print-stats, I think I can show that every class template instantiation costs a minimum of 1KiB of memory. To me, that seems like a lot of data just to capture temporary type traits that are often used solely for template metaprogramming…
👍14🤔5🔥3❤1
(сорян, у меня много #llvmweekly, я их с месяц не читал, там много накопилось интересного)
https://discourse.llvm.org/t/improving-the-reproducibility-of-linker-benchmarking/86057
"The idea is to use the Nix project to build the projects with a custom linker wrapper that collects the reproducers. Nix builds are (at least theoretically) reproducible and all projects are built in a fairly uniform way which makes it fairly easy to inject the linker wrapper into any project without knowing project-specific details. Nix also supports cross compilation so the same machine can be used to build reproducers for all architectures (but there are some bugs which mean that at the moment not all projects can be cross compiled and not all projects end up using the linker wrapper). And we can upgrade project versions by using a new version of Nixpkgs (Nix’s “ports tree”)"
TL;DR - давайте возьмем reproducible Nix + наш враппер над LLD, чтобы уметь собирать статистику по временам работы LLD при сборке произвольно большого набора OSS проектов.
Очень, очень, хорошая и плодотворная идея.
https://discourse.llvm.org/t/improving-the-reproducibility-of-linker-benchmarking/86057
"The idea is to use the Nix project to build the projects with a custom linker wrapper that collects the reproducers. Nix builds are (at least theoretically) reproducible and all projects are built in a fairly uniform way which makes it fairly easy to inject the linker wrapper into any project without knowing project-specific details. Nix also supports cross compilation so the same machine can be used to build reproducers for all architectures (but there are some bugs which mean that at the moment not all projects can be cross compiled and not all projects end up using the linker wrapper). And we can upgrade project versions by using a new version of Nixpkgs (Nix’s “ports tree”)"
TL;DR - давайте возьмем reproducible Nix + наш враппер над LLD, чтобы уметь собирать статистику по временам работы LLD при сборке произвольно большого набора OSS проектов.
Очень, очень, хорошая и плодотворная идея.
LLVM Discussion Forums
Improving the reproducibility of linker benchmarking
A side project I’ve been working on recently is to make it easier to benchmark lld (as well as other linkers like mold and wild) by creating a common set of reproducer benchmarks. The idea is to create a new version of the lld-speed-test benchmarks which…
👍11🔥7🆒5❤2🤔1
#llvmweekly
https://github.com/llvm/llvm-project/commit/d68c732473a1
"flang/lib/Parser/Fortran-parsers.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:47.31 -> 0:41.68
Maximum resident set size (kbytes): 2062140 -> 1745584
flang/lib/Lower/Bridge.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:19.16 -> 0:45.86
Maximum resident set size (kbytes): 3849144 -> 2443476
flang/lib/Lower/PFTBuilder.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:29.24 -> 1:00.99
Maximum resident set size (kbytes): 4218368 -> 2923128
flang/lib/Lower/Allocatable.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:53.03 -> 0:22.50
Maximum resident set size (kbytes): 3092840 -> 2116908
flang/lib/Semantics/Semantics.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:18.75 -> 1:00.20
Maximum resident set size (kbytes): 3527744 -> 2545308"
TL;DR - прямо ооочень значимое сокращение времен сборки flang, с использованием precompiled headers, даже неожиданно. Правда, это тщательно выбранные файлы, не общее время, но, тем не менее.
https://github.com/llvm/llvm-project/commit/d68c732473a1
"flang/lib/Parser/Fortran-parsers.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:47.31 -> 0:41.68
Maximum resident set size (kbytes): 2062140 -> 1745584
flang/lib/Lower/Bridge.cpp:
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:19.16 -> 0:45.86
Maximum resident set size (kbytes): 3849144 -> 2443476
flang/lib/Lower/PFTBuilder.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:29.24 -> 1:00.99
Maximum resident set size (kbytes): 4218368 -> 2923128
flang/lib/Lower/Allocatable.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:53.03 -> 0:22.50
Maximum resident set size (kbytes): 3092840 -> 2116908
flang/lib/Semantics/Semantics.cpp
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:18.75 -> 1:00.20
Maximum resident set size (kbytes): 3527744 -> 2545308"
TL;DR - прямо ооочень значимое сокращение времен сборки flang, с использованием precompiled headers, даже неожиданно. Правда, это тщательно выбранные файлы, не общее время, но, тем не менее.
GitHub
[flang] Use precompiled headers in Frontend, Lower, Parser, Semantics… · llvm/llvm-project@d68c732
… and Evaluate (#131137)
Precompiling larger headers can save a lot of compile time across
various compilation units.
For the time being, disable precompiled headers for ccache builds on Windows
...
Precompiling larger headers can save a lot of compile time across
various compilation units.
For the time being, disable precompiled headers for ccache builds on Windows
...
👍9🆒2🔥1
#llvmweekly (Остапа понесло, ага)
https://github.com/llvm/llvm-project/commit/d1fd97737e90
А вот если кому-то интересно, как запилить поддержку санитайзера под пока неподдерживаемую OS.
В целом, копируешь куски реализации из Linux, + немного #protaskivanie по обертке релеватных системных вызовов, + код для определения раскладки замапленых участков памяти процессом.
Муторно, но не очень сложно.
И взгляд с другой стороны - https://keithp.com/blogs/sanitizer-fun/, как поддержать неизвестную libc в санитайзерах, и с чем пришлось столкнуться.
https://github.com/llvm/llvm-project/commit/d1fd97737e90
А вот если кому-то интересно, как запилить поддержку санитайзера под пока неподдерживаемую OS.
В целом, копируешь куски реализации из Linux, + немного #protaskivanie по обертке релеватных системных вызовов, + код для определения раскладки замапленых участков памяти процессом.
Муторно, но не очень сложно.
И взгляд с другой стороны - https://keithp.com/blogs/sanitizer-fun/, как поддержать неизвестную libc в санитайзерах, и с чем пришлось столкнуться.
GitHub
[compiler-rt][sanitizer] add Haiku support (#134772) · llvm/llvm-project@d1fd977
Co-authored-by: Jérôme Duval <jerome.duval@gmail.com>
👍8❤3👌2
commit -m "better"
Классный рассказ про то, как git вытеснял hg в Mozilla.
Из него я узнал, что однажды зеркало mozilla в github этот самый github немного сломало - https://bugzilla.mozilla.org/show_bug.cgi?id=943132#c8
Из него я узнал, что однажды зеркало mozilla в github этот самый github немного сломало - https://bugzilla.mozilla.org/show_bug.cgi?id=943132#c8
https://www.phoronix.com/news/Firefox-On-GitHub
А теперь, ВНЕЗАПНО, Firefox переехал на github.
Ну и правильно, нефиг поддерживать свой васянский #gitlab #infra хостинг, или чего у них там было, после hg.
Коменты, конечно, доставляют - https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1546132-firefox-source-code-now-hosted-on-github
(спасибо подписчикам за ссылку)
А теперь, ВНЕЗАПНО, Firefox переехал на github.
Ну и правильно, нефиг поддерживать свой васянский #gitlab #infra хостинг, или чего у них там было, после hg.
Коменты, конечно, доставляют - https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1546132-firefox-source-code-now-hosted-on-github
(спасибо подписчикам за ссылку)
Phoronix
Firefox Source Code Now Hosted On GitHub
The Mozilla Firefox source code is now officially available on GitHub as they work to transition from their hg.mozilla.org servers.
👍12👎7🤡5❤4🤔2🔥1
commit -m "better"
Никогда #stal/#IX не был так свеж!
"Я отыграл ваше седло, потом вашу лошадь, потом свое седло, потом свою лошадь, потом опять проиграл. Короче говоря, я снова поймал ваше седло, потом свое. Вот как обстоит дело. Это был великолепный ход, и я остановился на нем"
Все, что выше - репозитории не проверяют собираемость своих пакетов относительно самых свежих версий своих же пакетов, поэтому в этой гонке можно остановиться.
Все, что выше - репозитории не проверяют собираемость своих пакетов относительно самых свежих версий своих же пакетов, поэтому в этой гонке можно остановиться.
🔥38❤7🆒4👎1
Меня тут спрашивают, чего я не пишу, что guix переехал на codeberg - https://guix.gnu.org/blog/2025/migrating-to-codeberg/
Вот, пишу, как только словил проблему с этим codeberg.org (обнаружил я это тем, что у меня встал процесс обновления gumbo-parser, https://www.tgoop.com/itpgchannel/1349).
Не надо, не надо, пользоваться васянской #infra, не будь как guix, будь, хотя бы, как mozilla (https://www.tgoop.com/itpgchannel/3005).
(Хотя, если сравнить с savannah http://savannah.gnu.org/, то codeberg вполне себе ничего)
Вот, пишу, как только словил проблему с этим codeberg.org (обнаружил я это тем, что у меня встал процесс обновления gumbo-parser, https://www.tgoop.com/itpgchannel/1349).
Не надо, не надо, пользоваться васянской #infra, не будь как guix, будь, хотя бы, как mozilla (https://www.tgoop.com/itpgchannel/3005).
(Хотя, если сравнить с savannah http://savannah.gnu.org/, то codeberg вполне себе ничего)
🤡17👍9❤3😁1
https://www.opennet.ru/opennews/art.shtml?num=63232
"Выпуск дистрибутива Альт Рабочая станция К 11.0
Свободно использовать загруженную версию могут только физические лица, в том числе – индивидуальные предприниматели. Коммерческие и государственные организации могут скачивать и тестировать дистрибутив, но для постоянной работы в корпоративной инфраструктуре юридическим лицам необходимо приобретать лицензии или заключать лицензионные договоры в письменной форме"
"Выпуск дистрибутива Альт Рабочая станция К 11.0
Свободно использовать загруженную версию могут только физические лица, в том числе – индивидуальные предприниматели. Коммерческие и государственные организации могут скачивать и тестировать дистрибутив, но для постоянной работы в корпоративной инфраструктуре юридическим лицам необходимо приобретать лицензии или заключать лицензионные договоры в письменной форме"
😁27🍌7👍4🤣4💩3🐳2🙈1💅1