Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.
Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.
Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.
Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po
… více »Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.
Byla vydána nová major verze 9.0 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Hodnota Bitcoinu, decentralizované kryptoměny klesla pod 70 000 dolarů (1,44 milionu korun).
Valve z důvodu nedostatku pamětí a úložišť přehodnocuje plán na vydání zařízení Steam Controller, Steam Machine a Steam Frame: „Cílem tedy stále zůstává vydat všechna tři nová zařízení v první polovině letošního roku, ale přesná data a ceny jsou dvě věci, na kterých usilovně pracujeme a jsme si dobře vědomi toho, jak rychle se v tomto ohledu může vše změnit. Takže ač dnes žádné zveřejnitelné údaje nemáme, hned jak plány finalizujeme, budeme Vás informovat.“
Do 20. února lze hlasovat pro wallpapery pro Ubuntu 26.04 s kódovým názvem Resolute Raccoon.
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.