إطلاق لغة البرمجة Go 1.18

يتم تقديم إصدار لغة البرمجة Go 1.18 ، والتي يتم تطويرها بواسطة Google بمشاركة المجتمع كحل هجين يجمع بين الأداء العالي للغات المترجمة ومزايا لغات البرمجة النصية مثل سهولة الاستخدام. كتابة التعليمات البرمجية والتطور السريع وحماية الأخطاء. يتم توزيع كود المشروع بموجب ترخيص BSD.

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

تم تطوير المشروع مبدئيًا مع التركيز على البرمجة متعددة الخيوط والتشغيل الفعال على الأنظمة متعددة النواة ، بما في ذلك توفير الوسائل المنفذة على مستوى المشغل لتنظيم الحوسبة المتوازية والتفاعل بين طرق التنفيذ المتوازي. توفر اللغة أيضًا حماية مضمنة ضد تجاوز كتل الذاكرة المخصصة وتوفر القدرة على استخدام أداة تجميع البيانات المهملة.

يضيف الإصدار الجديد دعمًا للوظائف والأنواع العامة (الأدوية العامة)، والتي يمكن للمطور من خلالها تحديد واستخدام الوظائف المصممة للعمل مع عدة أنواع في وقت واحد. من الممكن أيضًا استخدام الواجهات لإنشاء أنواع مدمجة تشمل أنواع بيانات متعددة. يتم تنفيذ دعم الأدوية العامة دون كسر التوافق مع التعليمات البرمجية الموجودة. // مجموع قيم المجموعة، يعمل مع أنواع int64 وfloat64 func SumIntsOrFloats[K Compare, V int64 | float64](m Map[K]V) V { var s V for _, v := range m { s += v } return s } // خيار آخر بتعريف نوع عام: type Number Interface { int64 | float64 } func SumNumbers[K قابلة للمقارنة، V Number](m Map[K]V) V { var s V for _, v := range m { s += v } return s }

تحسينات أخرى:

  • تم دمج الأدوات المساعدة لاختبار التعليمات البرمجية الضبابية في مجموعة الأدوات القياسية. أثناء اختبار التشويش، يتم إنشاء دفق من جميع المجموعات العشوائية المحتملة من بيانات الإدخال ويتم تسجيل حالات الفشل المحتملة أثناء معالجتها. إذا تعطل التسلسل أو لم يتطابق مع الاستجابة المتوقعة، فمن المرجح أن يشير هذا السلوك إلى وجود خطأ أو ثغرة أمنية.
  • تمت إضافة دعم لمساحات العمل متعددة الوحدات، مما يسمح لك بتنفيذ الأوامر على وحدات متعددة في وقت واحد، مما يسمح لك ببناء وتشغيل التعليمات البرمجية في وحدات متعددة في وقت واحد.
  • تم إجراء تحسينات كبيرة في الأداء للأنظمة التي تعتمد على معالجات Apple M1 وARM64 وPowerPC64. تمكين القدرة على استخدام السجلات بدلاً من المكدس لتمرير الوسائط إلى الوظائف وإرجاع النتيجة. تحسين عملية فتح الحلقات المضمنة بواسطة المترجم. تمت إعادة تصميم فحص النوع في المترجم بالكامل. تظهر بعض الاختبارات زيادة بنسبة 20% في أداء التعليمات البرمجية مقارنة بالإصدار السابق، لكن التجميع نفسه يستغرق وقتًا أطول بنسبة 15% تقريبًا.
  • في وقت التشغيل، تمت زيادة كفاءة إعادة الذاكرة المحررة إلى نظام التشغيل وتم تحسين تشغيل أداة تجميع البيانات المهملة، وأصبح سلوكها أكثر قابلية للتنبؤ بها.
  • تمت إضافة الحزم الجديدة net/netip وdebug/buildinfo إلى المكتبة القياسية. يتم تعطيل دعم TLS 1.0 و1.1 بشكل افتراضي في رمز العميل. توقفت وحدة التشفير/x509 عن معالجة الشهادات الموقعة باستخدام تجزئة SHA-1.
  • لقد تم رفع متطلبات بيئة Linux؛ لكي تعمل، تحتاج الآن إلى أن يكون لديك نواة Linux بإصدار 2.6.32 على الأقل. في الإصدار التالي، من المتوقع إجراء تغييرات مماثلة على FreeBSD (سيتم إيقاف دعم فرع FreeBSD 11.x) وستكون هناك حاجة إلى FreeBSD 12.2 على الأقل للعمل.

المصدر: opennet.ru

إضافة تعليق