abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:11 | Komunita

    Dlouholetý balíčkář KDE Jonathan Riddell končí. Jeho práci na KDE neon financovala firma Blue Systems, která ale končí (Clemens Tönnies, Jr., dědic jatek Tönnies Holding, ji už nebude sponzorovat), někteří vývojáři KDE se přesunuli k nově založené firmě Techpaladin. Pro Riddella se již nenašlo místo. Následovala debata o organizaci těchto firem, které zahraniční vývojáře nezaměstnávají, nýbrž najímají jako kontraktory (s příslušnými důsledky z pohledu pracovního práva).

    |🇵🇸 | Komentářů: 0
    dnes 02:33 | Komunita

    V Amsterdamu probíhá Blender Conference 2025. Videozáznamy přednášek lze zhlédnout na YouTube. V úvodní keynote Ton Roosendaal oznámil, že k 1. lednu 2026 skončí jako chairman a CEO Blender Foundation. Tyto role převezme současný COO Blender Foundation Francesco Siddi.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Zajímavý článek

    The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.

    ZCR | Komentářů: 0
    včera 17:33 | Nová verze

    Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Nová verze

    Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    včera 16:11 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Nová verze

    Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | IT novinky

    Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 11
    17.9. 16:22 | Nová verze

    Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (39%)
     (55%)
     (6%)
     (9%)
     (12%)
     (9%)
     (12%)
     (9%)
     (15%)
    Celkem 33 hlasů
     Komentářů: 5, poslední včera 22:30
    Rozcestník

    Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr

    19. 11. 2014 | Tadeáš Pelech | Jaderné noviny | 2639×

    Aktuální verze jádra: 3.18. Citáty týdne. Začleňovací okno verze 3.18 – závěr. Tři přednášky o vývojových nástrojích jádra.

    Obsah

    Aktuální verze jádra: 3.18-rc1

    link

    Aktuální vývojové jádro je 3.18-rc1, vydané 19. října (odkaz), trošku v předstihu oproti plánu. Linus řekl, že on bude nadmíru otevřený požadavkům na zařazení po rc1 od lidí, kteří „se trochu loudali.“ Linus k tomu řekl:

    Existuje také alespoň jeden požadavek na zařazení, který doufám dostanu co nejdříve a který mám stále v plánu zařadit. Myslím tím, že stále doufám, že bude konečně začleněn overlayfs.

    Nakonec si během tohoto začleňování našlo do hlavního repozitáře cestu 9 711 nezačleněných sad změn.

    Stabilní aktualizace: minulý týden nebyly vydány žádné stabilní aktualizace.

    Začleňovací okno 3.18 – závěr

    link

    Souhrn o začleňovacím okně z minulého týdne odvážně předpovídal, že začleňovací okno verze 3.18 by mohlo skončit dříve, než se očekávalo. A Linus opravdu vydal verzi 3.18-rc1 19. října, o týden dříve oproti původnímu plánu. Nakonec si před vydáním verze 3.18-rc1 našlo do Linusova úložiště cestu 9 711 nezačleněných sad změn; od té doby bylo přidáno dalších zhruba 200 (v době vzniku tohoto textu). Linus dal jasně najevo, že bude otevřenější než obvykle k přidáním funkcí po vydání rc1, vzhledem k tomu, že se někteří vývojáři mohli spoléhat na původní časový plán. Několika funkcím se to již podařilo.

    Mezi začleněné změny z pohledu uživatele od shrnutí z minulého týdne patří:

    • Blokové zařízení Rados získalo podporu požadavků na smazání.
    • Podpora nového hardwaru zahrnuje:
      • Vstup: Dotykové displeje Microchip AR1021 i2c.
      • Různé: Nabíječky baterií Maxim MAX77836, integrované obvody pro správu napájení (PMIC) Ricoh RN5T5618, PMIC Rockchip RK808, PMIC HiSilicon Hi6421, PMIC Qualcomm SPMI, hodiny PMIC Maxim 77802, kontroléry I2C Axxia a vysokorychlostní kontroléry I2C Hisilicon Hix5hd2.
      • Sledovací zařízení: Časovače sledovacích zařízení Cadence, časovače sledovacích zařízení Qualcomm MSM8960, APQ8064 a IPQ8064, časovače sledovacích zařízení Ricoh RN5T618, časovače sledovacích zařízení Dialog DA9063 a časovače sledovacích zařízení Amlogic Meson SoC.
    Mezi změny viditelné pro vývojáře jádra patří:
    • Pokračují práce na podpoře sestavení jádra kompilátorem LLVM. Zejména použití proměnné délky polí ve strukturách je nestandardní a není v LLVM podporováno, takže tato použití je třeba z kódu jádra odstranit. Přibylo makro, SHASH_DESC_ON_STACK() (deklarované v tomto potvrzení), které slouží k nahrazení takových polí.
    • Řada funkcí závislých na procesoru byla zařazena mezi zastaralé; patří mezi ně __get_cpu_var() (místo ní použijte this_cpu_ptr()) a __this_cpu_ptr() (nahrazena raw_cpu_ptr()).
    • Pro rámec pro komunikační mechanismy hardwarového interprocesoru je k dispozici nová „poštovní schránka“. Pár dalších informací najdete v souboru Documentation/mailbox.txt.

    V tomto okamžiku začíná být důležitý stabilizační proces. Pokud bude původní plán dodržen, finální verzi jádra 3.18 lze očekávat někdy kolem začátku prosince.

    Tři přednášky o vývojových nástrojích jádra

    link

    Konference linuxových instalatérů se snaží soustředit na diskuse nad prezentacemi. Mikrokonference o vývojových nástrojích se ale pustila proti proudu, protože se skládala převážně z řady prezentací o zajímavém zavádění nástrojů do jádra. Některé nástroje jsou užitečné dříve než ostatní; zde se zaměříme na několik nástrojů, které mohou pomoci vývojářům již nyní.

    Použití Coccinelle pro backporty

    Projekt backportů jádra se zaměřuje na zpřístupnění ovladačů z nejnovějších verzí jádra do starších stabilních vydání jádra. Myšlenkou je poskytovat nejlepší hardwarovou podporu na platformě, která je jako celek poměrně stabilní a bez chyb. Není překvapením, že distributoři korporátních verzí Linuxu mají o tuto práci zájem, ale nejsou sami.

    Projekt má v současné době tři hlavní vývojáře, kteří pracují na backportu asi 800 ovladačů starších jader. Dovedete si představit, že je to docela dost práce; Luis Rodriguez mluvil o tom, jak se dá nástroj Coccinelle použít k řešení problémů v rámci relativně malé skupiny vývojářů. (Seznámení s nástrojem Coccinelle a jeho schopnostmi viz tento článek).

    Je zřejmé, že k rozšíření na zhruba 800 backportovaných ovladačů vyžaduje poměrně velkou míru kompromisů. Testování všech těchto ovladačů je jednou z prvních věcí; vývojáři nemají na testování dostatek času ani hardwaru. Takže můžou jen slíbit, že zkompilované backportované verze ovladačů budou fungovat. Radiče jsou backportované až ke stabilnímu jádru 3.0; skupina dříve nabízela backporty až do řady 2.6, ale zájem o ně téměř vymizel. Backportování mnoha typů ovladačů ani není v plánu; například subsystém DRM je komplexní a není dostatek zájmu na straně distributora, který by práce na backportu podnítil. Takže většina backportovaných ovladačů se zaměřuje na subsystémech jako Ethernet, bezdrátových připojení, Bluetooth, NFS, Video4Linux apod.

    Luis řekl, že projekt backportování slouží jako motivace vývojářům, aby se jejich kód dostal do hlavní verze. Jakmile je ovladač v hlavní větvi jádra, backportování je k dispozici zdarma.

    Backportování je trochu neobvyklé použití nástroje Coccinelle, který se běžně používá k vývoji jádra směrem vpřed. Většina vývojářů ji občas používá pro změny ve vymezených částech jádra směrem vpřed. Projekt backportování ho naopak používá k portování ovladačů v seznamu do starších verzí.

    Backportování se podle Luise obvykle provádí rozprostíráním #ifdef po celém kódu. To je „backportování na prášky“; vede k opravám, které jsou rozsáhlé a náročné na revize. A stejné únavnou práci je nutné udělat pro každý ovladač na seznamu. Musí existovat lepší způsob.

    Prvním krokem tímto směrem je přesunout co nejvíce kódu spojeného s backportování do souborů hlaviček. Pokud například dojde ke změně funkčního prototypu, příslušná hlavička bude obsahovat novou verzi funkce (pod jiným názvem), která funguje se starším kódem. Různá místa volání lze upravit pro použití nové funkce, bez řádků #ifdef v samotném kódu. Podle Lusie může jednodušší změny provést Coccinelle zcela bez problémů.

    A co náročnější změny? Jako příklad uvedl Luis obsluhu podprocesů přerušení; jak se dá backportovat kód využívající tento druh obsluhy do jader, která takovou funkcionalitu neobsahují? Řešením v tomto případě bylo backportovat podprocesy obsluhy v samostatném modulu a přidat funkci compat_request_threaded_irq() pro backportované ovladače. Nejtěžší na tom ale bylo zjistit, kam umístit ukazatel na potřebná soukromá data. Vznikla složitá sémantická oprava nástroje Coccinelle, která zjišťuje, jakou datovou strukturu každý řadič používá k reprezentaci svého zařízení, potom na ni přidá nový ukazatel. Takovým způsobem je možné provést backport v automatizovaném režimu pro všechny ovladače.

    Louis vysvětlil, že díky použití Coccinelle k backportování je celá práce jednodušší a konzistentnější; s tímto nástrojem je tým schopen backportovat mnohem více ovladačů. Díky vytvoření jednoho pravidla Coccinelle pro každou relevantní verzi jádra může tým držet krok se změnami jádra a získat pro všechny praktické účely automatické backporty pro širokou škálu ovladačů. Podle Luise je opodstatněné, aby byly sémantické opravy pro backportování součástí hlavní verze jádra – nikdo však takovou opravu ovšem ještě nenavrhl.

    Pozor na hrobaře

    Vývojáři jádra se snaží minimalizovat využití konstrukcí #ifdef, ale ve zdrojovém stromu jádra jich je stále obrovské množství. Zajímavé podle Valentina Rotberga je, že mnoho z těchto bloků nedává ve skutečnosti smysl. V mnoha případech nelze možnosti konfigurace jádra zkombinovat tak, aby šlo jádro úspěšně sestavit; daný blok je tedy mrtvý kód. V jiných případech půjde kód zkompilovat ve všech případech; Valentin proto takový nazývá kód „nemrtvý“.

    Mrtvý a nemrtvý kód může vzniknout z různých důvodů. Jednou z příčin mohou být překlepy v názvech symbolů CONFIG_; neznámý identifikátor je jednoduše vyhodnocen jako NEPRAVDA, místo aby byla vyvolána chyba. Někdy nejsou symboly konfigurace skutečně nezávislé; představte si CONFIG_BAR, který lze nastavit teprve po nastavení CONFIG_FOO. Pokud vidíte kód jako:

        #ifdef CONFIG_BAR
          /* ... */
        #ifndef CONFIG_FOO
          /* tento kód je mrtvý */
        #endif
        #endif

    víte, že blok kódu uprostřed nebude nikdy přeložen. Tímto druhem logické chyby je způsobeno asi 25 % všech mrtvých/nemrtvých bloků kódu v jádru. Valentin nalezl celkem více než 1 000 mrtvých nebo nemrtvý bloků ve verzi jádra 2.6.29; tento počet se snížil na zhruba 600 ve verzi 3.17 – což je zlepšení, ale stále příliš mnoho. Tyto bloky #ifdef jsou záměrně podmíněné; mrtvé nebo nemrtvé bloky jdou proti tomuto záměru. Někdy také skrývají chyby; Valentin našel chybu nevracení paměti způsobenou chybou v CONFIG_HOTPLUG_CPU.

    Řešením tohoto problému je použít Valetinův nástroj undertaker-checkpatch. Tento nástroj vyhodnotí opravu, poznamená změny do bloku #ifdef a označí veškerý mrtvý nebo nemrtvý kód, který nalezne. Opravy kontrolované tímto způsobem by neměly do jádra přidávat další problémy související s #ifdef. Undertaker je k dispozici na této webové stránce.

    Editor LWN se zeptal, proč nebyla tato práce, která vypadá užitečně, jednoduše integrovaná do checkpatch.pl a začleněna do hlavního stromu. Zdá se, že existuje několik problémů spojených s touto myšlenkou, počínaje tím, undertaker-checkpatch je napsaný v C++. Navíc pracuje několik minut, což nemusí vývojářům v rámci běžného procesu vyhovovat. Valentin upozornil, že přece jen jde o výzkumný projekt; vývojáři nemají dost času a motivace změnit ho na produkční kód.

    Tudíž se zdá, že undertaker-checkpatch by mohl potkat osud mnoha jiných akademických projektů. Ale existuje ještě jeden způsob, jak tento nástroj nadále používat v komunitě vývojářů jádra: integrovat ho do reaktivních testování systému Feng-kuang Wua. Pak vývojáři dostanou zdvořilý e-mail, když do jádra přidají problémy spojené s #ifdef. To je Valentinem doporučený způsob, jak by mohl být tento nástroj užitečný komunitě vývojářů jádra.

    Vampyr

    Projekt, který úzce souvisí s nástrojem Undertaker, je Vampyr, na němž pracuje na stejná skupina vývojářů. Stefan Hengelein popsal základní problém, který se snaží Vampyr řešit: skutečnost, že většina oprav jádra se testuje pouze na jedné nebo dvou konfiguracích jádra. Ale skutečný konfigurační prostor pro jádro je obrovský, a často není těžké najít kombinace konfiguračních parametrů, které nefungují tak, jak bylo zamýšleno.

    Stefan řekl, že proto je opravy nutné kontrolovat se všemi příslušnými možnostmi konfigurace. To je těžko proveditelné a vyžaduje spoustu času na přemýšlení. Aktuální jádra mají téměř 14 000 možností konfigurace; je otázkou, zda je k dispozici dostatek lidí na kontrolu kódu se všemi možnými kombinacemi konfigurace.

    Alternativou je nástroj Vampyr, jehož cílem je vytvořit „maximalizovanou sadu“ konfigurací jádra pro danou opravu. Prohledává konfigurační prostor a nachází kombinace, které muhou způsobit sestavení odlišného kódu. Výsledkem je obvykle několik konfigurací, z nichž každá slouží k testování sestavení.

    Pomocí nástroje Vampyr se vývojářům podařilo objevit mnoho varování a jasných chyb. Kód x86 generuje o 15 % více varování při použití nástroje Vampyr, zatímco MIPS se zvyšuje o 58 %. S architekturou ARM využití nástroje Vampyr téměř zdvojnásobilo počet varování a vyústilo v identifikaci 91 potvrzených chyb. Stefan řekl, že se situace zlepšila v novějších jádrech, zejména v kódu x86; ostatní architektury se tolik nezlepšila.

    Kód je k dispozici v rámci licence GPL v3; je k dispozici na webu nástroje Undertaker.

    [Editor LWN by chtěl poděkovat nadaci Linux Foundation za podporu jeho cesty na konferenci linuxových instalatérů.]

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    20.11.2014 09:00 pet
    Rozbalit Rozbalit vše Re: Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr
    >> [Editor LWN by chtěl poděkovat nadaci Linux Foundation za podporu jeho cesty na konferenci linuxových instalatérů.]

    A já bych chtěl poděkovat autorovi překladů za jeho namáhavou práci díky níž se i já (a nejen já) mohu seznamovat s tím, co se je nového ve vývoji kernelu. [Díky.]
    25.11.2014 15:42 koudy
    Rozbalit Rozbalit vše Re: Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr
    +1
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.