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

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

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

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

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

  • تحتوي حزمة crypto/tls على دعم بروتوكول ممكن افتراضيًا TLS 1.3. تمت إضافة حزمة جديدة "crypto/ed25519" مع دعم التوقيعات الرقمية Ed25519؛
  • تمت إضافة دعم للبادئات الحرفية الرقمية الجديدة لتحديد الأرقام الثنائية (مثل 0b101)، والثماني (0o377)، والتخيلي (2.71828i)، والنقطة العائمة السداسية العشرية (0x1p-1021)، والقدرة على استخدام الحرف "_" لفصل الأرقام بشكل مرئي بأعداد كبيرة (1_000_000)؛
  • تمت إزالة القيود المفروضة على استخدام العدادات غير الموقعة فقط في عمليات التحول، مما يتجنب التحويلات غير الضرورية إلى نوع uint قبل استخدام عوامل التشغيل "‹‹" و"››"؛
  • تمت إضافة دعم لمنصة Illumos (GOOS=illumos). تم ضمان التوافق مع نظام التشغيل Android 10. وتمت زيادة متطلبات الحد الأدنى من إصدارات FreeBSD (11.2) وmacOS (10.11 "El Capitan").
  • التطوير المستمر لنظام الوحدات الجديد، والذي يمكن استخدامه كبديل لـ GOPATH. على عكس الخطط المعلنة مسبقًا في Go 1.13، لا يتم تمكين هذا النظام افتراضيًا ويتطلب التنشيط من خلال المتغير GO111MODULE=on أو استخدام سياق يتم فيه تطبيق الوحدات تلقائيًا. يتميز نظام الوحدة الجديد بدعم الإصدار المتكامل، وقدرات تسليم الحزم، وإدارة التبعية المحسنة. باستخدام الوحدات النمطية، لم يعد المطورون مرتبطين بالعمل ضمن شجرة GOPATH، ويمكنهم تحديد التبعيات ذات الإصدار بوضوح وإنشاء نسخ قابلة للتكرار.

    على عكس الإصدارات السابقة، يعمل التطبيق التلقائي للنظام الجديد الآن عند وجود ملف go.mod في دليل العمل الحالي أو الدليل الأصلي عند تشغيل الأمر go، بما في ذلك عندما يكون موجودًا في دليل GOPATH/src. تمت إضافة متغيرات بيئة جديدة: GOPRIVATE، الذي يحدد مسارات الوحدات التي يمكن الوصول إليها بشكل عام، وGOSUMDB، الذي يحدد معلمات الوصول إلى قاعدة بيانات المجموع الاختباري للوحدات غير المدرجة في ملف go.sum؛

  • يقوم الأمر "go" افتراضيًا بتحميل الوحدات والتحقق من سلامتها باستخدام مرآة الوحدة وقاعدة بيانات المجموع الاختباري التي تحتفظ بها Google (proxy.golang.org، وsum.golang.org، وindex.golang.org)؛
  • تم إيقاف دعم الحزم الثنائية فقط؛ ويؤدي إنشاء حزمة في الوضع "//go:binary-only-package" الآن إلى حدوث خطأ؛
  • تمت إضافة دعم للاحقة "@patch" إلى أمر "go get"، مما يشير إلى أنه يجب تحديث الوحدة إلى أحدث إصدار للصيانة، ولكن دون تغيير الإصدار الرئيسي أو الثانوي الحالي؛
  • عند استرداد الوحدات النمطية من أنظمة التحكم بالمصدر، يقوم الأمر "go" الآن بإجراء فحص إضافي على سلسلة الإصدار، محاولًا مطابقة أرقام الإصدارات الزائفة مع بيانات التعريف من المستودع؛
  • دعم إضافي فحص الخطأ (تغليف الأخطاء) من خلال إنشاء أغلفة تسمح باستخدام معالجات الأخطاء القياسية. على سبيل المثال، خطأ يمكن التفاف "e" حول الخطأ "w" من خلال توفير طريقة بسط، إرجاع "ث". يتوفر كلا الخطأين "e" و"w" في البرنامج ويتم اتخاذ القرارات بناءً على الخطأ "w"، لكن "e" يوفر سياقًا إضافيًا لـ "w" أو يفسره بشكل مختلف؛
  • تم تحسين أداء مكونات وقت التشغيل (لوحظت زيادة في السرعة تصل إلى 30%) وتم تنفيذ عملية عودة أكثر قوة للذاكرة إلى نظام التشغيل (في السابق، كانت الذاكرة تُعاد بعد خمس دقائق أو أكثر، ولكن الآن على الفور بعد تقليل حجم الكومة).

المصدر: opennet.ru

إضافة تعليق