Portál AbcLinuxu, 6. května 2025 11:51
Stav vydání jádra. Opouštění starých architektur a překladačů.
Kernel release status. Jonathan Corbet. 28. února 2018
Současné vývojové jádro je 4.16-rc3, vydané 25. února. Linus ho oznámil se slovy: „rc3 je větší než rc2, ale jak padlo minulý týden, to se dalo čekat – rc2 byla opravdu maličká. Lidé už začali nacházet, co je potřeba opravit, ale nic nevyniká, že by to bylo vysloveně hrozné.“
Současný seznam regresí v cyklu 4.16 čítá osm známých problémů.
Stabilní aktualizace: 4.4.117, 4.9.83, 4.14.21 a 4.15.5 byly vydány 23. února. Následovaly je 25. února aktualizace 4.15.6, 4.14.22, 4.9.84, 4.4.118 a 3.18.96 a poté 28. února aktualizace 4.15.7, 4.14.23, 4.9.85, 4.4.119 a 3.18.97. Všechny tyto aktualizace byly poměrně velké, např. v aktualizacích vydání 4.14 se nasčítalo až 385 změn.
Shedding old architectures and compilers in the kernel. Jonathan Corbet. 26. února 2018
Proces vývoje jádra se zaměřuje spíše na přidávání: každé nové vydání podporuje více ovladačů, více funkcí a často nové architektury procesorů. Výsledkem je, že skoro každé nové vydání jádra je větší než to předcházející. Ale občas je nutné trochu zeštíhlit i jádro. Nadcházející vydání jádra pravděpodobně potká odstranění podpory řady neoblíbených architektur a – nezávisle na tom – také odstranění podpory některých starších překladačů.
Architektura Meta byla přidána do jádra 3.9 jako „metag“. Jde o 32bitovou architekturu vyvinutou v Imagination Technologies. Bohužel se přihodilo, že současně se začleněním kódu firma Imagination Technologies koupila MIPS Technologies a zaměřila se na architekturu MIPS. Od té doby podpora Mety v jádře skomírá a dá se sestavit pouze s GCC verze 4.2.4, která už není podporována. James Hogan, vývojář, který port na Metu do jádra původně přidal, 21. února navrhl její odstranění s tím, že je „v podstatě mrtvá a nikdo ji nepoužívá.“
Hned další den nezávisle navrhl Metu odstranit také Arnd Bergmann. Ovšem jak to mívá ve zvyku, vzal to zeširoka: navrhl důkladně zvážit odstranění celkem pěti architektur. Ty další čtyři zahrnovaly následující:
Hexagon od Qualcommu je architektura digitálních signálových procesorů, jejíž podpora se do jádra dostala ve vydání 3.2 v roce 2011. Jde o trošku jiný případ, protože architektura Hexagon se stále aktivně používá – Bergmann řekl, že „se používá ve všech ARMovských SoC Snapdragon, ale jaderný kód se jeví jako výsledek neúspěšného výzkumného projektu, jehož cílem bylo vytvořit samostatný SoC Hexagon bez jader ARM.“ Port GCC 4.5 na tuto architekturu nikdy nebyl začleněn.
Richard Kuo se ozval, aby se architektury Hexagon zastal, se slovy: „Tento port pořád používáme k experimentování s různými nástroji a na jiné výzkumné projekty ve firmě.“ Port GCC je skutečně opuštěný, řekl, ale to jen proto, že Qualcomm přešel na LLVM k sestavování jak jádra, tak kódu v uživatelském prostoru. Bergmann odpověděl, že architektura v jádře zůstane, když se správci kód stále hodí. Rád by ale dal dohromady funkční sadu nástrojů k sestavení portu pomocí LLVM.
Bergmann také na okraj zmínil, že architektury FR-V a M32R (obě z doby před zavedením Gitu) byly označeny jako osiřelé a časem by se mělo zvážit jejich odstranění. V diskuzi se ale rychle ukázalo, že tyto architektury nikoho nezajímají. Konečně, David Howells je stále formálně správcem správcem architektury mn10300, pro niž přidal podporu ve vydání 2.6.25 v roce 2008, ale podle Bergmanna „se situace nezdá o nic aktivnější než v případě těch dalších dvou architektur, poslední skutečné aktualizace přišly v roce 2013.“ Další diskutující zmínili, že v současné době se nepoužívají ani architektury tile (z cyklu 2.6.21, rok 2010) a blackfin (cyklus 2.6.21, rok 2007).
Z diskuze vyplynul plán ve vývojovém cyklu 4.17 odstranit architektury score, unicore, metag, frv a m32r, zatímco hexagon a openrisc zůstanou. Architektury tile a blackfin budou na čas odloženy a pokud se neobjeví nový správce, budou odstraněny „později letos.“ Architektura mn10300 bude označena k „očekávanému odstranění“, nepřibude-li podpora současných čipů. Všeho všudy je tedy pravděpodobné, že z jádra v dohledné době zmizí docela dost kódu.
Soubor changes.rst
z jaderné dokumentace aktuálně tvrdí, že nejstarší podporovaná verze GCC je 3.2 vydaná v roce 2002. Už ale uplynul nějaký čas od doby, kdy se někomu skutečně podařilo jádro sestavit tak starým překladačem. Začátkem února Bergmann v diskuzi poznamenal, že nejstarší verze, o které se ví, že v tomto kontextu funguje, je 4.1 z roku 2006, a to sestavení se podařilo pouze jednomu jedinému odhodlanému vývojáři. Zdá se, že nejstarší překladač v praxi použitelný k sestavení jádra je [GCC] verze 4.3 (rok 2008), stále podporovaná distribucí SLES 11.
Linus Torvalds ale řekl, že reálně je potřeba verze aspoň 4.5 (rok 2010). V ní přibyla funkce „asm goto
“, která umožňuje inline kódu assembleru skákat na návěští v kódu napsaném v C. Podpora překladačů bez této funkce vyžaduje údržbu celkem velkého množství záložního kódu. asm goto
je také stále více potřeba k patřičnému zmírňování Meltdown/Spectre. Někteří vývojáři by se záložního kódu rádi zbavili, ale je v tom menší problém, jak poukázal Kees Cook: LLVM asm goto
nepodporuje a celý Android se sestavuje pomocí LLVM. Takže v nejbližší době by někdo měl do LLVM přidat podporu asm goto
.
Peter Zijlstra by rád šel o krok dál a vyžadoval GCC 4.6, ve kterém přibyla funkce -fentry
. Ta nahrazuje starou profilovací vazbu mcount()
novou, která se při vstupu do funkce volá před veškerým ostatním kódem. To by také umožnilo odstranit něco starého kódu pro zpětnou kompatibilitu. V tom případě by ale podle Bergmanna dávalo smysl učinit nejstarší možnou verzí 4.8, protože právě ta je podporována celou řadou distribucí s dlouhodobou podporou. Ale ani u toho se nemusíme zastavit, protože nejstarší verze GCC, o které se dá říct, že podporuje zmírnění Spectre „retpoline“, je 4.9, vydaná v roce 2014.
Zatím nikdo nerozhodl, která verze GCC bude opravdu ta nejstarší možná k sestavení jádra, takže prozatím v dokumentaci zůstává fiktivní číslo 3.2. Jednoho dne se to jistě změní. Do té doby by se každý, kdo k sestavení současných jader používá starší nástroje, měl zamyslet nad přechodem na něco novějšího.
(Poznámka autora: poděkování patří Arndu Bergmannovi za zodpovězení několika dotazů pro účely tohoto článku. Také stojí za zmínku nedávno aktualizovaný vyčerpávající seznam křížových překladačů dostupný na kernel.org, starší verze těchto překladačů jsou dostupné na této stránce.)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.