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

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

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

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

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

  • تم الإعلان عن أن نظام الوحدة الجديد في الأمر "go" جاهز للاستخدام العام، ويتم تمكينه افتراضيًا، ويوصى به لإدارة التبعية بدلاً من GOPATH. يتميز نظام الوحدة الجديد بدعم الإصدار المتكامل، وقدرات تسليم الحزم، وإدارة التبعية المحسنة. باستخدام الوحدات النمطية، لم يعد المطورون مرتبطين بالعمل ضمن شجرة GOPATH، ويمكنهم تحديد التبعيات ذات الإصدار بوضوح وإنشاء نسخ قابلة للتكرار.
  • أضيفت بواسطة دعم تضمين الواجهات مع مجموعة متداخلة من الأساليب. يمكن الآن أن يكون للطرق الموجودة في الواجهة المضمنة نفس الأسماء والتوقيعات مثل الطرق الموجودة في الواجهات الموجودة. تظل الأساليب المعلنة بوضوح فريدة من نوعها كما كانت من قبل.
  • تم تحسين أداء تعبير "التأجيل"، مما يجعله بنفس سرعة استدعاء وظيفة مؤجلة مباشرة، مما يسمح بتنفيذ الوظيفة المؤجلة في تعليمات برمجية حساسة للأداء.
  • يتم توفير استباقية غير متزامنة لـ coroutines (goroutines) - يمكن أن تؤدي الحلقات التي لا تحتوي على استدعاءات الوظائف الآن إلى طريق مسدود للجدولة أو تأخير بدء جمع البيانات المهملة.
  • تم تحسين كفاءة نظام تخصيص صفحة الذاكرة وأصبح هناك الآن عدد أقل بكثير من تنافسات القفل في التكوينات ذات قيم GOMAXPROCS الكبيرة. والنتيجة هي تقليل زمن الوصول وزيادة الإنتاجية مع توزيع كتل كبيرة من الذاكرة بشكل مكثف في نفس الوقت.
  • تم تحسين القفل وتم تقليل عدد مفاتيح السياق عند تشغيل أجهزة ضبط الوقت الداخلية المستخدمة في وظائف time.After وtime.Tick وnet.Conn.SetDeadline.
  • في الأمر go، يتم تمكين علامة "-mod=vendor" افتراضيًا إذا كان هناك دليل بائع في الجذر، وهو مخصص لتقديم تبعيات خارجية مرتبطة بمورد معين. تمت إضافة علامة "-mod=mod" منفصلة لتحميل الوحدات من ذاكرة التخزين المؤقت للوحدة بدلاً من دليل "البائع". إذا كان ملف go.mod للقراءة فقط، فسيتم تعيين علامة "-mod=readonly" افتراضيًا في حالة عدم وجود دليل "المورد" العلوي. تمت إضافة علامة "-modfile=file" لتحديد ملف go.mod بديل بدلاً من الملف الموجود في الدليل الجذر للوحدة.
  • تمت إضافة متغير البيئة GOINSECURE، عند تعيينه، لا يتطلب الأمر go استخدام HTTPS ويتخطى التحقق من الشهادة عند تحميل الوحدات مباشرة.
  • أضاف المترجم علامة "-d=checkptr"، التي تم تمكينها افتراضيًا، للتحقق من توافق التعليمات البرمجية مع قواعد الاستخدام الآمن لـ unsafe.Pointer.
  • يتم تضمين حزمة جديدة في التسليم التجزئة/مافاش مع وظائف تجزئة غير مشفرة لإنشاء جداول تجزئة لتسلسلات أو سلاسل بايت عشوائية.
  • تمت إضافة دعم تجريبي لمنصة RISC-V 64 بت على Linux.
  • تمت إضافة دعم لـ FreeBSD على أنظمة ARM 64 بت.

المصدر: opennet.ru

إضافة تعليق