Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Aktuální verze jádra 2.6 je i nadále 2.6.18; do hlavního repozitáře stále proudí patche pro připravovanou verzi 2.6.19-rc1.
Aktuální verze -mm stromu je 2.6.18-mm3. Mezi nedávné změny patří patch, který odstraňuje spoustu zbytečných varování kompilátoru, podpora swapového souboru pro softwarové uspání a subsystém kevent.
Aktuální předverze řady 2.4 je 2.4.34-pre4, vydaná 2. října. Tentokrát bylo začleněno jen několik oprav; vypadá to, že se blíží finální stabilizační fáze 2.4.34.
Vyhrazuji si právo se jednou pokusit žalovat lidi, kteří můj kód cpou do Tivo. Třeba prohraju, ale toho práva se nevzdávám.
-- Alan Cox
Mexičani mají chupacabru, my máme Al Vira. Když ho zaslechnete řvát, _modlete se_, že se chystá rozcupovat kód někoho jiného. Utíkat nemá cenu.
Vypadá to, že celé tohle jaderné snažení je nekonečné spiknutí proti chudince mému malému Vaio.
Příval patchů do hlavního repozitáře pokračuje vysokým tempem; od shrnutí z minulého týdne bylo začleněno dalších několik tisíc patchů. Následuje seznam toho nejdůležitějšího - nejprve uživatelské věci:
Změny viditelné pro vývojáře jádra:
Nová funkce pro alokaci kopie bloku paměti:
void *kmemdup(const void *src, size_t len, gfp_t gfp);
Na mnoha mistech byly sekvence alokuj-pak-kopíruj upraveny tak, aby používaly kmemdup().
V tuto chvíli je ještě možné začleňovat další patche, takže se do 2.6.19 mohou dostat další významné změny.
Za normálních okolností by vydání 2.6.19-rc1 signalizovalo zpomalení vývoje a hledání chyb. Tentokrát to však bude možná vypadat jinak, protože mezi -rc1 a -rc2 dojde pravděpodobně k začlenění velké (změněno téměř 1100 souborů) změny API. Důvody jsou následující: patch, který zasáhne tolik souborů, se zcela jistě srazí i mnoha změnami, které teď proudí do hlavního stromu. Pozdržení patche do doby, až současný příliv utichne, by mělo všem zjednodušit práci.
Takže o co jde? Zpracovávače přerušení v současné době vypadají takto:
irqreturn_t handler(int irq, void *data, struct pt_regs *regs);
Struktura regs obsahuje stav registrů procesoru v okamžiku přerušení. Tento stav je předáván každému zpracovávači přerušení, ale skoro nikdy se nepoužívá; z pohledu většiny zpracovávačů přerušení je stav registrů před přerušením jen hrstkou náhodných bitů. Předávání ukazatele však má podle Davida Howellse svou režii:
Ukazatel registrů se používá jen na několika místech, ale jeho předávání nás může stát jak místo ve stacku, tak nadbytečný kód. Na architektuře FRV má odstranění parametru regs ze všech genirq funkcí za následek zrychlení o 20 procent (tj. od konce timer_interrupt() do konce do_IRQ()).
David tedy sestavil patch, který ze zpracovávačů přerušení parametr regs odstraňuje. Pokud nějaký kód registry skutečně potřebuje - zjevně jde pouze o zpracovávač přerušení časovače - může ukazatel získat zavoláním nové funkce get_irq_regs(). A protože tento krok vyžaduje opravu každého zpracovávače přerušení v systému - a těch je v hlavním jádře hodně - jde o velký patch, který mění hodně souborů.
Patch se právě objevil, takže podle normálních pravidel by už bylo trochu pozdě pro začlenění do 2.6.19. Během této verze by tedy seděl v -mm a do jádra by šel v 2.6.20. Ale Andrew Morton k tomu řekl:
Myslím, že je to dobrá změna. Ale nechce se mi takového bumbrlíčka spravovat dva měsíce mimo strom! Pokud to chceme, měli bychom to tam prostě vrazit a zatnout zuby.
Nikdo proti této změně zjevně neprotestuje, i když Linus vzpomenul krutý úděl lidí, kteří spravují ovladače mimo hlavní jádro. Všechno ukazuje na brzké začlenění, které bude možná doprovázet speciální definovaný symbol, aby mohli správci nezačleněného kódu napsat kód, který by fungoval s oběma prototypy.
Odjinud: Strukturu file_operations lze nalézt v útrobách snad každého subsystému, který provádí I/O. Zatímco ovladače znakových zařízení vytvářejí struktury file_operations přímo, většina ostatních částí systému (souborové systémy, síťové protokoly a ovladače, ovladače blokových zařízení) je schovává na vyšší úrovni. Dva ze členů struktury jsou:
ssize_t (*aio_read) (struct kiocb *iocb, char __user *buf, size_t len, loff_t pos); ssize_t (*aio_write) (struct kiocb *iocb, const char __user *buf, size_t len, loff_t pos);
Tyto metody implementují asynchronní čtení a zápisy - operace, které mohou být dokončeny po té, co se původní volání vrátí do uživatelského prostředí. Dlouhodobě známým nedostatkem implementace asynchronního I/O v Linuxu je absence vektorovaných operací; každé AIO volání může pracovat jen s jediným bufferem. Jádro 2.6.19 tento nedostatek smaže za cenu změny dvou výšeuvedených prototypů:
ssize_t (*aio_read) (struct kiocb *iocb, const struct iovec *iov, unsigned long niov, loff_t pos); ssize_t (*aio_write) (struct kiocb *iocb, const struct iovec *iov, unsigned long niov, loff_t pos);
Jediný buffer byl nahrazen polem struktur iovec:
struct iovec { void __user *iov_base; __kernel_size_t iov_len; };
Jednobufferová volání jsou teď obalena jedinou strukturou iovec a předána novým, vektorizovaným verzím AIO operací. Všechen kód, který poskytuje aio_read() a aio_write(), bude muset být aktualizován s ohledem na nové API - a na možnost, že se po něm možná bude chtít provádění vektorovaných operací.
Změny jdou však ještě dál, protože byly odstraněny file_operations metody readv() a writev(). Příslušná systémová volání jsou teď implementována voláním aio_read() a aio_write(). Převedení starých metod readv() a writev() není příliš obtížné, protože není nutné, aby byly aio_read() a aio_write() asynchronní (vlastně jim bude v tomto případě předáno "synchronní KIOCB", což značí, že je operaci nutné provést synchronně). Ve většině případů jde prostě o přebrání nového prototypu a v případě potřeby také nalezení ukazatele struct file v iocb->ki_filp.
(Vizte článek z minulého února, kde jsou o této změně podrobnější informace.)
"Wireless extensions" [rozšíření pro bezdrátové sítě] je API založené na ioctl(), které uživatelskému prostoru umožňuje ovládat parametry specifické pro bezdrátová síťová rozhraní - ESSID, šifrovací hesla, kanály atd. API dlouho spravoval Jean Tourrilhes; posledních několik verzí jádra mělo verzi 20. V tuto chvíli už byla do pre-2.6.19 začleněna verze 21, ale přinejmenším některé části možná zase půjdou pryč.
Potíž je v tom, že verze 21 obsahuje tak velké změny, že by s ní již starší verze nástrojů nefungovaly. Konkrétně jde o způsob formátování ESSID předávaného jádru. Konfigurace, které se mohly k určité síti připojit s verzí 20, to už s verzí 21 nezvládnou. Je možné to obejít přidáním mezery do řetězce ESSID, ale o tom nebude většina uživatelů vědět, a i kdyby, tak na to přijdou až po upgradu jádra, když zjistí, že už se nemohou připojit k síti.
Od chvíle, kdy se o tomto problému začalo mluvit, dali mnozí vývojáři (včetně (Linuse) najevo, že je taková změna API nepřijatelná. Pro změnu samozřejmě existují pádné důvody - způsob, jakým se s těmito řetězci v protokolech zachází, se během času změnil. Ale správným řešením by bylo přidat novou ioctl(), která by se o nový formát řetězce postarala; starší verze by byla podporována navždy. Kdyby to bylo provedeno takto, změna formátu by nevadila.
To se zdá jako dobré řešení, ale má to malý háček. Jean už tento problém patrně delší dobu předvídal. Aby minimalizoval škody, vydával už asi půl roku Wireless Tools [nástroje], které formátu verze 21 rozumí. Dost distribucí už také tyto nástroje přebralo a zařadilo mezi své balíčky; jde například o Slackware 11 a Mandriva 2007. Pokud tyto nástroje přijdou do styku s Wireless Extensions verze vyšší než 20, budou očekávat nový formát ESSID; kdyby tedy byly změny ve verzi 21 odstraněny, přestanou tyto nástroje fungovat.
Takže Wireless Extensions 21 způsobí na nějakých systémech problémy bez ohledu na to, jestli bude změna formátování ESSID ponechána nebo ne. Jediným způsobem, jak v tuto chvíli předejít chybám na nasazených systémech, je podržet Wireless Extensions na verzi 20. Bezdrátová rozšíření už asi nebudou dále rozšiřována.
Pokud to dopadne takhle, bude to krátkodobě znamenat určité nepříjemnosti, protože se do API nebudou moci dostat potřebná vylepšení. Dlouhodobě je však stejně v plánu Wireless Extensions nahradit; proto je vyvíjeno nové netlink API nazývané nl80211. Toto API je však úzce svázáno se stackem Devicescape 802.11, kterému však cesta k stavu vhodnému pro začlenění trvá o dost déle, než se očekávalo. Linuxové bezdrátové API tak možná bude nějakou dobu na mrtvém bodě.
David Miller vystavil prezentace a fotky z konference linuxových vývojářů síťování. Pokud vás zajímají hardcore podrobnosti, najdete jich tam spoustu.
Následující obsah je © KernelTrap
28. zář, originál
Nedávná diskuze na LKML se věnovala aktuálnímu stavu uspávání a probouzení [suspend a resume] v linuxovém jádru. Nigel Cunningham reagoval na patch pro uswsusp: Pánové! Proč nechcete pochopit, že všechny tyhle pokusy o uswsusp jsou čiré bláznoství? A pokračoval zopakováním svého přesvědčení, že důležité otázky uspávání mají být řešeny v jádře, a přesun do uživatelského prostoru ničemu nepomůže. Andrew Morton se připojil: Navrhuji trápit mozkové závity prací na tom, aby byla současná implementace uspávání hezky funkční, stabilní a rychlá. V tuto chvíli se kód suspend-to-disk dlouze zabývá podivnými-ale-asi-zbytečnými věcmi, místo aby zapisoval paměť na disk. Nemám tušení, co to všechen ten čas dělá, ale vsadil bych se, že to nikomu není moc k užitku ;-)
Dále se diskutovalo o tom, proč je tedy uspávání tak pomalé, a jak vyřešit základní problémy, které brání spolehlivému a stabilnímu fungování. Nigel hlásil: Jedním z největších problémů, se kterými se pravidelně potýkám, jsou chyby ovladačů. Ačkoliv základní kód funguje, mnoho ovladačů pořád není schopných se nechat úspěšně uspat a probudit. Vývojáři se shodli, že tyto chyby by měly být sledovány prostřednictvím bugzilly a někdo by se jimi měl zabývat. Andrew Morton odpověděl: Vím o tom... brzy se mi snad podaří tomu věnovat více času. Prozatím se prosím postarejte o to, aby ty problémy byly v bugzille - důležité je vědět, kdo je nahlásil.
3. říj, originál
Jeff Garzik podotkl, že novější verze GCC jsou víc a víc upovídané: Množství varování při kompilaci jádra v poslední době stouplo natolik, že se v nich ztrácejí chyby a i jinak znepříjemňují život. Založil nový strom "gccbug", ve kterém začal utišovat falešná varování (po ověření, že jsou skutečně falešná). Audit už odhalil několik menších chyb, což podporuje moje tvrzení, že přílišné množství varování ukrývá chyby. Danial Walker připomněl dřívější zprávu o vytvoření makra, které se o plané poplachy stará, a shrnul tehdejší diskuzi: Nejde o to, že by se kódu po utišení varování nedostalo řádné kontroly. Ale budoucí změny by mohly způsobit problémy, které by byly také skryty. Nemyslím si však, že by to byl velký nedostatek, zvláště když je možné při konfiguraci makro vypnout.
Andrew Mortonovi se makro líbilo: Je pravda, že ta falešná varování jsou spíše na škodu, a opravdové problémy mohou být přehlédnuty. Takže má určitě cenu se pokoušet nalézt způsob, jak vývojářům a testerům ukázat ta skutečně důležitá varování. Nevýhodou je, že to trochu zaneřádí kód a vznikne menší riziko skrytí pravých "use-uninitialised" chyb. Ale myslím, že přednosti převažují nad nedostatky.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: