Go إصدار لغة البرمجة 1.16

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

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

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

الابتكارات الرئيسية التي تم تقديمها في إصدار Go 1.16:

  • تمت إضافة حزمة التضمين ، والتي توفر أدوات لدمج ملفات وأدلة عشوائية في البرنامج. يتم توفير توجيه "// go: embed" جديد لتحديد الملفات التي سيتم تضمينها في وقت الترجمة. على سبيل المثال ، تحديد التعليق "// go: embed test.txt" في الكود وإعلان المتغير "var f embed.FS" كمتابعة سيؤدي إلى تضمين ملف test.txt وإمكانية الوصول إليه من خلال واصف "f". وبالمثل ، يمكنك تضمين ملفات مع موارد أو قيم فردية من نوع معين ضروري للعمل ، على سبيل المثال ، للحصول على متغير السلسلة "s" من ملف version.txt ، يمكنك تحديد: import _ "embed" // go: تضمين version.txt var s print (s)
  • يتطلب الإعداد الافتراضي الآن استخدام نظام وحدة نمطية جديد مع دعم إصدار متكامل يحل محل إدارة التبعية المستندة إلى GOPATH. يتم الآن تعيين متغير البيئة GO111MODULE على "تشغيل" افتراضيًا ، ويتم استخدام وضع الوحدات النمطية بغض النظر عن وجود ملف go.mod في دليل العمل أو الدليل الأصلي. في الوضع الجديد ، لا تقم بإنشاء أوامر مثل "go build" و "go test" بتعديل محتويات go.mod و go.sum ، بينما تعالج "go install" الوسائط المحددة للإصدار ("go install example.com/[البريد الإلكتروني محمي]"). لإرجاع السلوك القديم ، قم بتغيير GO111MODULE إلى "تلقائي". ويلاحظ أن 96٪ من المطورين قد تحولوا بالفعل إلى نظام الوحدات الجديدة.
  • تم تحسين الرابط. بالنسبة للمشاريع الكبيرة ، أصبح الارتباط الآن أسرع بنسبة 20-25٪ ويتطلب ذاكرة أقل بنسبة 5-15٪.
  • يضيف المترجم دعمًا لتوسيع الوظيفة المضمنة مع تعريف مختصر للحلقات "for" وقيم الطريقة وبنيات "تبديل النوع".
  • دعم إضافي لأنظمة Apple المجهزة بشريحة Apple M1 ARM الجديدة. تمت إضافة منافذ netbsd / arm64 و openbsd / mips64 مع دعم NetBSD على ARM 64 بت و OpenBSD على أنظمة MIPS64. تمت إضافة دعم الوضع cgo و "-buildmode = pie" إلى منفذ linux / riscv64.
  • تم إسقاط دعم وضع الترجمة x87 (GO386 = 387). دعم المعالجات بدون تعليمات SSE2 متاح الآن عبر وضع البرنامج "GO386 = softfloat".

بالإضافة إلى ذلك ، يمكننا ملاحظة بدء اختبار الإصدار التجريبي للغة Dart 2.12 ، حيث تم تثبيت وضع الأمان الفارغ ، والذي سيتجنب الأعطال الناتجة عن محاولات استخدام المتغيرات التي لم يتم تحديد قيمتها وضبطها على Null. يشير الوضع إلى أنه لا يمكن أن تحتوي المتغيرات على قيم غير محددة ما لم يتم تعيينها بشكل صريح على قيمة خالية. يأخذ الوضع في الاعتبار بدقة أنواع المتغيرات ، مما يسمح للمترجم بتطبيق تحسينات إضافية. يتم التحقق من مطابقة النوع في وقت الترجمة ، على سبيل المثال ، إذا حاولت تعيين القيمة "Null" إلى متغير من نوع لا يشير إلى حالة غير محددة ، مثل "int" ، فسيتم عرض خطأ.

المصدر: opennet.ru

إضافة تعليق