Národní bezpečnostní tým CSIRT.CZ koordinovaný sdružením CZ.NIC přichází se službou Strážci internetu, která má sjednotit způsob hlášení doménových jmen zneužívaných k páchání trestné činnosti. Službu mohou uživatelé využívat také prostřednictvím rozšíření do prohlížeče. Nový nástroj podporuje jak hlášení vyžadující autorizaci, tak anonymní reporting, u kterého však nebude možné zapojit takovou míru automatizace jako u
… více »Firefox pro iOS přichází s integrovaným blokováním reklam. Funkce je ve výchozím nastavení vypnutá a lze ji aktivovat v Settings > Browsing > Ad Blocker.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila (𝕏) open-source robota Microduck. Předobjednat jej lze za 340 eur.
Open-source autonomní AI agent OpenClaw (Wikipedie) byl vydán ve verzi 2026.8.1 aneb 2.0. Přehled novinek v poznámkách k vydání.
Byla vydána první veřejná preview verze PrusaSliceru 3.0. Přesně 15 let po zveřejnění první verze Slic3ru, které připadlo na 1. září 2011. Jedná se o dosud největší upgrade PrusaSliceru: "Řídili jsme se tím, co skutečně potřebujete, a tak jsme například zcela zahodili stávající uživatelské rozhraní a vytvořili ho znovu od nuly. Přinášíme také nový systém projektů, kompletně přepracované profily navržené pro moderní tiskárny s větším
… více »Byl vydán Mozilla Firefox 155.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vypíchnout lze Smart Window, zatím ale dostupné pouze pro uživatele v USA, Kanadě a Francii. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 155 bude brzy k dispozici také na Flathubu a Snapcraftu.
Tima Cooka na pozici generálního ředitele společnosti Apple dnešním dnem nahradil John Ternus, který byl dosud odpovědný za hardware. Tim Cook vedl Apple od roku 2011, kdy funkci převzal od později zesnulého spoluzakladatele společnosti Stevea Jobse. Za 15 let v čele Applu více než zdvojnásobil tržní hodnotu firmy.
Organizátoři konference LinuxDays ukončil veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata pro letošní ročník. Hlasovat můžete do pondělí 7. září, poté bude podle výsledků hlasování sestaven program pro letošní ročník.
Servo, engine webového prohlížeče napsaný v Rustu, byl vydán ve verzi 0.5.0. Novinky shrnuje přehled projektu za červenec. Došlo k dalšímu pokroku ve vykreslování webových stránek. Současným cílem projektu je vytvořit komponentu webového prohlížeče jako WebView pro použití v jiných aplikacích.
IKEA a XBOX představují kolekci YXSTABY (pdf). Ta přináší designová a praktická řešení, díky nimž se prostor pro hraní během sekundy promění v útulný a harmonický domov.
Začleňovací okno řady 3.6 je nadále otevřené, proto zatím nevyšla žádná vývojová verze. Do hlavní řady se mezitím valí novinky, více se dozvíte dále.
Stabilní aktualizace: verze 3.2.24 vyšla 26. července, verze 3.4.7 30. července a 3.0.39 1. srpna. Kromě obvyklých oprav obsahuje 3.0.39 také velké množství backportovaných patchů pro zvýšení výkonu správy paměti.
Verze 3.2.25 se aktuálně reviduje.
Pokud někdo musí číst kód, aby zjistil, k čemu ten ovladač vlastně je, tak asi stojí tvůj popis za houby.
-- Dave Jones
Počet podtržítek před původní lokální proměnnou v rcu_dereference() byl výsledkem dohadování, jak hodně by název proměnné měl být komplikovaný, aby nehrozily kolize s názvy v nadřazeném scope. Devět počátečních podtržítek může vypadat přehnaně, nebo, jak jsi sám řekl, šíleně, ale na druhou stranu se ke mně nikdy nedostala žádná zmínka o kolizi.
V těchto případech udělám merge sám, ale po pravdě kontroluji svůj merge oproti mergi správce. A už se párkrát přihodilo, že se můj merge lišil a právě ten můj byl ten správný. Správce možná zná svůj kód lépe, ale já se zase vyznám ve slučování. Dělám jich spousty.
Na The Register vyšel článek o životě a smrti Andreho Hedricka, bývalého správce IDE v jádře, který zemřel dne 13. července. V dnešní době miliony lidí používají systémy DRM, které uzamykají knížky, písničky a hudbu – jako příklad poslouží Amazon Kindle, BBC iPlayer a Spotify – ale spotřebitelé se do tohoto smluvního vztahu dostávají vědomě. Nejde o výchozí tovární nastavení, jak tomu mohlo být. PC zůstává otevřené a nestalo se z něj jednoúčelové zařízení. Andre si nikdy nechtěl přiznat své zásluhy v této věci. Vzpomínky jsou také shromažďovány na tomto blogu.
V době psaní tohoto textu bylo do jádra přetaženo už 8200 neslučovacích změn; to jsou od předchozího týdne téměř 4000. Vypadá to, že přání, aby tento cyklus byl drobnější, se nenaplní. Přesto jdou věci relativně plynule, jen s nepatrným množstvím problémů.
Mezi změny viditelné uživatelům za poslední týden patří:
Změny viditelné jaderným vývojářům zahrnují:
Dokonce i příležitostný čtenář jaderného kódu nakonec narazí na použití makra ACCESS_ONCE(), aktuálně se jich v jádře nachází přes 200. Mnoho čtenářů se nebude zabývat tím, co to vlastně znamená, nedávná debata v mailing listu navíc ukázala, že to neví ani spousta hlavních vývojářů.
Funkčnost tohoto makra je popravdě dobře popsaná už jeho názvem; smyslem je zajistit, že hodnota předaná jako parametr je ve vygenerovaném kódu přečtena právě jednou. Člověk by se mohl divit, proč na tom záleží. Ve výsledku jde o to, že kompilátor C bude, pokud nic nebude naznačovat jinak, předpokládat, že se v daném paměťovém prostoru vyskytuje pouze jedno vlákno. Concurrency není věcí vestavěnou přímo do jazyka C, takže nástroje pro souběžný přístup musejí být postaveny nad tímto jazykem; ACCESS_ONCE() takovým mechanismem je.
Zvažme například tento kus kódu z kernel/mutex.c:
for (;;) {
struct task_struct *owner;
owner = ACCESS_ONCE(lock->owner);
if (owner && !mutex_spin_on_owner(lock, owner))
break;
/* ... */
Toto je drobný kód, který doufá, že se mu podaří rychle bez uspávání získat mutex, jakmile jej aktuální vlastník uvolní. V tomto for cyklu je toho ještě mnohem víc, ale toto nám pro ukázku stačí.
Představme si, že použitý kompilátor pochází od fanatických vývojářů, kteří se budou snažit vše optimalizovat, jak to jen půjde. To není jen naprostá iluze, jak Paul McKenney nedávno dosvědčil: Viděl jsem tu jiskru v jejich očích, když diskutovali o optimalizacích, o kterých byste nechtěli, aby vůbec věděly vaše děti! Takoví vývojáři mohou stvořit kompilátor, který vyvodí, že protože tento kód neupravuje lock->owner, není nutné hodnotu číst při každém průchodu cyklem. Kompilátor pak může kód takto přeorganizovat:
owner = ACCESS_ONCE(lock->owner);
for (;;) {
if (owner && !mutex_spin_on_owner(lock, owner))
break;
Kompilátoru ale uniká to, že lock->owner je mezitím měněno jiným vláknem. Výsledkem je pak něco, co si nepovšimne změn, což má neblahé následky. ACCESS_ONCE() této optimalizaci brání, a tak by měl kód fungovat dle očekávání.
Jak už se to stává, přístupy zrušené optimalizací nejsou jediným nebezpečím. Některé architektury procesorů (např. x86) nejsou obdařeny velkým množstvím registrů; na takových systémech se kompilátor musí opatrně rozhodovat, které hodnoty si uchová v registrech, aby měl kód co nejvyšší výkon. Některé hodnoty mohou být z registru vytlačeny a pak opětovně načteny. Pokud by se to stalo ve výše uvedeném kódu, výsledkem by mohlo být více přístupů k lock->owner. A to by mohl být problém; pokud by se hodnota lock->owner změnila uprostřed cyklu, kód, který by očekával, že se tak nestane, by mohl být závažně zmaten. ACCESS_ONCE() říká kompilátoru, aby to nedělal.
Implementace ACCESS_ONCE() v linux/compiler.h je docela přímočará:
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
Funguje to tak, že to dočasně převede danou proměnnou na typ volatile.
Vzhledem k rizikům, jaká optimalizující kompilátory představují, byste se mohli divit, proč se s něčím takovým nesetkáváme častěji. Odpovědí je, že souběžný přístup k datům by měl být chráněn zámky. Spinlocky a mutexy oba fungují jako optimalizační bariéry, což znamená, že brání vlivu optimalizací z jednoho vlákna na druhé. Věci jako ACCESS_ONCE() jsou nutné jen tam, kde se ke sdíleným datům přistupuje bez zámku (nebo explicitních bariér). Požadavky na škálovatelnost mají vliv na vytváření více takového kódu, ale většina jaderných vývojářů toto nepotřebuje řešit.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
auto?
auto označuje automatický typ, ne automatickou dedukci kompilátoru za pomoci binární křišťálové koule, jestli něco má být volatile nebo ne.
nonvolatile by se muselo předepisovat i u všech prototypů funkcí a definicí struktur.
--std=little.owl bylo asi dost nekompatibilní s jakýmkoli jiným C, takže asi ne :)
ono by hypotetické --std=little.owl bylo asi dost nekompatibilní s jakýmkoli jiným CJa se rad pobavim na svuj ucet, ale tady mi nejak nedochazi. Proc
--std=little.owl ?
A jiné jméno, než --std=little.owl mě prostě nenapadlo. Nic ve zlém.
volatile) Měl by taky za každou operací, která modifikuje paměť, provést memory barrier, aby se změna skutečně projevila na všech jádrech, protože jinak na to bude potřeba nějaká „další prasárna“? Tipuji, že jste nikdy nic takhle nízkoúrovňově nedělal, proto nemáte tušení, jak pomalá by taková aplikace byla.
). Memory barrier je třeba až když se přistupuje k MMIO, ale jen pokud procesor neumí vypnou cachování jinak, např. u x86 jsou na to MTRR a u x86_64 atributy stránek.
Normální SMTP procesorySMP nebo link! :-O
.
. Např. tady.
Jo a buď by měly být všechny takový proměnný, kde může zapisovat 2 a více vláken, definovaný jako volatileAni volatile vam moc nepomuze,to je jen hint pro kompilator aby to nezoptimalizoval, volatile nevklada memory barrier.
[/rejp]
…Concurrency není věcí vestavěnou přímo do jazyka C…od dubna 2011 a C verze C11 to už umí. Je otázka jak to umějí kompilátory a jak se s tím popasují při kompilaci kernelu.