Portál AbcLinuxu, 25. dubna 2024 13:17

Jaderné noviny – 1. 3. 2018: Opouštění starých architektur a překladačů

18. 3. 2018 | David Kolibáč
Články - Jaderné noviny – 1. 3. 2018: Opouštění starých architektur a překladačů  

Stav vydání jádra. Opouštění starých architektur a překladačů.

Stav vydání jádra

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.

Opouštění starých architektur a překladačů

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čů.

Architektury

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í:

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.

Překladače

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.)

Odkazy a zdroje

LWN.net
Shedding old architectures and compilers in the kernel

Další články z této rubriky

Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023
Jaderné noviny – přehled za listopad 2023

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.