تم إصدار Go 1.22: نظرة عامة على التغييرات الرئيسية للإصدار الجديد

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تم إصدار Go 1.22: ما الجديد في لغة البرمجة Golang



أعلن فريق مطوري Go (Golang) رسميًا عن إصدار النسخة 1.22. يمثل هذا التحديث خطوة مهمة في تطور اللغة، حيث يعالج المضايقات القديمة ويضيف تحسينات طال انتظارها. نستعرض التغييرات الرئيسية التي ستؤثر على كل مطور يستخدم Go.



التغيير الرئيسي: حلقة for-range المُصححة



أكثر الميزات الجديدة توقعًا هو تغيير سلوك متغير الحلقة في بناء for-range. سابقًا، كان المتغير يُنشأ مرة واحدة ويُعاد استخدامه في كل تكرار، مما أدى إلى أخطاء متكررة عند التقاط المتغيرات في الإغلاقات (closures) (على سبيل المثال، في goroutines).

اعتبارًا من Go 1.22، كل تكرار لحلقة for-range ينشئ متغيرًا جديدًا. هذا يزيل تلقائيًا فئة من الأخطاء المتعلقة بالتقاط عنوان متغير الحلقة. الكود القديم، المكتوب مع مراعاة السلوك القديم (مثل النسخ الصريح)، سيظل يعمل، لكن المترجم سيحذر الآن من المشكلات المحتملة.



الحزمة الجديدة math/rand/v2



أجرى المطورون مراجعة لحزمة توليد الأرقام العشوائية. في Go 1.22، تم تقديم math/rand/v2، والتي تقدم:

  • خوارزميات أسرع. يستخدم التنفيذ الجديد ChaCha8، مما يزيد بشكل كبير من سرعة التوليد.
  • أمان محسّن. أصبحت سلامة الخيوط (thread-safety) مضمنة افتراضيًا، مما يبسط كتابة الكود الصحيح.
  • واجهة برمجة تطبيقات (API) نظيفة. تمت إزالة الوظائف القديمة التي كانت تولد أخطاء. أصبحت الواجهة الجديدة أكثر منطقية.

يُوصى باستخدام الحزمة math/rand/v2 لجميع المشاريع الجديدة، على الرغم من أن الحزمة القديمة math/rand تظل متاحة للتوافق مع الإصدارات السابقة.



تحسينات في التوجيه (Routing) وخادم HTTP



تمت إضافة إمكانية استخدام القوالب (templates) في المسارات (routes) إلى المكتبة القياسية net/http. يمكنك الآن كتابة قواعد أكثر تعقيدًا دون اللجوء إلى أطر العمل الخارجية:

  • دعم طرق HTTP. على سبيل المثال، GET /items/{id} سيعالج طلبات GET فقط.
  • التحقق من صحة المسارات. أصبح من الممكن تحديد مسارات دقيقة ومعالجة الجزء المتبقي من URL (عبر {$}).

هذا يبسط إنشاء REST API، مما يجعل المكتبة القياسية أكثر تنافسية.



الأداء والأدوات



يتضمن الإصدار أيضًا العديد من التحسينات في أداء المترجم وبيئة التشغيل (runtime). سمح تحسين جامع القمامة (garbage collector) ومجدول goroutines بتقليل زمن الاستجابة في التطبيقات عالية التحميل.

تمت إضافة فحوصات جديدة إلى أداة go vet. تساعد هذه الفحوصات في العثور على المشكلات المحتملة مع الحلقات والاستخدام غير الصحيح لوسوم الهياكل (struct tags).



الخاتمة



Go 1.22 هو إصدار ناضج ومدروس جيدًا. إصلاح حلقة for-range سيوفر على المطورين آلاف الساعات من تصحيح الأخطاء، والحزمة الجديدة للعشوائية والتوجيه المحسّن يجعلان اللغة أكثر ملاءمة لتطوير الويب والبرمجة النظامية. إذا كنت تستخدم Go في بيئة الإنتاج (production)، فإن هذا التحديث يستحق اهتمامك بالتأكيد.



القائمة الكاملة للتغييرات متاحة في ملاحظات الإصدار الرسمية على موقع golang.org.

المكتبات الموصى بها