Go 1.27 توسّع دعم SIMD دون assembly إلى arm64 وWebAssembly بأسماء عمليات مقروءة
خوادم Graviton وأجهزة Apple Silicon صارت ضمن المعماريات التي يمكن فيها تسريع الكود بـ SIMD من Go مباشرة، ونُقلت مسؤولية اختيار الأمر الأمثل من المطور إلى الـ compiler.
نشرت مدونة Go الرسمية في 2 أكتوبر 2026 مقالًا لـ Junyang Shao وDavid Chase عن archsimd. وهو الجزء الذي يتيح استخدام أوامر SIMD الخاصة بكل معمارية من Go مباشرة، بعد أن كان ذلك يتطلب كتابة assembly.
والـ SIMD أمر واحد يُنفَّذ على عدة أرقام في اللحظة نفسها، داخل register عريض بحجم 128 أو 256 بت أو أكثر. فبدلًا من المرور على مليون عنصر واحدًا تلو الآخر، يعالج المعالج مجموعات منها في كل خطوة.
وكان Go 1.26 قد أتاح ذلك على amd64 فقط، ثم أضاف Go 1.27 دعم arm64 وwasm. ويشمل arm64 خوادم Graviton وأجهزة Apple Silicon، أي جزءًا كبيرًا من الخوادم منخفضة التكلفة ومن أجهزة المطورين أنفسهم.
تصميم لا ينقل أسماء العتاد كما هي
لم ينقل الفريق أسماء أوامر العتاد إلى اللغة. ففي C يكتب المطور اسمًا مثل _mm512_slli_epi64، بينما يكتب في Go اسمًا مثل ShiftAllLeft.
ولم يُخرج الفريق كل تفصيلة في العتاد إلى الـ API. فإذا كتب المطور x.Add(y).Masked(m)، يتولى الـ compiler تحويلها إلى الأمر الواحد المناسب. والنتيجة API أصغر، وتحسين يقع على عاتق الـ compiler لا المطور.
ويكمّل ذلك حزمة simd المحمولة التي عرضها الفريق في سبتمبر، التي تتيح كتابة كود واحد لكل المعماريات. لكن كل ذلك لا يزال تحت GOEXPERIMENT=simd، أي أنه تجريبي ولم يصبح بعد خيارًا لبيئة production.