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

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

زبان کی اہم خصوصیات:

  • اعلی کارکردگی: پراجیکٹ کے کلیدی اہداف میں سے ایک C پروگراموں کے قریب کارکردگی کو حاصل کرنا ہے۔ جولیا کمپائلر LLVM پروجیکٹ کے کام پر مبنی ہے اور بہت سے ٹارگٹ پلیٹ فارمز کے لیے موثر مقامی مشین کوڈ تیار کرتا ہے۔
  • مختلف پروگرامنگ پیراڈیمز کی حمایت کرتا ہے، بشمول آبجیکٹ اورینٹڈ اور فنکشنل پروگرامنگ کے عناصر۔ معیاری لائبریری دیگر چیزوں کے ساتھ ساتھ، غیر مطابقت پذیر I/O، پراسیس کنٹرول، لاگنگ، پروفائلنگ، اور پیکیج مینجمنٹ کے لیے افعال فراہم کرتی ہے۔
  • متحرک ٹائپنگ: زبان کو اسکرپٹنگ پروگرامنگ زبانوں کی طرح متغیر کے لیے اقسام کی واضح تعریف کی ضرورت نہیں ہے۔ انٹرایکٹو موڈ کی حمایت کی؛
  • واضح طور پر اقسام کی وضاحت کرنے کی اختیاری صلاحیت؛
  • عددی کمپیوٹنگ، سائنسی کمپیوٹنگ، مشین لرننگ، اور ڈیٹا ویژولائزیشن کے لیے ایک نحو مثالی ہے۔ کئی عددی ڈیٹا کی اقسام اور حسابات کے متوازی ہونے کے لیے ٹولز کے لیے معاونت۔
  • اضافی تہوں کے بغیر C لائبریریوں سے فنکشنز کو براہ راست کال کرنے کی صلاحیت۔

جولیا 1.8 میں اہم تبدیلیاں:

  • نئی زبان کی خصوصیات
    • تبدیل ہونے والے ڈھانچے کے فیلڈز کو اب مستقل کے طور پر بیان کیا جا سکتا ہے تاکہ انہیں تبدیل ہونے سے روکا جا سکے اور اصلاح کی اجازت دی جا سکے۔
    • قسم کی تشریحات کو عالمی متغیرات میں شامل کیا جا سکتا ہے۔
    • خالی n-جہتی صفوں کو مربع بریکٹ کے اندر ایک سے زیادہ سیمیکولنز کا استعمال کرتے ہوئے بنایا جا سکتا ہے، مثال کے طور پر "[;;;]" ایک 0x0x0 سرنی بناتا ہے۔
    • ٹرائی بلاکس میں اب اختیاری طور پر ایک اور بلاک ہو سکتا ہے، جسے مین باڈی کے فوراً بعد عمل میں لایا جاتا ہے اگر کوئی غلطی نہ کی گئی ہو۔
    • @inline اور @noinline کو ایک فنکشن باڈی کے اندر رکھا جا سکتا ہے، جس سے آپ ایک گمنام فنکشن کی تشریح کر سکتے ہیں۔
    • @inline اور @noinline کو اب کال سائٹ یا بلاک کے کسی فنکشن پر لاگو کیا جا سکتا ہے تاکہ متعلقہ فنکشن کالز کو شامل کیا جائے (یا شامل نہ کیا جائے)۔
    • ∀، ∃ اور ∄ کو بطور شناخت کنندہ حروف کی اجازت ہے۔
    • یونیکوڈ 14.0.0 تفصیلات کے لیے تعاون شامل کیا گیا۔
    • Module(:name, false, false) طریقہ ایک ماڈیول بنانے کے لیے استعمال کیا جا سکتا ہے جس میں نام نہ ہوں، بیس یا کور درآمد نہ ہو، اور اس میں خود کا حوالہ نہ ہو۔
  • زبان میں تبدیلیاں
    • نئے بنائے گئے ٹاسک آبجیکٹ (@spawn، @async، وغیرہ) کے پاس اب تخلیق ہونے پر پیرنٹ ٹاسک کے طریقوں کے لیے world_age ہے، جس سے آپٹمائزڈ عمل درآمد کی اجازت ملتی ہے۔ پچھلا ایکٹیویشن آپشن Base.invokelatest طریقہ استعمال کرتے ہوئے دستیاب ہے۔
    • انجیکشن سے بچنے کے لیے اب تاروں اور تبصروں میں یونیکوڈ غیر متوازن دو طرفہ فارمیٹنگ کی ہدایات ممنوع ہیں۔
    • Base.ifelse کو اب بلٹ ان کے بجائے ایک عام فنکشن کے طور پر بیان کیا گیا ہے، جس سے پیکجوں کو اس کی تعریف میں توسیع کی اجازت ملتی ہے۔
    • عالمی متغیر کی ہر اسائنمنٹ اب سب سے پہلے کنورٹ (Any, x) یا کنورٹ (T, x) کے لیے کال سے گزرتی ہے اگر عالمی متغیر کو T قسم کا قرار دیا گیا تھا۔ , x) === x ہمیشہ سچ ہوتا ہے، ورنہ یہ غیر متوقع رویے کا باعث بن سکتا ہے۔
    • بلٹ ان فنکشنز اب عام فنکشنز سے ملتے جلتے ہیں اور طریقوں کا استعمال کرتے ہوئے پروگرام کے لحاظ سے شمار کیا جا سکتا ہے۔
  • کمپائلر/رن ٹائم بہتری
    • بوٹ ٹائم تقریباً 25% کم ہو گیا۔
    • LLVM پر مبنی کمپائلر کو رن ٹائم لائبریری سے ایک نئی لائبریری، libjulia-codegen میں الگ کر دیا گیا ہے۔ یہ بطور ڈیفالٹ لوڈ ہوتا ہے، اس لیے عام استعمال کے دوران کوئی تبدیلی نہیں ہونی چاہیے۔ ایسی تعیناتیوں میں جنہیں کمپائلر کی ضرورت نہیں ہوتی ہے (مثال کے طور پر، سسٹم کی تصاویر جن میں تمام ضروری کوڈ پہلے سے مرتب کیے گئے ہیں)، اس لائبریری (اور اس کی LLVM انحصار) کو آسانی سے چھوڑا جا سکتا ہے۔
    • مشروط قسم کا اندازہ اب ایک طریقہ کو دلیل دے کر ممکن ہے۔ مثال کے طور پر، Base.ifelse(isa(x, Int), x, 0) کے لیے ::Int واپس آتا ہے چاہے x کی قسم نامعلوم ہو۔
    • SROA (مجموعات کی اسکیلر تبدیلی) کو بہتر بنایا گیا ہے: مستقل عالمی فیلڈز کے ساتھ گیٹ فیلڈ کالز کو ختم کرتا ہے، غیر شروع کیے گئے فیلڈز کے ساتھ تبدیل ہونے والے ڈھانچے کو ختم کرتا ہے، نیسٹڈ گیٹ فیلڈ کالز کی کارکردگی اور ہینڈلنگ کو بہتر بناتا ہے۔
    • ٹائپ انفرنس مختلف اثرات کو ٹریک کرتا ہے—سائیڈ ایفیکٹس اور نان گراونگ۔ مسلسل پھیلاؤ کو مدنظر رکھا جاتا ہے، جو مرتب وقت کی کارکردگی کو نمایاں طور پر بہتر بناتا ہے۔ کچھ صورتوں میں، مثال کے طور پر، ایسے فنکشنز کی کالز جو ان لائن نہیں ہو سکتیں لیکن نتیجہ کو متاثر نہیں کرتی ہیں، رن ٹائم کے وقت رد کر دی جائیں گی۔ Base.@assume_effects میکرو کا استعمال کرتے ہوئے اثرات کے قواعد کو دستی طور پر اوور رائٹ کیا جا سکتا ہے۔
    • Precompilation (واضح precompilation ہدایات یا مخصوص کام کے بوجھ کے ساتھ) اب زیادہ قسم کے متعین کوڈ کو محفوظ کرتا ہے، جس کے نتیجے میں پہلی بار تیزی سے عمل درآمد ہوتا ہے۔ آپ کے پیکج کے لیے درکار کوئی بھی نیا طریقہ/قسم کے امتزاج، قطع نظر اس کے کہ ان طریقوں کی وضاحت کہاں کی گئی ہے، اب پری کمپائلیشن فائل میں کیش کیا جا سکتا ہے اگر وہ آپ کے پیکج سے تعلق رکھنے والے کسی طریقہ سے بلائے جائیں۔
  • کمانڈ لائن کے اختیارات میں تبدیلیاں
    • @inbounds کے اعلانات کی نگرانی کے لیے پہلے سے طے شدہ رویہ اب "--check-bounds=yes|no|auto" میں آٹو آپشن ہے۔
    • سسٹم امیج بناتے وقت ڈاکسٹرنگز، سورس لوکیشن کی معلومات، اور مقامی متغیر ناموں کو ہٹانے کے لیے نیا "--strip-metadata" اختیار۔
    • نیا آپشن "-strip-ir" کمپائلر کو سسٹم امیج بناتے وقت انٹرمیڈیٹ سورس کوڈ کی نمائندگی کو ہٹانے کی اجازت دیتا ہے۔ نتیجے میں آنے والی تصویر صرف اس صورت میں کام کرے گی جب "--compile=all" استعمال کیا جائے یا تمام مطلوبہ کوڈ پہلے سے مرتب کیا گیا ہو۔
    • اگر فائل کے نام کے بجائے "-" کیریکٹر بیان کیا گیا ہے، تو پھر قابل عمل کوڈ معیاری ان پٹ اسٹریم سے پڑھا جاتا ہے۔
  • ملٹی تھریڈنگ سپورٹ میں تبدیلیاں
    • Threads.@threads بذریعہ ڈیفالٹ نیا شیڈیولنگ آپشن استعمال کرتا ہے :dynamic، جو کہ پچھلے موڈ سے مختلف ہے کہ اعادہ ہر تھریڈ کو تفویض کیے جانے کی بجائے دستیاب ورکر تھریڈز میں متحرک طور پر شیڈول کیا جائے گا۔ یہ موڈ @spawn اور @threads کے ساتھ نیسٹڈ لوپس کی بہتر تقسیم کی اجازت دیتا ہے۔
  • لائبریری کے نئے افعال
    • eachsplit(str) split(str) کو متعدد بار انجام دینے کے لیے۔
    • allequal(itr) یہ جانچنے کے لیے کہ آیا ایک اٹیریٹر کے تمام عناصر برابر ہیں۔
    • ہارڈ لنک (src، dst) کو ہارڈ لنکس بنانے کے لیے استعمال کیا جا سکتا ہے۔
    • setcpuaffinity(cmd, cpus) پروسیسر کور کی وابستگی کو شروع کیے گئے عمل سے متعین کرنے کے لیے۔
    • diskstat(path=pwd()) ڈسک کے اعدادوشمار حاصل کرنے کے لیے۔
    • نیا @showtime میکرو جس کا جائزہ لیا جا رہا ہے اور @time رپورٹ دونوں کو ظاہر کرنے کے لیے۔
    • LazyString اور lazy "str" ​​میکرو کو خرابی کے راستوں میں خرابی کے پیغامات کی سست تعمیر میں مدد کے لیے شامل کیا گیا ہے۔
    • Dict اور دیگر اخذ کردہ اشیاء جیسے کیز(::Dict)، ویلیوز(::Dict) اور سیٹ میں ہم آہنگی کا مسئلہ طے کیا۔ تکرار کے طریقوں کو اب لغت یا سیٹ پر بلایا جا سکتا ہے، جب تک کہ لغت یا سیٹ میں ترمیم کرنے والی کوئی کال نہ ہو۔
    • @time اور @timev کے پاس اب ایک اختیاری تفصیل ہے، جو آپ کو وقت کی رپورٹوں کے ماخذ کی تشریح کرنے کی اجازت دیتی ہے، مثال کے طور پر۔ @time "Evaluating foo" foo()۔
    • رینج یا تو سٹاپ یا لمبائی کو اپنی واحد کلیدی لفظ دلیل کے طور پر لیتی ہے۔
    • precision اور setprecision اب بنیاد کو کلیدی لفظ کے طور پر قبول کرتے ہیں۔
    • TCP ساکٹ آبجیکٹ اب ایک کلوز رائٹ طریقہ فراہم کرتے ہیں اور ہاف اوپن موڈ کے استعمال کی حمایت کرتے ہیں۔
    • extrema اب ایک init دلیل کو قبول کرتا ہے۔
    • Iterators.countfrom اب کسی بھی قسم کو قبول کرتا ہے جو + طریقہ کی وضاحت کرتا ہے۔
    • @time اب تبدیل شدہ اقسام کے ساتھ دوبارہ مرتب کرنے میں گزارے گئے وقت کا % مختص کرتا ہے۔
  • معیاری لائبریری تبدیلیاں
    • قدر والی کلیدیں اب addenv میں ماحول سے کچھ بھی نہیں ہٹایا گیا ہے۔
    • Iterators.reverse (اور اس وجہ سے آخری) ہر لائن کو سپورٹ کرتا ہے۔
    • مخصوص اقسام کی رینجز کے لیے لمبائی کا فنکشن اب انٹیجر اوور فلو کی جانچ نہیں کرتا ہے۔ ایک نیا فنکشن، checked_length، دستیاب ہے؛ اس میں بٹ ٹرانسفر کنٹرول منطق شامل ہے۔ اگر ضروری ہو تو، رینج کی قسم بنانے کے لیے SaferIntegers.jl استعمال کریں۔
    • Iterators.Reverse iterator اگر ممکن ہو تو ہر ایک انڈیکس ریورسل کو لاگو کرتا ہے۔
  • پیکیج مینیجر
    • نئے ⌃ اور ⌅ اشارے "pkg>" اسٹیٹس میں پیکیجز کے آگے جن کے لیے نئے ورژن دستیاب ہیں۔ ⌅ اشارہ کرتا ہے کہ نئے ورژن انسٹال نہیں کیے جا سکتے۔
    • پچھلے ورژن کے پیکجز کے بارے میں معلومات دکھانے کے لیے Pkg.status (--outdated یا -o REPL موڈ میں) پر نیا پرانا::بول دلیل۔
    • New compat::Bool argument to Pkg.status (--compat یا -c REPL موڈ میں) Project.toml میں کسی بھی [compat] اندراجات کو دکھانے کے لیے۔
    • پروجیکٹ کی مطابقت کے اندراجات کو ترتیب دینے کے لیے نیا "pkg>compat" (اور Pkg.compat) موڈ۔ "pkg>compat" کے ذریعے ایک انٹرایکٹو ایڈیٹر فراہم کرتا ہے یا "pkg>Foo 0.4,0.5" کے ذریعے براہ راست ریکارڈ کنٹرول فراہم کرتا ہے، جو موجودہ ریکارڈز کو ٹیب کی تکمیل کے ذریعے لوڈ کر سکتا ہے۔ یعنی "pkg> compat Fo" خود بخود "pkg> Foo 0.4,0.5" میں اپ ڈیٹ ہوجاتا ہے تاکہ موجودہ اندراج میں ترمیم کی جاسکے۔
    • Pkg اب صرف پیکیج سرور سے پیکجز ڈاؤن لوڈ کرنے کی کوشش کرتا ہے اگر سرور پیکیج پر مشتمل رجسٹری کی نگرانی کر رہا ہو۔
    • Pkg.instantiate اب ایک انتباہ جاری کرے گا جب Project.toml Manifest.toml کے ساتھ مطابقت پذیر نہیں ہے۔ یہ اسے حل کرتے وقت مینی فیسٹ میں پروجیکٹ کے ڈیپس اور کمپیٹ ریکارڈز (دیگر فیلڈز کو نظر انداز کر دیا جاتا ہے) کی ہیش کی بنیاد پر کرتا ہے، تاکہ Project.toml ڈیپس یا کمپیٹ ریکارڈز میں کسی بھی تبدیلی کو دوبارہ حل کیے بغیر پتہ چل سکے۔
    • اگر "pkg>add" کو دیئے گئے نام کے ساتھ کوئی پیکج نہیں مل سکتا ہے، تو یہ اب ملتے جلتے ناموں کے پیکجز تجویز کرے گا جنہیں شامل کیا جا سکتا ہے۔
    • مینی فیسٹ میں محفوظ کردہ جولیا کے ورژن میں اب بلڈ نمبر شامل نہیں ہے، یعنی ماسٹر کو اب 1.9.0-DEV لکھا جائے گا۔
    • ٹیسٹ ابورٹ "pkg>" کا اب مزید مستقل طور پر پتہ لگایا جائے گا، اور اسے صحیح طریقے سے REPL میں واپس کر دیا جائے گا۔
  • انٹرایکٹو یوٹیلز
    • نیا @time_imports میکرو درآمدات کے فیصد کے طور پر مرتب کرنے اور دوبارہ مرتب کرنے کے وقت کو نمایاں کرتے ہوئے پیکیجز اور ان کے انحصار کو درآمد کرنے میں گزارے گئے وقت کی اطلاع دینے کے لیے۔
  • لکیری الجبرا
    • BLAS ذیلی ماڈیول اب لیول-2 BLAS spr! فنکشنز کو سپورٹ کرتا ہے۔
    • LinearAlgebra.jl معیاری لائبریری اب SparseArrays.jl سے مکمل طور پر آزاد ہے، ماخذ کوڈ اور یونٹ ٹیسٹنگ کے نقطہ نظر سے۔ نتیجے کے طور پر، بیس یا لکیری الجبرا آبجیکٹ پر لاگو ہونے والے LinearAlgebra کے طریقوں سے ویرل صفوں کو اب واپس نہیں کیا جاتا ہے۔ خاص طور پر، یہ مندرجہ ذیل بریکنگ تبدیلیوں کی طرف جاتا ہے:
      • خصوصی "ویرل" میٹرکس (مثلاً اخترن) کا استعمال کرتے ہوئے کنکٹیشنز اب گھنے میٹرکس واپس کرتے ہیں۔ نتیجے کے طور پر، گیٹ پراپرٹی کالز کے ذریعے تخلیق کردہ SVD آبجیکٹ کے D1 اور D2 فیلڈز اب گھنے میٹرکس ہیں۔
      • ملتے جلتے (::SpecialSparseMatrix, ::Type, ::Dims) طریقہ ایک گھنے null میٹرکس لوٹاتا ہے۔ نتیجے کے طور پر، ایک دوسرے کے ساتھ دو-، تین-، اور ہم آہنگی سہ رخی میٹرکس کی مصنوعات ایک گھنے میٹرکس کی تخلیق کا باعث بنتی ہیں۔ مزید برآں، (غیر جامد) میٹرکس سے خصوصی "اسپارس" میٹرکس سے تین دلائل کے ساتھ ملتے جلتے میٹرکس بنانا اب "zero(::Type{Matrix{T}})" کی وجہ سے ناکام ہوجاتا ہے۔
  • پرنٹ ایف
    • %s اور %c اب چوڑائی کو فارمیٹ کرنے کے لیے ٹیکسٹ وڈتھ دلیل کا استعمال کرتے ہیں۔
  • پروفائل
    • CPU لوڈ پروفائلنگ اب میٹا ڈیٹا بشمول تھریڈز اور ٹاسک کو ریکارڈ کرتی ہے۔ Profile.print() میں ایک نیا گروپ بائی آرگیومنٹ ہے جو آپ کو فلٹرنگ فراہم کرنے کے لیے تھریڈز، ٹاسک یا ذیلی تھریڈز/ٹاسک، ٹاسک/تھریڈز، اور تھریڈز اور ٹاسک آرگیومنٹس کو گروپ کرنے کی اجازت دیتا ہے۔ مزید برآں، استعمال کا فیصد اب یا تو مجموعی طور پر یا فی تھریڈ کے طور پر رپورٹ کیا جاتا ہے، اس بات پر منحصر ہے کہ آیا ہر نمونے میں تھریڈ بیکار ہے یا نہیں۔ Profile.fetch() میں نیا میٹا ڈیٹا بطور ڈیفالٹ شامل ہوتا ہے۔ پروفائلنگ ڈیٹا کے بیرونی صارفین کے ساتھ پسماندہ مطابقت کے لیے، اسے include_meta=false پاس کر کے خارج کیا جا سکتا ہے۔
    • نیا Profile.Alocs ماڈیول آپ کو میموری مختص کرنے کی اجازت دیتا ہے۔ ہر میموری ایلوکیشن کی قسم اور سائز کا ایک اسٹیک ٹریس ریکارڈ کیا جاتا ہے، اور نمونہ_ریٹ دلیل کارکردگی کو کم کرتے ہوئے مختص کی ایک قابل ترتیب تعداد کو چھوڑنے کی اجازت دیتا ہے۔
    • مقررہ دورانیہ کی CPU پروفائلنگ اب صارف چلا سکتا ہے جب کہ پہلے پروفائل لوڈ کیے بغیر ٹاسک چل رہے ہوں گے، اور چلتے وقت رپورٹ دکھائی جائے گی۔ MacOS اور FreeBSD پر، ctrl-t دبائیں یا SIGINFO کو کال کریں۔ دوسرے پلیٹ فارمز کے لیے، SIGUSR1 کو فعال کریں، یعنی % قتل -USR1 $julia_pid۔ یہ ونڈوز پر دستیاب نہیں ہے۔
  • REPL
    • ریڈیو مینو اب اختیارات کے براہ راست انتخاب کے لیے اضافی کی بورڈ شارٹ کٹس کو سپورٹ کرتا ہے۔
    • ترتیب "?(x, y" کے بعد TAB کو دبانے سے وہ تمام طریقے دکھائے جاتے ہیں جنہیں x, y, .... دلائل کے ساتھ کال کیا جا سکتا ہے) (ایک اہم جگہ آپ کو مدد کے موڈ میں داخل ہونے سے روکتی ہے۔) "MyModule.?(x, y " تلاش کو "MyModule" تک محدود کرتا ہے۔ TAB کو دبانے کے لیے ضروری ہے کہ کم از کم ایک دلیل کسی سے زیادہ مخصوص ہو۔ یا کسی بھی مطابقت پذیر طریقوں کی اجازت دینے کے لیے TAB کے بجائے SHIFT-TAB استعمال کریں۔
    • نئی عالمی متغیر غلطی آپ کو تازہ ترین استثنا حاصل کرنے کی اجازت دیتی ہے، جیسا کہ آخری جواب کے ساتھ جوابات کے برتاؤ کی طرح ہے۔ غلطی درج کرنے سے استثنیٰ کی معلومات دوبارہ پرنٹ ہوجاتی ہیں۔
  • SparseArrays
    • SparseArrays کوڈ کو جولیا ریپوزٹری سے بیرونی SparseArrays.jl ریپوزٹری میں منتقل کر دیا۔
    • نئے کنکٹنیشن فنکشنز sparse_hcat، sparse_vcat، اور sparse_hvcat ان پٹ آرگیومینٹس کی قسموں سے قطع نظر ایک SparseMatrixCSC قسم واپس کرتے ہیں۔ یہ LinearAlgebra.jl اور SparseArrays.jl کوڈ کو الگ کرنے کے بعد gluing میٹرکس کے طریقہ کار کو یکجا کرنے کے لیے ضروری ہو گیا۔
  • لاگنگ
    • معیاری لاگنگ لیول BelowMinLevel, Debug, Info, Warn, Error اور AboveMaxLevel کو اب معیاری لاگنگ لائبریری سے برآمد کیا جاتا ہے۔
  • یونیکوڈ۔
    • واضح طور پر نارملائزڈ سٹرنگز بنائے بغیر یونیکوڈ مساوی کی جانچ کرنے کے لیے isequal_normalized فنکشن شامل کیا گیا۔
    • Unicode.normalize فنکشن اب چارٹ ٹرانسفارم کلیدی لفظ کو قبول کرتا ہے، جسے حسب ضرورت کریکٹر میپنگ فراہم کرنے کے لیے استعمال کیا جا سکتا ہے، اور Unicode.julia_chartransform فنکشن بھی اس میپنگ کو دوبارہ پیش کرنے کے لیے فراہم کیا جاتا ہے جب جولیا پارسر شناخت کنندگان کو معمول پر لاتا ہے۔
  • ٹیسٹ
    • '@test_throws "some message" triggers_error()' اب یہ جانچنے کے لیے استعمال کیا جا سکتا ہے کہ آیا ظاہر کردہ غلطی کے متن میں "کچھ پیغام" کی خرابی ہے، قطع نظر مخصوص استثناء کی قسم۔ ریگولر ایکسپریشنز، سٹرنگ لسٹ، اور مماثل فنکشنز بھی معاون ہیں۔
    • @testset foo() اب کسی دیئے گئے فنکشن سے ٹیسٹ سیٹ بنانے کے لیے استعمال کیا جا سکتا ہے۔ ٹیسٹ کیس کا نام اس فنکشن کا نام ہے جسے بلایا جا رہا ہے۔ کال شدہ فنکشن میں @test اور دیگر @testset تعریفیں شامل ہو سکتی ہیں، بشمول دوسرے فنکشنز کے لیے کالز کے لیے، تمام انٹرمیڈیٹ ٹیسٹ کے نتائج کو ریکارڈ کرتے وقت۔
    • TestLogger اور LogRecord اب معیاری ٹیسٹ لائبریری سے برآمد کیے گئے ہیں۔
  • ڈسٹریبیوٹڈ
    • SSHManager اب addprocs() طریقہ اور shell=:csh پیرامیٹر کے ذریعے csh/tcsh ریپر کے ساتھ ورکر تھریڈز کو سپورٹ کرتا ہے۔
  • دیگر تبدیلیاں۔
    • GC.enable_logging(true) کا استعمال ہر کوڑا اٹھانے کے آپریشن کو جمع کرنے کے وقت اور میموری کی مقدار کے ساتھ لاگ ان کرنے کے لیے کیا جا سکتا ہے۔

ماخذ: opennet.ru

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