ڈارٹ 2.15 پروگرامنگ لینگویج اور فلٹر 2.8 فریم ورک دستیاب ہے۔

گوگل نے ڈارٹ 2.15 پروگرامنگ لینگویج کی ریلیز کو شائع کیا ہے، جو ڈارٹ 2 کی بنیادی طور پر دوبارہ ڈیزائن کی گئی برانچ کی ترقی کو جاری رکھے ہوئے ہے، جو مضبوط جامد ٹائپنگ کے استعمال سے ڈارٹ زبان کے اصل ورژن سے مختلف ہے (قسم کا خود بخود اندازہ لگایا جا سکتا ہے، لہذا قسموں کی وضاحت ضروری نہیں ہے، لیکن ڈائنامک ٹائپنگ کا اب استعمال نہیں کیا جاتا ہے اور ابتدائی طور پر قسم کو متغیر کو تفویض کیا جاتا ہے اور بعد میں سخت قسم کی جانچ کا اطلاق ہوتا ہے)۔

ڈارٹ زبان کی خصوصیات:

  • واقف اور سیکھنے میں آسان نحو، جاوا اسکرپٹ، سی اور جاوا پروگرامرز کے لیے قدرتی۔
  • تمام جدید ویب براؤزرز اور مختلف قسم کے ماحول کے لیے تیز رفتار لانچ اور اعلی کارکردگی کو یقینی بنانا، پورٹیبل ڈیوائسز سے لے کر طاقتور سرورز تک۔
  • کلاسز اور انٹرفیس کی وضاحت کرنے کی اہلیت جو موجودہ طریقوں اور ڈیٹا کو encapsulation اور دوبارہ استعمال کرنے کی اجازت دیتی ہے۔
  • قسموں کی وضاحت کرنے سے غلطیوں کو ڈیبگ کرنا اور ان کی شناخت کرنا آسان ہو جاتا ہے، کوڈ کو واضح اور زیادہ پڑھنے کے قابل بناتا ہے، اور فریق ثالث کے ڈویلپرز کے ذریعے اس کی ترمیم اور تجزیہ کو آسان بناتا ہے۔
  • تائید شدہ اقسام میں شامل ہیں: مختلف قسم کے ہیشز، ارے اور فہرستیں، قطاریں، عددی اور سٹرنگ کی اقسام، تاریخ اور وقت کے تعین کے لیے اقسام، ریگولر ایکسپریشنز (RegExp)۔ آپ کی اپنی قسمیں بنانا ممکن ہے۔
  • متوازی عمل کو منظم کرنے کے لیے، الگ تھلگ وصف کے ساتھ کلاسز کا استعمال کرنے کی تجویز ہے، جس کا کوڈ مکمل طور پر الگ الگ میموری ایریا میں الگ تھلگ جگہ پر لاگو ہوتا ہے، پیغامات بھیج کر مرکزی عمل کے ساتھ تعامل کرتا ہے۔
  • لائبریریوں کے استعمال کے لیے سپورٹ جو بڑے ویب پروجیکٹس کی سپورٹ اور ڈیبگنگ کو آسان بناتی ہے۔ تیسرے فریق کے افعال کے نفاذ کو مشترکہ لائبریریوں کی شکل میں شامل کیا جا سکتا ہے۔ درخواستوں کو حصوں میں تقسیم کیا جا سکتا ہے اور ہر حصے کی ترقی کو پروگرامرز کی ایک الگ ٹیم کے سپرد کیا جا سکتا ہے۔
  • ڈارٹ زبان میں ترقی کو سپورٹ کرنے کے لیے تیار کردہ ٹولز کا ایک سیٹ، بشمول ڈائنامک ڈیولپمنٹ کا نفاذ اور کوڈ کی اصلاح کے ساتھ ڈیبگنگ ٹولز ("ترمیم کریں اور جاری رکھیں")۔
  • ڈارٹ زبان میں ترقی کو آسان بنانے کے لیے، یہ ایک SDK، ایک پیکیج مینیجر پب، ایک جامد کوڈ تجزیہ کار dart_analyzer، لائبریریوں کا ایک سیٹ، ایک مربوط ترقیاتی ماحول DartPad اور IntelliJ IDEA، WebStorm، Emacs، Sublime Text کے لیے Dart-enabled پلگ ان کے ساتھ آتا ہے۔ 2 اور ویم۔
  • لائبریریوں اور افادیت کے ساتھ اضافی پیکجز پب ریپوزٹری کے ذریعے تقسیم کیے جاتے ہیں، جس میں تقریباً 22 ہزار پیکجز ہیں۔

