کرسٹل پروگرامنگ زبان کی ریلیز 1.5

کرسٹل 1.5 پروگرامنگ لینگویج کی ریلیز شائع ہو چکی ہے، جس کے ڈویلپرز روبی لینگویج میں ترقی کی سہولت کو سی لینگویج کی اعلیٰ ایپلی کیشن کارکردگی کی خصوصیت کے ساتھ جوڑنے کی کوشش کر رہے ہیں۔ کرسٹل کا نحو روبی کے قریب ہے، لیکن مکمل طور پر مطابقت نہیں رکھتا، حالانکہ روبی کے کچھ پروگرام بغیر کسی ترمیم کے چلتے ہیں۔ کمپائلر کوڈ کرسٹل میں لکھا گیا ہے اور اپاچی 2.0 لائسنس کے تحت تقسیم کیا گیا ہے۔

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

معیاری لائبریری عام افعال کا ایک بڑا مجموعہ فراہم کرتی ہے، بشمول CSV، YAML، اور JSON کی پروسیسنگ کے لیے ٹولز، HTTP سرورز بنانے کے لیے اجزاء، اور WebSocket سپورٹ۔ ترقی کے عمل کے دوران، "کرسٹل پلے" کمانڈ کا استعمال کرنا آسان ہے، جو کرسٹل زبان میں کوڈ کے انٹرایکٹو عمل کے لیے ایک ویب انٹرفیس (لوکل ہوسٹ: 8080 بذریعہ ڈیفالٹ) تیار کرتا ہے۔

اہم تبدیلیاں:

  • مرتب کرنے والے نے تجریدی طریقہ کے نفاذ اور اس کی تعریف میں دلیل کے ناموں کی خط و کتابت کے لیے ایک چیک شامل کیا ہے۔ اگر نام سے مماثلت نہیں ہے تو، اب وارننگ جاری کی جاتی ہے: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name: Int32) : Nil ^— انتباہ: پوزیشنل پیرامیٹر 'نام' اوور رائیڈڈ طریقہ کے پیرامیٹر 'نمبر' کے مساوی ہے FooAbstract#foo(number: Int32)، جس کا نام مختلف ہے اور نامی دلیل گزرنے کو متاثر کر سکتا ہے۔
  • کسی متغیر کی قدر کے لیے کسی غیر ٹائپ شدہ طریقہ کو دلیل تفویض کرتے وقت، دلیل اب اس متغیر کی قسم تک محدود ہے۔ کلاس Foo @x : Int64 def initialize(x) @x = x # پیرامیٹر x ٹائپ کیا جائے گا @x end end
  • آپ کو طریقوں یا میکروز کے پیرامیٹرز میں تشریحات شامل کرنے کی اجازت دیتا ہے۔ def foo(@[MaybeUused] x)؛ اختتام # ٹھیک ہے۔
  • ٹیپلز میں انڈیکس اور ناموں کے بطور مستقل استعمال کرنے کے لئے تعاون شامل کیا گیا۔ KEY = "s" foo = {s: "String", n: 0} foo[KEY].size رکھتا ہے
  • فائلوں اور ڈائریکٹریز کو حذف کرنے کے لیے فائل API میں نئے File#delete? طریقے شامل کیے گئے ہیں۔ اور Dir#delete؟، جو فائل یا ڈائرکٹری غائب ہونے کی صورت میں غلط لوٹاتا ہے۔
  • File.tempfile طریقہ کے تحفظ کو مضبوط کیا گیا ہے، جو اب فائل کا نام بنانے والی لائنوں میں null حروف کی اجازت نہیں دیتا ہے۔
  • ماحولیاتی متغیر NO_COLOR شامل کیا گیا، جو کمپائلر اور انٹرپریٹر آؤٹ پٹ میں کلر ہائی لائٹنگ کو غیر فعال کر دیتا ہے۔
  • مترجم موڈ میں کام کو نمایاں طور پر بہتر کیا گیا ہے۔

ماخذ: opennet.ru

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