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

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

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

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

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

  • تم تحسين عمل الرابط بشكل ملحوظ، سواء في زيادة سرعة التشغيل أو تقليل استهلاك الذاكرة أو في اتجاه تبسيط صيانة التعليمات البرمجية. عند اختباره على أنظمة التشغيل باستخدام تنسيق الملف القابل للتنفيذ ELF (Linux، وFreeBSD، وNetBSD، وOpenBSD، وDragonfly، وSolaris)، تم إنشاء مجموعة نموذجية من تطبيقات Go الكبيرة بشكل أسرع بنسبة 20%، كما تم تقليل استهلاك الذاكرة بمعدل 30%. أصبحت زيادة الإنتاجية ممكنة من خلال التبديل إلى تنسيق ملف كائن جديد وإعادة صياغة المراحل الداخلية لزيادة مستوى توازي العمل. يتم الآن استخدام الرابط الأصلي افتراضيًا على أنظمة linux/amd64 وlinux/arm64 في "-buildmode=pie"، والذي لم يعد يتطلب استخدام رابط C.
  • في وقت التشغيل، تم تحسين توزيع الكائنات الصغيرة على الأنظمة التي تحتوي على عدد كبير من مراكز وحدة المعالجة المركزية بشكل كبير وتم تقليل زمن الوصول. في حالة الفشل، يتم عرض القيم ذات الأنواع الرقمية والسلسلة بدلاً من إظهار العنوان. عند إرسال إشارات SIGSEGV وSIGBUS وSIGFPE إلى تطبيق Go، في حالة عدم وجود معالج os/signal.Notify، سيخرج التطبيق بمخرجات تتبع المكدس (في السابق كان السلوك غير متوقع).
  • تم تحسين المترجم لتقليل حجم الملفات القابلة للتنفيذ التي تم إنشاؤها بمعدل 5% عن طريق إيقاف إدراج بعض البيانات التعريفية لأداة تجميع البيانات المهملة والتنظيف الأكثر قوة للبيانات التعريفية غير المستخدمة.
  • تمت إضافة علامة "-spectre" إلى المترجم والمجمع لتمكين الحماية ضد هجمات فئة Spectre (بالنسبة لمعظم البرامج، هذا غير مطلوب؛ لا يمكن تبرير تمكين الخيار إلا من أجل بعض الحالات المحددة للغاية).
  • في شهادات X.509، تم إهمال حقل CommonName، والذي لم يعد يتم التعامل معه كاسم مضيف إذا كان حقل الأسماء البديلة للموضوع مفقودًا.
  • يمكن الآن للأمر "go" في متغير البيئة GOPROXY إدراج عدة وكلاء، مفصولة بفاصلة أو "|". إذا قام الوكيل الأول في القائمة بإرجاع خطأ (404 أو 410)، فستتم محاولة الاتصال من خلال الوكيل الثاني، وما إلى ذلك.
  • أضافت الأداة البيطرية تحذيرًا بشأن محاولة التحويل من السلسلة (x) إذا كان "x" عبارة عن نوع عدد صحيح بخلاف الأحرف الرونية أو البايت.
  • تمت إضافة علامة "-gnu" إلى الأداة المساعدة objdump لدعم تفكيك بناء جملة مجمع GNU.
  • تمت إضافة حزمة جديدة الوقت/tzdata، والذي يسمح لك بدمج قاعدة بيانات مع بيانات المنطقة الزمنية في البرنامج.
  • من النصوص والوثائق المصدرية إزالة العبارات القائمة البيضاء/القائمة السوداء والسيد/التابع، والتي تم استبدالها الآن بـ "القائمة المسموح بها" و"القائمة السوداء" و"العملية" و"pty" و"proc" و"التحكم".
  • تم إجراء جزء كبير من التحسينات الطفيفة على المكتبة القياسية.
  • تمت إضافة دعم لـ OpenBSD 6.7 في وضعي GOARCH=arm وGOARCH=arm64 (في السابق كان يتم دعم GOARCH=386 وGOARCH=amd64 فقط).
  • استمر تطوير منصة RISC-V ذات 64 بت (GOOS=linux,GOARCH=riscv64).
  • بالنسبة لأنظمة 32 بت x86، سيعمل الإصدار التالي على رفع الحد الأدنى لمتطلبات النظام - سيستمر دعم المعالجات ذات SSE2 فقط. للإنشاء في وضع GOARCH=386، ستحتاج على الأقل إلى Intel Pentium 4 (تم إصداره في عام 2000) أو AMD Opteron/Athlon 64 (تم إصداره في عام 2003).

المصدر: opennet.ru

إضافة تعليق