ڈارٹ 2.15 ریلیز میں اہم تبدیلیاں:

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

    Dart 2.15 نے ایک نیا تصور متعارف کرایا ہے - الگ تھلگ بلاک گروپس (آسولیٹ گروپس)، جو آپ کو الگ تھلگ بلاکس میں مختلف داخلی ڈیٹا ڈھانچے تک مشترکہ رسائی کو منظم کرنے کی اجازت دیتا ہے جو ایک ہی گروپ کا حصہ ہیں، جو گروپ میں ہینڈلرز کے درمیان بات چیت کرتے وقت اوور ہیڈ کو نمایاں طور پر کم کر سکتا ہے۔ . مثال کے طور پر، موجودہ گروپ میں ایک اضافی الگ تھلگ بلاک شروع کرنا 100 گنا تیز ہے اور پروگرام کے ڈیٹا ڈھانچے کو شروع کرنے کی ضرورت کے خاتمے کی وجہ سے، الگ الگ الگ تھلگ بلاک شروع کرنے کے مقابلے میں 10-100 گنا کم میموری کی ضرورت ہوتی ہے۔

    اس حقیقت کے باوجود کہ گروپ میں الگ تھلگ بلاکس اب بھی متغیر اشیاء تک مشترکہ رسائی پر پابندی لگاتے ہیں، گروپس مشترکہ ہیپ میموری کا استعمال کرتے ہیں، جو وسائل کے لحاظ سے کاپی آپریشنز کرنے کی ضرورت کے بغیر ایک بلاک سے دوسرے بلاک میں اشیاء کی منتقلی کو نمایاں طور پر تیز کر سکتی ہے۔ نیا ورژن آپ کو Isolate.exit() کو کال کرتے وقت ہینڈلر کا نتیجہ پاس کرنے کی اجازت دیتا ہے تاکہ ڈیٹا کو پیرنٹ آئسولیٹ بلاک میں نقل کیے بغیر منتقل کیا جا سکے۔ اس کے علاوہ، پیغام کی ترسیل کے طریقہ کار کو بہتر بنایا گیا ہے - چھوٹے اور درمیانے درجے کے پیغامات اب تقریباً 8 گنا تیزی سے پروسیس ہوتے ہیں۔ ایسی اشیاء جو SendPort.send() کال کا استعمال کرتے ہوئے الگ تھلگ کے درمیان منتقل کی جا سکتی ہیں ان میں کچھ قسم کے فنکشنز، بندش اور اسٹیک ٹریس شامل ہیں۔

  • دیگر اشیاء (ٹیر آف) میں انفرادی فنکشنز کے لیے پوائنٹرز بنانے کے ٹولز میں، کنسٹرکٹر کوڈ میں ملتے جلتے پوائنٹرز بنانے پر پابندیاں ہٹا دی گئی ہیں، جو فلٹر لائبریری پر مبنی انٹرفیس بناتے وقت کارآمد ثابت ہو سکتی ہیں۔ مثال کے طور پر، ایک کالم ویجیٹ بنانے کے لیے جس میں متعدد ٹیکسٹ ویجٹ شامل ہوں، آپ ".map()" کو کال کر سکتے ہیں اور ٹیکسٹ آبجیکٹ کے Text.new کنسٹرکٹر کو پوائنٹر دے سکتے ہیں: کلاس FruitWidget نے Stateless Widget { @override Widget build(BuildContext context) { واپسی کالم (بچے: ['ایپل'، 'اورنج']. نقشہ ( متن. نیا ). فہرست () )؛ } }
  • فنکشن پوائنٹرز کے استعمال سے وابستہ امکانات کو بڑھا دیا گیا ہے۔ ایک غیر عام طریقہ اور پوائنٹر بنانے کے لیے عام طریقوں اور فنکشن پوائنٹرز کو استعمال کرنے کی صلاحیت شامل کی گئی: T id (T قدر) => قدر؛ var intId = id ; // "int Function(int) intId = id؛" کے بجائے ورژن 2.15 میں اجازت دی گئی const fo = id؛ // فنکشن آئی ڈی پر پوائنٹر۔ const c1 = fo ;
  • dart:core لائبریری نے enums کے لیے سپورٹ کو بہتر بنایا ہے، مثال کے طور پر، اب آپ ".name" طریقہ کا استعمال کرتے ہوئے ہر اینوم ویلیو سے سٹرنگ ویلیو آؤٹ پٹ کر سکتے ہیں، نام کے لحاظ سے ویلیوز کو منتخب کر سکتے ہیں، یا اقدار کے جوڑوں کو میچ کر سکتے ہیں: enum MyEnum { one , two, three } void main() { print(MyEnum.one.name); // "ایک" پرنٹ کیا جائے گا۔ print(MyEnum.values.byName('two') == MyEnum.two)؛ // "سچ" پرنٹ کیا جائے گا۔ حتمی نقشہ = MyEnum.values.asNameMap()؛ print(map['three'] == MyEnum.three)؛ // "سچ"۔ }
  • ایک پوائنٹر کمپریشن تکنیک کو لاگو کیا گیا ہے جو 64 بٹ ماحول میں پوائنٹرز کی زیادہ کمپیکٹ نمائندگی کے استعمال کی اجازت دیتا ہے اگر ایڈریسنگ کے لیے 32 بٹ ایڈریس اسپیس کافی ہے (4 جی بی سے زیادہ میموری استعمال نہیں کی جاتی ہے)۔ ٹیسٹ سے پتہ چلتا ہے کہ اس طرح کی اصلاح سے ہیپ کے سائز کو تقریباً 10% کم کرنا ممکن ہو جاتا ہے۔ فلٹر SDK میں، نیا موڈ پہلے سے ہی اینڈرائیڈ کے لیے بطور ڈیفالٹ فعال ہے، اور مستقبل کی ریلیز میں اسے iOS کے لیے فعال کرنے کا منصوبہ ہے۔
  • ڈارٹ SDK میں ڈیبگنگ اور کارکردگی کے تجزیہ (DevTools) کے ٹولز شامل ہیں، جو پہلے ایک علیحدہ پیکیج میں فراہم کیے گئے تھے۔
  • ٹولز کو "dart pub" کمانڈ اور pub.dev پیکیج ریپوزٹریز میں شامل کیا گیا ہے تاکہ خفیہ معلومات کی حادثاتی اشاعت کو ٹریک کیا جا سکے، مثال کے طور پر، پیکیج کے اندر مسلسل انضمام کے نظام اور کلاؤڈ ماحول کے لیے اسناد کو چھوڑنا۔ اگر اس طرح کے لیکس کا پتہ چل جاتا ہے تو، "ڈارٹ پب پبلش" کمانڈ کے عمل میں خرابی کے پیغام کے ساتھ خلل پڑ جائے گا۔ اگر کوئی غلط مثبت تھا، تو سفید فہرست کے ذریعے چیک کو نظرانداز کرنا ممکن ہے۔
  • ایک پیکیج کے پہلے سے شائع شدہ ورژن کو منسوخ کرنے کی صلاحیت pub.dev ذخیرہ میں شامل کی گئی ہے، مثال کے طور پر، اگر خطرناک غلطیاں یا کمزوریاں دریافت ہوتی ہیں۔ اس سے پہلے، اس طرح کی تصحیح کے لیے، ایک اصلاحی ورژن شائع کرنے کا رواج تھا، لیکن کچھ حالات میں موجودہ ریلیز کو منسوخ کرنا اور اس کی مزید تقسیم کو فوری طور پر روکنا ضروری ہے (مثال کے طور پر، اگر تصحیح ابھی تک تیار نہیں ہے یا اگر مکمل ریلیز کی گئی تھی۔ ٹیسٹ ورژن کی بجائے غلطی سے شائع ہوا)۔ منسوخی کے بعد، پیکج کو "پب گیٹ" اور "پب اپ گریڈ" کمانڈز میں مزید شناخت نہیں کیا جاتا ہے، اور ان سسٹمز پر جو اسے پہلے ہی انسٹال کر چکے ہیں، اگلی بار "پب گیٹ" کے عمل میں آنے پر ایک خصوصی وارننگ جاری کی جاتی ہے۔
  • ڈسپلے آرڈر کو تبدیل کرنے والے کوڈ میں یونیکوڈ حروف کے استعمال سے پیدا ہونے والے خطرے (CVE-2021-22567) کے خلاف تحفظ میں اضافہ کیا گیا ہے۔
  • ایک کمزوری (CVE-2021-22568) کو درست کیا گیا ہے جو آپ کو کسی دوسرے pub.dev صارف کی نقالی کرنے کی اجازت دیتا ہے جب ایک تیسرے فریق سرور پر پیکجز شائع کرتے ہیں جو pub.dev oauth2 رسائی ٹوکنز کو قبول کرتا ہے۔ مثال کے طور پر، کمزوری کا استعمال اندرونی اور کارپوریٹ پیکج سرورز پر حملہ کرنے کے لیے کیا جا سکتا ہے۔ وہ ڈویلپر جو صرف pub.dev پر پیکیجز کی میزبانی کرتے ہیں اس مسئلے سے متاثر نہیں ہوتے ہیں۔

اسی وقت، یوزر انٹرفیس فریم ورک فلٹر 2.8 کی ایک اہم ریلیز پیش کی گئی، جسے ری ایکٹ نیٹیو کے متبادل کے طور پر سمجھا جاتا ہے اور یہ ایک واحد کوڈ بیس کی بنیاد پر، iOS، اینڈرائیڈ، ونڈوز، میک او ایس اور کے لیے ایپلی کیشنز جاری کرنے کی اجازت دیتا ہے۔ لینکس پلیٹ فارمز کے ساتھ ساتھ براؤزرز میں چلانے کے لیے ایپلی کیشنز تخلیق کرتے ہیں۔ Google کی طرف سے تیار کردہ Fuchsia microkernel آپریٹنگ سسٹم کے لیے ایک حسب ضرورت شیل Flutter کی بنیاد پر بنایا گیا ہے۔ واضح رہے کہ گزشتہ چھ ماہ کے دوران گوگل پلے اسٹور میں فلٹر 2 ایپلی کیشنز کی تعداد 200 ہزار سے بڑھ کر 375 ہزار ہو گئی ہے، یعنی تقریبا دو بار.

فلٹر کوڈ کا بنیادی حصہ ڈارٹ زبان میں لاگو کیا جاتا ہے، اور ایپلی کیشنز پر عمل درآمد کے لیے رن ٹائم انجن C++ میں لکھا جاتا ہے۔ ایپلی کیشنز تیار کرتے وقت، فلٹر کی مقامی ڈارٹ زبان کے علاوہ، آپ C/C++ کوڈ کو کال کرنے کے لیے ڈارٹ فارن فنکشن انٹرفیس استعمال کر سکتے ہیں۔ ٹارگٹ پلیٹ فارمز کے لیے مقامی کوڈ میں ایپلی کیشنز کو مرتب کرکے اعلیٰ کارکردگی کا مظاہرہ کیا جاتا ہے۔ اس صورت میں، ہر تبدیلی کے بعد پروگرام کو دوبارہ مرتب کرنے کی ضرورت نہیں ہے - ڈارٹ ایک ہاٹ ری لوڈ موڈ فراہم کرتا ہے جو آپ کو چلنے والی ایپلیکیشن میں تبدیلیاں کرنے اور نتیجہ کا فوری جائزہ لینے کی اجازت دیتا ہے۔

فلٹر کی نئی ریلیز میں تبدیلیوں میں، موبائل ڈیوائسز پر لانچ کی رفتار اور میموری کی کھپت کی اصلاح کو نوٹ کیا گیا ہے۔ ایپس کو بیک اینڈ سروسز جیسے Firebase اور Google Cloud سے جوڑنا آسان ہے۔ گوگل اشتہارات کے ساتھ انضمام کے ٹولز کو مستحکم کر دیا گیا ہے۔ کیمروں اور ویب پلگ ان کے لیے سپورٹ کو نمایاں طور پر بہتر کیا گیا ہے۔ ترقی کو آسان بنانے کے لیے نئے ٹولز تجویز کیے گئے ہیں، مثال کے طور پر، Firebase کا استعمال کرتے ہوئے تصدیق کے لیے ایک ویجیٹ شامل کیا گیا ہے۔ فلٹر کا استعمال کرتے ہوئے 2D گیمز تیار کرنے کے لیے ڈیزائن کیے گئے فلیم انجن کو اپ ڈیٹ کر دیا گیا ہے۔

ماخذ: opennet.ru

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