O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.
Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.
Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.
V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.
Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.
Multimediální přehrávač mpv byl vydán ve verzi 0.42.0. Jde o větší balík změn po bezmála roce. Mimo jiné se lépe integruje s Waylandem nebo rozšiřuje podporu DVD/Blu-ray, např. umožňuje přehrávat rovnou obrazy médií (soubory iso).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.
Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.
Njn, ja to cetl asi pred rokem kdyz jsem ten problem s fragmentaci pameti resil (taky jsem potreboval sablonoidne struktury, tim padem glib a ghthash vypadli). IMHO udelat poradny benchmark je neskutecne prace (proto vetsina benchmarku vypada tak jak vypada). Vzdy je lepsi (nebo spis nutny) si vsechno premerit (jine podminky, jine vysledky).
STL je urcite implementovana jako soucast gcc/msvc (i kdyz treba existuji separatni implementace jako STLport). C++ sablony navic ani nejde kompilovat (do strojoveho kodu; jedine do predkompilovanych headeru) pokud se neudela konkretni instanciace.
Na druhe strane implementace sablon urcite pouziva funkce z glibc (treba malloc/free pres new/delete a std::allocator), tim padem vykon znacne zavisi i od glibc.
Taky mam domnenku, ze od glibc zavisi rychlost vyjimek (tohle nemam jeste vyreseno, urcite jde o nejakou kombinaci z trojice glibc, binutils, libgcc_s.so), viz nasledujici pripad (__cxa_throw a _Unwind*):
Obe mereni je stejny testcase (specialni extremni pripad s 70000 vyjimkama, nemilujete proste specialni pripady?
). Vzdy prelozeno s gcc 4.1.2 (libgcc_s.so je soucasti gcc, tim padem i stejna libgcc_s.so odkud jsou _Unwind* funkce). Jednou na CentOS 4 s glibc 2.3.4 a jednou na CentOS 5 s glibc 2.5. Jedina rozdilna vec krome glibc jsou jiny verze binutils. No a ta CentOS 5 verze beha v danem pripade vic nez 5x rychleji.
(Nejspis ten problem s vyjimkama bude mat neco do cineni s timhle: http://gcc.gnu.org/ml/gcc/2005-02/msg00627.html ).
Pozn. v tech grafech pochazeji vsechny funkce pod __cxa_throw z libgcc_s.so krome dl_iterate_phdr (je z glibc) a __gxx_personality_v0 (je z libstdc++ i s uzlem pod nim).
Na druhe strane implementace sablon urcite pouziva funkce z glibc (treba malloc/free pres new/delete a std::allocator)
Ne nutně. Na unixových systémech to tak nejspíš většinou bude, ale nemusí to tak fungovat všude. Standardní C++ knihovna může být teoreticky naprosto nezávislá na standardní C knihovně.
Prilis si neumim predstavit jak by se implementovalo new/delete nebo std::allocator bez malloc nebo mmap. Snad jedine primym volanim do kernelu (pres preruseni), co je prilis low-level pro standardni C++ knihovnu.
malloc() a free() v libc. Uvědomte si, že C++ je jazyk zcela nezávislý na C, teoreticky byste mohl mít C++ i na platformě, kde vůbec neexistuje překladač céčka, a tedy ani standardní C knihovna. Koneckonců dřív používala i řada projektů psaných v C své vlastní náhražky za systémové malloc() a free() a autoři to zdůvodňovali tím, že jejich implementace jsou efektivnější, což by nebylo dost dobře možné, kdyby to byly jen nadstavby nad těmi systémovými implementacemi.
Tak tady doslo asi k nedorozumeni. Ja puvodne psal o zavislosti na glibc uz jenom proto (pripad Linuxu), ze na preimplementovani malloc/free potrebujete nejakou systemovou funkci jako mmap/brk, abyste mel _nejakou_ pamet nad ktorou postavite vlastni malloc/free. A mmap/brk je taky soucasti glibc (jinak musite volat kernel primo pres preruseni/syscall).
A mmap/brk je taky soucasti glibc (jinak musite volat kernel primo pres preruseni/syscall).
Odpověděl jste si sám: ty funkce nejsou nic jiného než wrappery nad příslušné syscally. A použití céčkových wrapperů není principiálně nutné. Navíc se na to pořád díváte příliš linuxocentricky.
True
Dival jsem se na na jiny implementace new, snad vsechny bezne non-embedded systemy volaji nejakou verzi malloc (vratane msvc). Pak jsem disassembloval mmap, abych videl ze nema extra rezii. K alokatorum se jeste dostanu.
BTW nechapu tvrzeni "Standardní C++ knihovna může být teoreticky naprosto nezávislá na standardní C knihovně." AFAIK musi C++ alespon implementovat vsechny funkce C, treba taky malloc?
malloc() mezi nimi sice je, ale neznamená to, že musí jít o stejnou implementaci jako v libc. Vztah mezi funkcí malloc() a operátorem new je takový, že malloc() nesmí k alokaci použít new
The functionsale na druhou stranu se výslovně uvádí, že není specifikováno, zda operátorcalloc(),malloc(), andrealloc()do not attempt to allocate storage by calling::operator new().
new používá malloc() nebo ne
Whether the attempt involves a call to the Standard C library function malloc is unspecified.
Takže operátor new může být nadstavba nad funkcí malloc(), ale stejně tak na ní může být úplně nezávislý. Funkce malloc() ale nesmí být implementována pomocí operátoru new, IMHO kvůli tomu, aby bylo možné beztrestně overloadovat new vlastní verzí využívající malloc().
<stdint.h>. V C++ programu se obecně nemůžete spolehnout na to, že je budete mít k dispozici (ani ty, jejichž dostupnost garantuje norma jazyka C).
Tiskni
Sdílej: