Přesně před 34 lety, 25. srpna 1991, oznámil Linus Benedict Torvalds v diskusní skupině comp.os.minix, že vyvíjí (svobodný) operační systém (jako koníček, nebude tak velký a profesionální jako GNU) pro klony 386 (486), že začal v dubnu a během několika měsíců by mohl mít něco použitelného.
86Box, tj. emulátor retro počítačů založených na x86, byl vydán ve verzi 5.0. S integrovaným správcem VM. Na GitHubu jsou vedle zdrojových kódů ke stažení také připravené balíčky ve formátu AppImage.
Vláda Spojených států získala desetiprocentní podíl v americkém výrobci čipů Intel. Oznámili to podle agentur americký prezident Donald Trump a ministr obchodu Howard Lutnick. Společnost Intel uvedla, že výměnou za desetiprocentní podíl obdrží státní dotace v hodnotě 8,9 miliardy dolarů (zhruba 186 miliard Kč). Částka podle Intelu zahrnuje dříve přislíbené subvence 5,7 miliardy dolarů z programu CHIPS na podporu výroby čipů v USA,
… více »Organizace Apache Software Foundation (ASF) vydala verzi 27 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Knihovna FFmpeg byla vydána ve verzi 8.0 „Huffman“. Přibyla mj. podpora hardwarově akcelerovaného kódování s využitím API Vulcan, viz seznam změn.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal Zprávu o stavu kybernetické bezpečnosti ČR za rok 2024 (pdf). V loňském roce NÚKIB evidoval dosud nejvíce kybernetických bezpečnostních incidentů s celkovým počtem 268. Oproti roku 2023 se však jedná pouze o drobný nárůst a závažnost dopadů evidovaných incidentů klesá již třetím rokem v řadě. V minulém roce NÚKIB evidoval pouze jeden velmi významný incident a významných incidentů bylo zaznamenáno 18, což oproti roku 2023 představuje pokles o více než polovinu.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované obrázky APNG a WebP.
Na chytré telefony a počítačové tablety v Rusku bude od začátku příštího měsíce povinné předinstalovávat státem podporovanou komunikační aplikaci MAX, která konkuruje aplikaci WhatsApp americké společnosti Meta Platforms. Oznámila to dnes ruská vláda. Ta by podle kritiků mohla aplikaci MAX používat ke sledování uživatelů. Ruská státní média obvinění ze špehování pomocí aplikace MAX popírají. Tvrdí, že MAX má méně oprávnění k přístupu k údajům o uživatelích než konkurenční aplikace WhatsApp a Telegram.
Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu srpnový souhrn novinek. Kvůli nedostatečnému zájmu byla ukončena výroba telefonů PinePhone Pro.
Po pěti měsících vývoje byla vydána nová verze 0.15.1 programovacího jazyka Zig (GitHub, Wikipedie). Verze 0.15.0 byla přeskočena. Přispělo 162 vývojářů. Přehled novinek v poznámkách k vydání.
Premennú prostredia CFLAGS
používa gcc
pri
kompilácii zdrojových kódov v jazyku C. V Gentoo túto premennú nastavujeme v súbore
/etc/make.conf
a Portage ju pred kompiláciou balíčka prečíta a
nastaví. Premenná CXXFLAGS
funguje rovnako, ale pre jazyk
C++.
Ak nemáte problém s diskovým priestorom, ani s časom potrebným na
kompiláciu, môžete bezpečne použiť nasledujúcu hodnotu CFLAGS
a CXXFLAGS
:
CFLAGS="-O3 -fomit-frame-pointer -pipe"
CXXFLAGS="$(CFLAGS)"
Výsledný program však nebude ušitý na mieru vášmu procesoru a bude využívať iba inštrukčnú sadu procesora i386 (samozrejme ak vlastníte procesor založený na tejto architektúre).
Najprv by sme si mali povedať pár slov o tom, ako pracuje GCC. Ako už možno viete, GCC obsahuje viac kompilátorov naraz - kompilátory pre jazyky C, C++, Objective C, Fortran a Javu, ale aj ďalšie. Kompilátor GCC sa skladá z dvoch častí - frontend a backend.
Každý jazyk má vlastný frontend. Frontend načíta (preparsuje) a spracuje samotné zdrojové kódy. Výstupom frontendu je reprezentácia zdrojového kódu v jazyku RTL (Register Transfer Language). Dá sa povedať, že RTL je abstraktný štruktúrovaný assembler. Je to veľmi všeobecný a zložitý jazyk zároveň, preto nemá zmysel ho používať pre bežné programovanie.
Strom RTL sa pri kompilácii nachádza v pamäti len v binárnej forme. V binárnej forme vstupuje do backendu kompilátora GCC, ktorý je všeobecný pre celý kompilátor. Backend generuje z RTL stromu kód assemblera pre určený procesor. Backend tiež vykonáva optimalizácie nad RTL stromom a aj pri generovaní assemblera.
Backend vie vykonať niekoľko desiatok rôznych optimalizácií a nie všetky sú vhodné v každej situácii. Preto sú rôzne druhy optimalizácií roztriedené do skupín, aby ich bolo možné jednoducho zapínať - o chvíľku si o nich povieme.
Zostali vám nezodpovedané otázky? Ak vás zaujíma, ako vyzerá RTL, skúste
skompilovať jednoduchý program s parametrom -dr
:
gcc -dr zvyšné parametre
Ak chcete vedieť, ako prebiehajú rôzne optimalizácie v backende kompilátora GCC, prečítajte si článok The GNU Instruction Scheduler z roku 1989 (podstata GCC sa nezmenila).
Najdôležitejší je parameter optimalizácie -Ox
.
Určuje, ktorú skupinu optimalizácií chceme pri kompilovaní použiť. Písmeno
x treba nahradiť číslom, alebo písmenom želanej skupiny. Popis
jednotlivých skupín optimalizácií:
-O0
-O1
-O2
-O3
-Os
-O2
, ktoré nezväčšia veľkosť výsledného programu a pridá
ďalšie optimalizácie pre veľkosť výsledku. Rýchlosť a nároky na pamäť sú
podobné, ako pri -O2
.Ak špecifikujete viac parametrov -Ox
naraz, použije
sa iba posledný.
Parameter -fomit-frame-pointer
znemožní debugovanie
(používateľ to nepotrebuje) a zmenší veľkosť binárky.
Parameter -pipe
urýchli kompiláciu, pretože
gcc
nebude medzivýsledky ukladať na disk, ale ponechá ich v
pamäti.
Každý typ procesora má vlastnú inštrukčnú sadu - inštrukcia je jeden úkon, ktorý procesor dokáže vykonať. V assembleri nepoužívame príkazy, ale priamo inštrukcie procesora. Z toho vyplýva, že program v assembleri je závislý na procesore, pre ktorý je určený a nedá sa spustiť na inom.
Našťastie nové procesory poznajú všetky inštrukcie starších procesorov a inštrukčnú sadu len rozširujú o ďalšie inštrukcie. Túto vlastnosť majú procesory z radu Intel x86 - procesory bežných PC (i386, i486, Pentium atď.).
Ako som už povedal, kompilátor GCC generuje z RTL kódu kód assembleru a potrebuje teda vedieť, pre ktorý procesor má assembler vygenerovať. Na platforme x86 generuje predvolene pre procesor i386 a ten je možné použiť na ktoromkoľvek vyššom procesore.
Parameter -march=architektúra
určuje inštrukčnú sadu
procesora, na ktorom má program fungovať. Ak chceme, aby program fungoval
aj na starších procesoroch, ale chceme ho optimalizovať pre svoj procesor,
môžeme použiť jeden z parametrov:
-mcpu=architektúra
(gcc verzie 3.3 a nižšie)-mtune=architektúra
(gcc verzie 3.4 a vyššie)(Verziu gcc zistíme pomocou prikazu: gcc -v
.)
Za slovo architektúra dosaďte označenie procesora, pre ktorý kompilujete. Označenia všetkých procesorov nájdete v manuálovej stránke GCC. Ak kompilujete pre procesor typu x86, hľadajte sekciu Intel 386 and AMD x86-64 Options (jednoduchšie je nechať vyhľadať na manuálovej stránke reťazec athlon).
LDFLAGS používa linker (program, ktorý spája časti zdrojových kódov do spustiteľného súboru, alebo knižnice). Bezpečná hodnota premennej LDFLAGS je:
LDFLAGS="-Wl,-O1"
Ak chcete dostať zo systému maximum a ste ochotný trochu riskovať:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc -Wl, \
--enable-new-dtags -Wl,--relax"
V niektorých prípadoch sa pri kompilácii glibc
môžu
vyskytnúť problémy. Je lepšie nepoužívať v hodnote LDFLAGS
parameter -Wl,--relax
:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc
-Wl,--enable-new-dtags"
Problémy pre kompilácii robia aj OpenOffice.org
a
GStreamer
. Tu sa odporúča radikálne riešenie - nepoužívať
žiadnu hodnotu LDFLAGS
:
LDFLAGS=""
V týchto špeciálnych prípadoch si môžete usporiť námahu s editovaním
súboru /etc/make.conf
a premenné určiť priamo z príkazového
riadku:
# LDFLAGS="" emerge gstreamer
# LDFLAGS="" emerge openoffice
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
-march
ktere pouzivaji bezne distribuce misto -mcpu
. Existuji "objektivni testy" mezi temito rezimy?
$ mplayer MPlayer 1.0pre7-4.0.1 (C) 2000-2005 MPlayer Team CPU: Intel Pentium M Banias (Family: 6, Stepping: 5) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled with runtime CPU detection - WARNING - this is not optimal!... no nezdá se mi, že by v mojí binární distribuci byl mplayer zkompilován zcela bez optimalizací
No mě se zase zdá, že to, co tady vidíme, je jen detekce procesoru.ovšem výsledkem této detekce se pak mplayer řídí a používá kód optimalizovaný pro dané možnosti ... což jaksi vyvrací názor, který se snaží článek vsugerovat, a to že binární distribuce optimalizace nepoužívají ...
... binární distribuce optimalizace nepoužívají ...
To som nikdy nepovedal! Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.
ano, takto doslovně ne, na druhou stranu já jsem neřekl, že jsi napsal přímo toto, takže mi taky taky nepodsouvej něco, co jsem neřekl! inkriminovaná věta zní: "Pretože binárne balíky nie sú optimalizované pre váš procesor a sú badateľne pomalšie." mezi "přebásněním" slov "nie sú optimalizované pre váš procesor" na "optimalizace nepoužívají" je z významového hlediska pouze jediný rozdíl, a to že jsem si dovolil zobecnit "ne pro váš procesor" na "pro žádný procesor", jelikož sjednocení množin {váš procesor} v případě čtenářů ábíčka zahrnuje nejspíš téměř všechny architektury, na kterých Linux běhá - pokud s tím nesouhlasíš, měl bys dokázat, že průnik množin {všechny modely procesorů, pro které jsou některé balíky v různých binárních distribucích optimalizovány} a {všechny modely procesorů, na kterých čtenáři provozují Linux} je prázdný... binární distribuce optimalizace nepoužívají ...To som nikdy nepovedal!
Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.kde se toto tvrzení v článku vyskytuje?
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.zmatečná je jedině tvoje reakce, kolega J, na kterého jsem reagoval, psal o tom, že optimalizace má smysl u jednotlivých programů a uvedl: "Vyplati se to pro veci jako trebas mplayer.", v dané souvislosti je tedy nesmysl mluvit o celé distribuci
Compiled with runtime CPU detection - WARNING - this is not optimal!
No, nezda se ze by tady nekdo umel cist.
No, nezda se ze by tady nekdo umel cist.ok, až se to naučíš, tak začni od článku a pokračuj mojí první reakcí, pak třeba pochopíš, proč jsem na tvoji zmínku o mplayeru reagoval takto (případně si přečti ještě moji odpověď lzapovi)
$ mplayer MPlayer dev-CVS-060102-08:04-3.4.5 (C) 2000-2005 MPlayer Team CPU: Advanced Micro Devices Athlon 64 Newcastle,Winchester,San Diego,Venice; Sempron Palermo (Family: 15, Stepping: 0) CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Přeloženo pro CPU x86 s rozšířeními: MMX MMX2 3DNow 3DNowEx SSE SSE2
Keep in mind that -O3 enables optimizations that generally make code worse, not better. Use it only if you know it will improve your code.A občas sa stane, že kvôli tomu niečo padne. V každom prípade použitie kompilátoru od Intelu má omnoho lepší efekt :)
Ok, priznávam, že -O3
nemá vo väčšine prípadov tie najlepšie výsledky, ale aj tak sú tie najhoršie prípady takmer rovnaké ako pri -O2
(vyvracajúci dôkaz ocením).
Ja som nepovedal, že --omit-frame-pointer
znemožní debugovanie na všetkých platformách.
Vyplati se -O3 nebo -Os? Zatim pouzivam -O3, ale možná by bylo vhodnějšíByly doby, kdy jsem nadsene kompiloval s -O3. Od te doby, co jsem redukoval na -02, vyrazne klesl pocet komplikaci pri kompilacich (de facto na 0). Jineho efektu si nejsem vedom. Myslim, ze je to i ve smyslu doporuceni vyvojaru Gentoo, viz prispevek vyse.
# MAKEOPTS provides extra options that may be passed to 'make' when a # program is compiled. Presently the only use is for specifying # the number of parallel makes (-j) to perform. The suggested number # for parallel makes is CPUs+1. #MAKEOPTS="-j2"Zdroj: /etc/make.conf.example
Bežne sa odporúča použiť hodnotu: počet procesorov + 1To je pro másla 8-)