Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
Nokia oznámila přechod projektu Qt pod otevřenou správu. Do Qt projektu tak mohou přispívat jak firmy, tak jednotlivci a zároveň mohou tito vývojáři ovlivňovat směřování projektu. „KDE Free Qt Foundation“ pak zajišťuje, že Qt bude vždy dostupné jako svobodný software s licencemi LGPL 2.1 a GPL 3. KDE tento vývoj vítá.
Tiskni
Sdílej:
Z toho C kódu co jsem viděl, to pak vypadá, že co volání funkce, to kontrola výstupového kódu a reakce na chybový stav. Pak 2/3 kódu funkce je "nerelevatní" k primárnímu poslání funkce. To mi opravdu nepřijde výhodné.A jaký kód jsi viděl;)?
Že je to rychlejší? To bych se divil. Vždyť je za každým voláním funkce testování podmínky. U vyjímek nic takového není, kód je výrazně lineárnější.Testování podmínky při návratu z funkce jsou 2 instrukce. Pokud nechci psát IF, tak můžu použít makro.
Že je zpracování vyjímek pomalé? No a co, vyjímky jsou od toho vyjímky, že jsou vyjímečné.Otázka zůstává pořád stejná, na co všechno chceš použít výjimky? Já bych třeba pro chybnou alokaci paměti použil spíš výjimku, ale u chyby při otevírání souboru raději chybový kód. Možná je problém v tom, že se na C++ díváš jako na Javu. Pro mě jsou to 2 odlišné světy. Chtít po C++ aby to bylo jak Java, nebo naopak, prostě nemá cenu.
2 instrukce jsou stále pomalejší než žádná instrukce jako je tomu při použití vyjímek ;) Prostě vaše tvrzení, že návratové kódy jsou rychlejší, není pravdivé.2 instrukce jsou naprosto zanedbatelné, když bereš v úvahu volání funkce. Navíc pokud je volaná funkce inline, tak testování návratové hodnoty odpadá úplně (ten jump se vygeneruje už v té inline funkci).
A to byla moje pointa. Že je to nárůst nepatrný vám neberu.Při povolení výjimek je nárůst binárky mnohem větší, než při zpracování návratové hodnoty. Důvod je ten, že ty unwind tabulky se někam musí uložit. Navíc každá "exception enabled" funkce musí obsahovat peciální prolog a epilog.
Například kód Firefoxu. Řádky jako: if (NS_FAILED(rv)) return rv;Já osobně používám RETURN_ON_ERROR(kód), nenaroste počet řádků a v 90% situací postačuje. Jinak kód FF je zrovna velmi špatný příklad;)
Java vs. C++ jako jazyk, ne jako JVM versus nativní kód, samozřejmě srovnávat lze. Java je jazyk z C++ vzešlý, snažila se vyhnout chybám předchůdce, a vesměs se jí to i podařilo.Já si zase myslím, že C# se vyhl chybám Javy, a můžeme se tu hádat;)
Proč Cckaři nepoužívají vyjímky je dán historicky. Starší kompilátory neměli dobrou implementaci (alespoň se to všude tvrdí), programátoři se je nenaučili používat.I nové projekty, např. Chromium nebo V8 nepoužívají výjimky. Hodit všechno do jednoho pytle nejde. Jsou situace, kdy jsou výjimky zbytečné, a platit za ně daň v podobě většího a pomalejšího kódu nemá smysl. Druhá věc je ta, že pokud vytvořím knihovnu, která používá výjimky, tak ji už nikdo nemůže použít v kódu, který ty výjimky nepoužívá.
Samozřejmě bych volil vyjímku. Jestliže nastane vyjímka, což znamená chybu, neb chyba by vždy měla být vyjímečně, ideálně vůbec, čili jasně vyjímka, není nad čím mudrovat. Něco jiného je otázka, zda soubor kam budu zapisovat nejdříve otestovat, zda je zapisovatelný, nebo to "risknout" a nechat to "spadnout" až na operaci samotné. Záleží jak moc analyzujete stav jako vyjímečný, záleží na kontextu. Každopádně by ale knihovní funkce/metoda pro zápis neměla vracet úspěšnost v podobě kódu.Pro mě osobně ta situace není nijak výjimečná. I kdybych si otestoval, zda soubor X.Y můžu otevřít, tak během doby, než zavolám open(), ten soubor už může být třeba smazaný. Takže ve výsledku se ta výjimka stejně musí odchytit a zpracovat (jen v podobě větší režie).