
توسعهدهندگان هسته لینوکس (Linux Kernel) بار دیگر موضوع حذف ABI x32 را در دستور کار قرار دادهاند. این قابلیت را نباید با ABI i386 اشتباه گرفت؛ x32 مدلی کمکاربرد است که در آن اعداد صحیح ۳۲ بیتی، نوع long و اشارهگرها (Pointer) در پردازندههای اینتل و AMD بهصورت ۳۲ بیتی باقی میمانند، اما از مجموعه بزرگتر رجیسترهای پردازنده و دیگر مزایای معماری x86_64 بهره میگیرد.
x32 ABI چیست و چرا کنار گذاشته میشود؟
این فناوری در نسخه ۳.۴ هسته لینوکس معرفی شد تا ضمن حفظ اشارهگرهای کوچکتر ۳۲ بیتی، از رجیسترهای اضافی موجود در x86_64 که در i386 در دسترس نبودند، استفاده کند. با این حال، x32 دیر معرفی شد و در طول سالهای گذشته نه علاقهای در صنعت به آن شکل گرفت و نه پذیرش گستردهای پیدا کرد. در مقابل، مسیر x86_64 در لینوکس با آرامش و پایداری پیش رفته است و همین موضوع باعث شده توسعهدهندگان هسته به فکر بازنشستگی x32 بیفتند.
پچهای تازه و پیشنهاد مسدودسازی با گزینه BROKEN
سباستین آندرژی سیویور (Sebastian Andrzej Siewior)، مهندس شرکت Linutronix، رهبری تلاشها برای بازنشستگی x32 را در سال جاری بر عهده داشته است. با نزدیک شدن به پایان سال ۲۰۲۶ و با توجه به اینکه هسته لینوکس ۷.۳ یا ۷.۴ نسخه LTS امسال خواهد بود، بحث حذف x32 بار دیگر در فهرست پستی هسته لینوکس (Linux Kernel Mailing List) داغ شده است.
این مهندس امروز مجموعه جدیدی از پچها را برای آغاز فرآیند حذف ABI x32 ارسال کرد. او در توضیحات پچ استدلال کرده است که در گام نخست باید x32 پشت گزینه پیکربندی «BROKEN» در Kconfig مسدود شود تا امکان فعالسازی پیشفرض آن از میان برود.
دلایل فنی حذف x32 از نگاه توسعهدهندگان
در متن پچ ارسالی، دلایل متعددی برای این تصمیم مطرح شده است:
- عدم پذیرش صنعتی: x32 هرگز نتوانست در حجم گستردهای مورد استفاده قرار گیرد؛ مصرف حافظه معمولاً محدودیتی نمیشناسد و بهبود عملکرد آن نیز به نقطهای نرسید که بارهای کاری مشخصی بهطور کامل و انحصاری به x32 مهاجرت کنند.
- نگرانیهای امنیتی: توزیع دبیان (Debian) پچی را ارائه کرده است که x32 را بهصورت پیشفرض غیرفعال میکند و فعالسازی آن را به زمان بوت و خط فرمان واگذار میکند؛ زیرا این توزیع نگران افزایش سطح حمله (Attack Surface) است.
- غیرفعال بودن در فدورا: بر اساس آنچه گزارش شده، فدورا (Fedora) نیز x32 را غیرفعال کرده است.
- محدودیت بازاستفاده از شمارههای فراخوان سیستمی: بازه فراخوانهای سیستمی (Syscall) بالاتر از ۵۱۲ که x32 از آن استفاده میکند، قابل بازاستفاده نیست؛ زیرا در هستههای قدیمیتر (پیش از نسخه ۵.۴ با x32 فعال) مشخص نیست که یک فراخوان سیستمی مربوط به x86-64 و پیادهسازینشده است یا برای x32 در نظر گرفته شده است.
با این حال، آنچه همچنان قابل حذف است، موارد سازگاری (Compat) ویژهای است که به دلیل تفاوت در همترازی (Alignment) به وجود آمدهاند.
سرنوشت x32 در هستههای LTS
سباستین آندرژی سیویور در پچ خود تصریح کرده است که از آنجا که عملاً استفاده واقعی و جدی از x32 وجود ندارد، فرآیند حذف آن با علامتگذاری این نماد بهعنوان «BROKEN» آغاز میشود تا فعالسازی پیشفرض آن ممکن نباشد. بر این اساس، x32 تا آخرین هسته LTS امسال در کد باقی میماند و پس از آن بهطور کامل حذف خواهد شد.
اکنون باید دید که آیا این پچها در ابتدا با علامتگذاری x32 بهعنوان «BROKEN» وارد درخت اصلی کد میشوند و سپس با اعلام رسمی نسخه LTS سال ۲۰۲۶ لینوکس، حذف نهایی آن محقق میشود یا خیر.