گو پروگرامنگ لینگویج کی ریلیز 1.18

Go 1.18 پروگرامنگ لینگویج کی ریلیز پیش کی گئی ہے، جسے گوگل نے کمیونٹی کی شراکت سے ایک ہائبرڈ حل کے طور پر تیار کیا ہے جو کہ مرتب شدہ زبانوں کی اعلیٰ کارکردگی کو اسکرپٹنگ زبانوں کے ایسے فوائد کے ساتھ جوڑتا ہے جیسے کوڈ لکھنے میں آسانی۔ ، ترقی کی رفتار اور غلطی سے تحفظ۔ پروجیکٹ کوڈ BSD لائسنس کے تحت تقسیم کیا جاتا ہے۔

گو کا نحو C زبان کے مانوس عناصر پر مبنی ہے جس میں ازگر کی زبان سے کچھ ادھار لیا گیا ہے۔ زبان کافی جامع ہے، لیکن کوڈ پڑھنے اور سمجھنے میں آسان ہے۔ گو کوڈ کو اسٹینڈ اکیلے بائنری ایگزیکیوٹیبل فائلوں میں مرتب کیا گیا ہے جو ورچوئل مشین کا استعمال کیے بغیر مقامی طور پر چلتی ہیں (پروفائلنگ، ڈیبگنگ ماڈیولز، اور دیگر رن ٹائم مسئلہ کا پتہ لگانے والے سب سسٹمز کو رن ٹائم اجزاء کے طور پر مربوط کیا جاتا ہے)، جو سی پروگراموں کے مقابلے کارکردگی کی اجازت دیتا ہے۔

اس پروجیکٹ کو ابتدائی طور پر ملٹی تھریڈڈ پروگرامنگ اور ملٹی کور سسٹمز پر موثر آپریشن پر نظر رکھتے ہوئے تیار کیا گیا ہے، جس میں متوازی کمپیوٹنگ کو منظم کرنے اور متوازی عمل شدہ طریقوں کے درمیان تعامل کے لیے آپریٹر کی سطح کے ذرائع فراہم کرنا شامل ہے۔ زبان زیادہ مختص میموری بلاکس کے خلاف بلٹ ان تحفظ بھی فراہم کرتی ہے اور کوڑا اٹھانے والے کو استعمال کرنے کی صلاحیت فراہم کرتی ہے۔

نئے ورژن میں عام افعال اور اقسام (جنرک) کے لیے تعاون شامل کیا گیا ہے، جس کی مدد سے ایک ڈویلپر ایک ساتھ کئی اقسام کے ساتھ کام کرنے کے لیے ڈیزائن کیے گئے فنکشنز کی وضاحت اور استعمال کر سکتا ہے۔ یہ بھی ممکن ہے کہ انٹرفیس کا استعمال مشترکہ قسمیں بنانے کے لیے ہو جو متعدد ڈیٹا کی اقسام پر محیط ہو۔ جنرک کے لیے سپورٹ موجودہ کوڈ کے ساتھ پسماندہ مطابقت کو توڑے بغیر لاگو کیا جاتا ہے۔ // Sum سیٹ ویلیوز، int64 اور float64 اقسام کے لیے کام کرتا ہے فنک SumIntsOrFloats[K موازنہ، V int64 | float64](m نقشہ[K]V) V { var s V for _, v := رینج m { s += v } ریٹرن s } // عام قسم کی تعریف کے ساتھ ایک اور آپشن: ٹائپ نمبر انٹرفیس { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := حد m { s += v } واپسی s }

دیگر بہتری:

  • فزنگ کوڈ ٹیسٹنگ کے لیے یوٹیلیٹیز کو معیاری ٹول کٹ میں ضم کیا گیا ہے۔ فزنگ ٹیسٹنگ کے دوران، ان پٹ ڈیٹا کے تمام ممکنہ بے ترتیب مجموعوں کا ایک سلسلہ تیار کیا جاتا ہے اور ان کی پروسیسنگ کے دوران ممکنہ ناکامیوں کو ریکارڈ کیا جاتا ہے۔ اگر کوئی ترتیب کریش ہو جاتی ہے یا متوقع ردعمل سے مماثل نہیں ہوتی ہے، تو اس طرز عمل سے بگ یا کمزوری کی نشاندہی کرنے کا بہت زیادہ امکان ہے۔
  • ملٹی ماڈیولر ورک اسپیسز کے لیے شامل کردہ سپورٹ، آپ کو ایک ہی وقت میں متعدد ماڈیولز پر کمانڈز کو چلانے کی اجازت دیتا ہے، آپ کو بیک وقت متعدد ماڈیولز میں کوڈ بنانے اور چلانے کی اجازت دیتا ہے۔
  • Apple M1، ARM64 اور PowerPC64 پروسیسرز پر مبنی سسٹمز کے لیے نمایاں کارکردگی کی اصلاح کی گئی ہے۔ فنکشنز کو آرگیومنٹس منتقل کرنے اور نتیجہ واپس کرنے کے لیے اسٹیک کے بجائے رجسٹر استعمال کرنے کی اہلیت کو فعال کیا۔ کمپائلر کے ذریعے لوپس کی بہتر ان لائن انرولنگ۔ کمپائلر میں ٹائپ چیکنگ کو مکمل طور پر دوبارہ ڈیزائن کیا گیا ہے۔ کچھ ٹیسٹ پچھلے ریلیز کے مقابلے کوڈ کی کارکردگی میں 20% اضافہ دکھاتے ہیں، لیکن خود تالیف میں تقریباً 15% زیادہ وقت لگتا ہے۔
  • رن ٹائم میں، آپریٹنگ سسٹم میں فریڈ میموری کو واپس کرنے کی کارکردگی میں اضافہ کیا گیا ہے اور کوڑا اٹھانے والے کے کام کو بہتر بنایا گیا ہے، جس کا رویہ زیادہ قابل قیاس ہو گیا ہے۔
  • نئے پیکجز net/netip اور debug/buildinfo کو معیاری لائبریری میں شامل کر دیا گیا ہے۔ TLS 1.0 اور 1.1 کے لیے سپورٹ کلائنٹ کوڈ میں بطور ڈیفالٹ غیر فعال ہے۔ crypto/x509 ماڈیول نے SHA-1 ہیش کا استعمال کرتے ہوئے دستخط شدہ سرٹیفکیٹس پر کارروائی روک دی ہے۔
  • لینکس میں ماحول کی ضروریات کو بڑھا دیا گیا ہے؛ کام کرنے کے لیے، اب آپ کے پاس کم از کم ورژن 2.6.32 کا لینکس کرنل ہونا ضروری ہے۔ اگلی ریلیز میں، اسی طرح کی تبدیلیاں FreeBSD کے لیے متوقع ہیں (FreeBSD 11.x برانچ کے لیے سپورٹ بند کر دی جائے گی) اور کام کرنے کے لیے کم از کم FreeBSD 12.2 کی ضرورت ہوگی۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں