Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Aktuální vývojová verze jádra je 3.7-rc1 vydaná 14. října. Přehled posledních věcí, co se dostaly do verze 3.7, najdete níže.
Stabilní aktualizace: verze 3.0.46, 3.4.14, 3.5.7 a 3.6.2 vyšly 12. října. 3.5.7 je poslední verzí v řadě 3.7.
Evidentně není dobrý nápad sestavovat a posílat patch, zatímco jste na setkání výboru pro standardizaci C++, kde se lidé hádají o asynchronních futures...
Věřím, že odpovědí je to, že nedávné zranitelnosti nás dohnaly až ke zavržení myšlenky, že se čemukoliv v uživatelském prostoru dá věřit, a uchýlení se zpět do jádra. Tvrzení, že je jádro bezpečnější, protože jsme nezačlenili spoustu humusu, je skutečně kacířskou myšlenkou.
Dlouholetá zkušenost se systémy souborů ukazují, že jsou jako dobrá vína; trvá, než dospějí. Ať už se bavíme od ext2/3/4, btrfs, Sun ZFS, Digital ADVFS, IBM JFS nebo GPFS atd. a nesejde na tom, jestli se bavíme o open source nebo o tradičních firemních vývojových procesech, trvá alespoň 3-5 let a 50-200 člověkoroků, než se povede od píky stvořit souborový systém vhodný k produkčnímu nasazení.
-- Ted Ts'o
Chystal jsem patch, který by toto opravil, a skončilo to tak, že jsem nenašel problém, který by opravoval – což odpovídá tomu, že takový problém nebyl nikdy nahlášen.
-- Hugh Dickins
Požadavkem na modul FIPS 140-2 je to, že je celý modul zakázán, pokud self test nebo test integrity libovolné jeho komponenty selže.
Máme dvě řešení, která byla v souvislosti se zakázáním modulu zvažována: udržování globálního stavu crypto API, které zajistí, že nebude reagovat v případě selhání testů. Druhým řešením je prostě vypnout celé jádro. První varianta nakonec také povede ke selhání jádra, protože mnoho částí jádra závisí na crypto API, proto byla zvolena varianta druhá.
-- Stephan Mueller; nesnažte se načítat nepodepsaný modul v režimu FIPS
Jak dlouho by měl člověk čekat, když dostane mail s evidentně nesprávnými tvrzeními o jaderném kódu Linuxu, než pošle zpátky odpověď „to si snad děláš srandu“.
Měl bych prostě doufat, že si odesilatel uvědomí svou chybu a dát mu N hodin, aby svá tvrzení odvolal, opravil svůj šílený patch a poslal ho znovu, tedy dát mu určitou ochrannou lhůtu? Pokud ano, tak jaká je správná hodnota N?
Nebo je férové se urvat ze řetězu a nechat skrze svou klávesnici projevit své torvaldsovské démony s tím, že to tomu druhému třeba prospěje a poučí se ze svých chyb?
Al Viro pilně pracoval na přepisu vytváření jaderných vláken, aby byl kód čistší a méně závislý na architektuře. Současně zaslal dlouhý dokument s popisem, jak nyní vytváření jaderných vláken funguje a co na tom mění. Je to zajímavé čtení pro ty, které zajímá, jak jedna z důležitých součástí jádra pracuje.
Linus před uzavřením začleňovacího okna přetáhl do řady 3.7 celkem 10 409 neslučovacích změn. To dělá z jádra 3.7 jedno z nejaktivnějších vývojových cyklů v poslední době; přibližuje se jen jádro 3.2 s 10 214 změnami. Děje se toho evidentně hodně.
Zajímavostí je nedůvěra, jakou Linus vyjádřil ohledně některých změn při psaní oznámení verze 3.7-rc1. Například taková diskuze o patchi pro 64bitový ARM utichla už před dlouhou dobou, Linus se ale ozval se svým názorem ještě teď:
Tak schválně, kolik let lidem od armu potrvá, než udělají to, co nakonec každá 64bitová architektura: sloučí se s 32bitovým kódem. Jako obvykle lidé tvrdili, že je spousta důvodů, proč je to v *tomto* případě jinak a jako obvykle se nakonec ukáže, že je to blbost, a za pár let uzříme velké patche, které to budou zase všechno slučovat. Možná to ale v tomto případě *bylo* opravdu jinak. Hehe.
Svou nelibost vyjádřil i k rozdělování hlavičkových souborů API pro uživatelský prostor – enormní sadě patchů, která byla do 3.7 začleněna jen částečně. Pročišťování hlavičkových souborů je prý až moc nepříjemné na to, aby to výsledky práce opodstatnily, takže už další nebude brát v potaz.
Změny začleněné od minulého týdne viditelné uživatelům zahrnují:
Změny viditelné vývojářům jádra zahrnují:
Nyní probíhá stabilizace všech změn. Pokud věci budou probíhat jako obvykle, tak se konečné verze 3.7 dočkáme někdy začátkem prosince.
Mimo začlenění serverové části TCP Fast Open bylo jednou z mála změn v API pro uživatelský prostor přidání nové operace EPOLL_CTL_DISABLE pro systémové volání epoll_ctl(). Na tuto operaci se dá dívat jako na pěknou ukázku mnohdy neočekávaných komplikací při vývoji aplikací s vlákny. Přidání EPOLL_CTL_DISABLE současně demonstruje obvyklé problémy při návrhu jaderných API pro uživatelský prostor (aby nebyly pochybnosti: EPOLL_CTL_DISABLE je opravou dřívějšího návrhu, nikoliv podstatou problému).
Autor patche Paton Lewis není běžným jaderným hackerem. Je to vývojář, kterého něco v uživatelském prostoru trápí, a změna v jádře je pravděpodobně jediným lékem. V popisu první podoby patche Paton shrnul problém takto:
Aktuálně není možné spolehlivě mazat položky pro epoll při používání stejné sady z více vláken. Po zavolání epoll_ctl s EPOLL_CTL_DEL může jiné vlákno stále vykonávat práci spojenou s událostí na této položce (po volání epoll_wait). Mazající vlákno tedy nemůže vědět, kdy je bezpečné smazat prostředky spojené s touto položkou, protože tyto prostředky může používat jiné vlákno.
Mazající vlákno by mohlo po zavolání epoll_ctl s EPOLL_CTL_DEL čekat po nějakou dobu než provede uvolnění paměti, ale to je neefektivní a mohlo by vést k odstranění prostředlů, než jiné vlákno svou práci dokončí.
Skutečnost, že si jádro ukládá interní stav, je zdrojem komplikací pro vícevlákenné aplikace. Zdrojem komplikací je to, že aplikace mohou samy chtít si udržovat informace o popisovačích, aby nedocházelo k tzv. descriptor starvation, kdy velké I/O na jednom popisovači vede k tomu, že se aplikace nedostává k obsluze ostatních popisovačů. Udržování údajů v jádře i v aplikaci pak může vést k race conditions, kdy se různá vlákna snaží aktualizovat stavové informace na obou místech. Nejdůležitější informací je pak samostná „existence“.
Představme si situaci, kdy vlákno zjistí, že už nepotřebuje sledovat nějaký popisovač. Vlákno by nejprve zkontrolovalo, zda není v údajích v aplikaci popisovač označen jako takový, kde ještě čekají nějaká data k přečtění, a pokud nejsou, tak by popisovač odstranilo z dat v uživatelském prostoru a také v jádře pomocí epoll_ctl(EPOLL_CTL_DEL). To ale nemusí dopadnout dobře, pokud budeme mít následující situaci s popisovačem číslo 9:
Vlákno 1 | Vlákno 2 |
---|---|
Zjišťuje z údajů v aplikaci, že na popisovači 9 není co číst. | |
Volá epoll_wait; na popisovači 9 jsou prý nějaká data. | |
Označuje v rámci aplikace popisovač 9 jako popisovač, kde čekají nějaká data, takže je možné provést I/O. | |
Odstraňuje popisovač 9 údajů v aplikaci. | |
Odstraňuje popisovač 9 ze sady pro epoll pomocí epoll_ctl(EPOLL_CTL_DEL). |
V takovéto situaci by došlo ke ztrátě nějakých dat. V jiných situacích by mohlo dokonce dojít k poškození dat v aplikaci nebo k jejímu pádu.
Až na ochranu volání epoll_wait() globálním mutexem, což zlikviduje vícevlákennost aplikace, zde neexistuje žádné řešení, které by podobným situacím zabránilo.
Paton problém řeší tak, že rozšiřuje epoll API o novou operaci, která atomicky zabrání ostatním vláknům v přijímání dalších událostí o tomto popisovači a současně volajícímu kódu sdělí, zda nebyl popisovač v „nedávné“ době ohlášen jako aktivní jinému vláknu.
Při přidávání nebo úpravě popisovače v seznamu sledovaných popisovačů aplikace předává údaj o tom, jaké události ji zajímají. Může jít mj. o EPOLLIN a EPOLLOUT, pokud aplikaci zajímá, kdy bude možné na popisovači číst nebo zapisovat. Kromě toho se používá ještě několik „provozních“ příznaků. Jedním takovým je EPOLLONESHOT. S ním je popisovač vrácen voláním epoll_wait() pouze jednou, pak sice není ze seznamu vyřazen, ale je vypnut. Pokud má aplikace zájem jej opět zapnout, musí tak učinit pomocí epoll_ctl(EPOLL_CTL_MOD).
Implementace EPOLLONESHOT závisí na jednoduchém triku. Pokud je popisovač vrácen v epoll_wait(), tak jádro odstraní všechny příznaky označující sledované události u tohoto popisovače.
Nyní se tedy můžeme dostat k Patonovu rozšíření tohoto API, operaci epoll_ctl(EPOLL_CTL_DISABLE), která vícevlákenným aplikacím umožní vyhnout se výše popsaným race conditions. Pro úspěšné použití rozšíření je nutné následující:
Nová operace epoll se používá takto:
epoll_ctl(epfd, EPOLL_CTL_DISABLE, fd, NULL);
kde epfd je popisovač instance epoll. fd je pak popisovač, který chceme vypnout. Sémantika této operace řeší dvě situace:
První verze Patonova patche se nedočkala bouřlivých reakcí. Jediná zásadní reakce přišla od Christofa Meerwalda; v reakci na ni Paton vytvořil druhou verzi patche. Tato verze se už nedočkala žádných reakcí a byla začleněna do 3.7-rc1.
Ačkoliv EPOLL_CTL_DISABLE problém řeší, nejde o řešení, které by se používalo jednoduše nebo bylo intuitivní. Hlavním důvodem je to, že EPOLL_CTL_DISABLE je dodatečným hackem do epoll API, které splňuje Linusem často opakovaný požadavek, že existující aplikace nesmějí být změnami v jaderném ABI porouchány. Za těchto podmínek může být tento patch nejlepším řešením problému. Je ale téměř jisté, že kdyby se s tímto počítalo hned při návrhu epoll API, našlo by se řešení lepší.
Na závěr je vhodné dodat, že funkce EPOLL_CTL_DISABLE to ještě nemá jisté. Než vyjde verze 3.7, může být ještě nahrazena něčím jiným, kdyby náhodou někdo měl lepší nápad.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
MD RAID nyní podporuje operace TRIM.Hurá! A to jsem před časem někde četl, že je prý složité to udělat a nestojí to za to.