AerynOS Linux October 2025 update delivers GNOME 49.1, KDE Plasma 6.5.1, and key compiler changes
https://web.brid.gy/r/https://nerds.xyz/2025/10/aerynos-linux-october-2025/
AerynOS Linux October 2025 update delivers GNOME 49.1, KDE Plasma 6.5.1, and key compiler changes
https://web.brid.gy/r/https://nerds.xyz/2025/10/aerynos-linux-october-2025/
The other day I learned a new place where adding or removing noexcept can change the performance of your program: GNU libstdc++’s hash-based associative containers change the struct layout of their nodes depending on the noexceptness of your hash function. This is laid out fairly clearly in the docs; it’s simply bizarre enough that I’d never thought to look for such a thing in the docs!
Ця оптимізація відбувається завдяки, тому що C++, на відміну від Go і Rust, привʼязує свою стандартну бібліотеку динамічно. Через це знижується сумісність бінарних файлів. Зібраний бінарний файл на Arch з використанням GCC 13, на Debian не запускається, тому що у ньому ще досі 12 версія компілятора, відповідно і старіша версія бібліотеки libstdc++.
Мені стало цікаво скільки буде займати місця файл програми коли ми прилінкуємо цю бібліотеку статично. Це можна зробити додавши -static до команди лінкера. Збирати будемо у режимі випуску. Якщо ми привʼяжемо динамічно, то розмір буде 547.664KiB, а якщо статично, то 3.214MiB. Ми можемо зменшити обидва ці файли видаливши з них зайву інформацію за допомоги команди strip з набору binutils. Після цього перший файл буде займати 427.664KiB, а зі статичною бібліотекою 2.581MiB. У другому випадку різниця більш помітна.
Виходить що коли поставити C++ і Go у рівні умови, то по розміру виграє Go через меншу стандартну бібліотеку. А по швидкості виконання все рівно виграє C++. Але їх обох обганяє чистий C.
Також хочу замітити що на бінарний файл мови Go команда strip ніяк не впливає, тобто нічого не видаляє.
#strip #static #libstdc++ #c++ #cpp #binutils #bin #gcc #g++ #link #sof #size #статична #бібліотека #привʼязка #лінкер #лінкування #розмір #бінарники #go
After the #glibc libc-alpha and #gcc gcc-patches mailinglist tests to avoid From rewriting worked out nicely we enabled the same settings to some other mailinglists.
The other gcc patches lists for #libstdc++, #libgccjit, #fortran and #gcc-rust. And those project that use #patchwork, #newlib, #elfutils, #libabigail and #gdb.
This hopefully makes mailing patches and using git am on them a bit nicer.
Please contact us if you have any issues with the mailinglists.
https://sourceware.org/mission.html#organization