Linux kodola izstrādātāji sāk izņemt x32 lietojumprogrammu bināro saskarni jeb ABI, kas x86-64 procesoros ļauj darbināt programmas ar 32 bitu rādītājiem. Linutronix inženieris Sebastian Andrzej Siewior 8. oktobrī nosūtīja pārstrādātu ielāpu kopu. Pirmais solis nedzēš nevienu koda rindu. Tā vietā konfigurācijas opcija CONFIG_X86_X32_ABI saņem nosacījumu depends on BROKEN, tāpēc parastie konfigurācijas rīki to vairs neļauj ieslēgt. Kods paliek vietā, bet jaunos kodolos saskarni vairs nevar aktivizēt.
Siewior pie x32 izņemšanas strādā visu 2026. gadu. Pirmo ielāpu ar nosaukumu „x86: Start removing X86_X32_ABI” viņš publicēja 23. maijā; tas no faila arch/x86/Kconfig izņēma 14 rindas un nepievienoja nevienu. Toreiz plāns bija vienkāršs: vispirms izņemt opciju, bet pašu kodu dzēst pēc vasaras pārtraukuma, ja pusgada laikā neviens neiebilst. Pēc izstrādātāju atsauksmēm pieeja kļuva piesardzīgāka. Opciju tagad noslēpj aiz BROKEN. Pašu implementāciju atstāj vēlākiem cikliem.
Kas ir x32 un kāpēc tas parādījās
x32 Linux kodolā ienāca ar 3.4 versiju 2012. gadā. Ideja bija paņemt 64 bitu režīma reģistrus un instrukcijas, taču rādītājus un veselos skaitļus glabāt 32 bitos. Tas ir tā sauktais ILP32 modelis uz x86-64 aparatūras. Mazāki rādītāji nozīmē mazāku atmiņas patēriņu un labāku kešatmiņas izmantošanu, bet piekļuve visam reģistru komplektam dod ātrumu, kāda i386 kodam nav. Uz papīra tas izskatījās pēc abu pieeju labākajām īpašībām.
Praksē saskarne popularitāti neieguva. Siewior ielāpa aprakstā teikts, ka x32 „nepacēlās”. Lielās distribūcijas to vai nu atslēdza, vai nekad neieslēdza. Debian to pēc noklusējuma atspējoja un pieprasa atsevišķu kodola palaišanas parametru, jo atvērta saskarne palielina uzbrukuma virsmu. Fedora x32 savās konfigurācijās neieslēdz vispār.
Galvenā problēma bija ekosistēma. Lai programmu darbinātu x32 vidē, vajag atsevišķu bibliotēku kopu, kas kompilēta tieši šim ABI. Vairums distribūciju tādu neuzturēja, tāpēc lietotājam pašam nāktos būvēt paralēlu userland. Solītais ātrums reālās slodzēs bieži nepārsniedza mērījumu troksni, savukārt saderības izmaksas palika pastāvīgas. Tā x32 gadu gaitā kļuva par nišas rīku, ko lieto šaurs Gentoo un iegulto sistēmu lietotāju loks.
Atbrīvotie sistēmas izsaukumu numuri
Viens no tehniskajiem ieguvumiem ir sistēmas izsaukumu numuri. Parastie x86-64 izsaukumi beidzas pie 471, x32 izsaukumi sākas pie 512, tāpēc vidū stāv 40 neizmantotu numuru. Ja saskarni izņem, šo diapazonu teorētiski varētu izmantot citur. Kodola tabulās tas ir reāls, kaut neliels ietaupījums.
Tomēr H. Peter Anvin un Thomas Gleixner iebilda, ka numurus labāk paturēt rezervētus. x32 izsaukumus iezīmē karogs 0x40000000. Ja vecs kodols vai sena lietotāju telpas programma sastopas ar atkārtoti piešķirtu numuru, tā to var interpretēt kļūdaini. Rezervācija izmaksā maz un novērš grūti pamanāmas kļūdas.
„Labākā veiktspēja nesasniedza punktu, kurā kādas slodzes plaši pārietu uz x32 un lietotu to vienīgo,” ielāpa pamatojumā raksta Siewior.
Kas vēl izmanto x32 un kad to izņems
Siewior uzsvars nav uz veiktspēju, bet uz uzturēšanu. Katrs jauns sistēmas izsaukums x32 gadījumā prasa atsevišķu saderības aptinumu. Drošības testēšanā x32 pievieno vēl vienu kombināciju lielajai matricai. Kad reāls lietotāju skaits ir neliels, šī slodze gulstas uz dažiem kodola uzturētājiem. Tieši tāpēc Siewior tēmu pirmo reizi pacēla pavasarī, atkārtoja jūlijā ar otro versiju un oktobrī atgriezās ar maigāku BROKEN pieeju.
Pilnīgai izņemšanai pretojas vairāki izstrādātāji. Arnd Bergmann atbalstīja opcijas izņemšanu, bet aicināja pašu implementāciju paturēt vismaz līdz nākamajam LTS kodolam. Viņa arguments ir tehnisks: x32 prasa īpašus gadījumus savietojamības ioctl un sistēmas izsaukumu apstrādē, tāpēc pārsteidzīga dzēšana var saskaldīt citu kodu. Gentoo izstrādātājs Sam James atgādināja, ka daļa lietotāju x32 lieto tīrā veidā, bez multilib. Debian izstrādātājs John Paul Adrian Glaubitz teica, ka stingru iebildumu viņam nav, taču izņemšanu vēlas redzēt labāk pamatotu.
Saskarni joprojām uztur PLD Linux, to min arī Yocto un Debian x32 ports. Tom’s Hardware vērtē, ka pilnīga izņemšana no kodola varētu aizņemties līdz 2027. gadam. x32 nav jājauc ar parasto 32 bitu i386 savietojamību, ko vada CONFIG_IA32_EMULATION; tā paliek atsevišķa un šis ielāps to neskar.
Pašreizējais plāns ir x32 saglabāt līdz pēdējam 2026. gada LTS kodolam un pēc tam izņemt pakāpeniski. Galīgs grafiks vēl nav apstiprināts. Ielāpi joprojām gaida pārskatīšanu kodola x86 koku uzturētāju pusē. Līdz šim kopa mainline kodolā nav iekļauta, tāpēc līdz pilnīgai x32 izņemšanai paies vēl vairāki laidieni. Pagaidām mainās tikai viens: svaigi uzbūvētos kodolos x32 vairs nebūs izvēlams.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.