Deno JavaScript پلیٹ فارم NPM ماڈیولز کے ساتھ مطابقت رکھتا ہے۔

ڈینو 1.28 جاری کر دیا گیا ہے، جو جاوا اسکرپٹ اور ٹائپ اسکرپٹ ایپلی کیشنز کو سینڈ باکسنگ کے لیے ایک فریم ورک ہے جسے سرور سائیڈ ہینڈلرز بنانے کے لیے استعمال کیا جا سکتا ہے۔ پلیٹ فارم Node.js کے خالق ریان ڈہل نے تیار کیا ہے۔ Node.js کی طرح، Deno V8 JavaScript انجن استعمال کرتا ہے، جو Chromium پر مبنی براؤزرز میں بھی استعمال ہوتا ہے۔ ایک ہی وقت میں، Deno Node.js کا کانٹا نہیں ہے، بلکہ ایک نیا پروجیکٹ ہے جو شروع سے بنایا گیا ہے۔ پروجیکٹ کوڈ MIT لائسنس کے تحت تقسیم کیا جاتا ہے۔ لینکس، ونڈوز اور میک او ایس کے لیے عمارتیں تیار کی جاتی ہیں۔

Deno پروجیکٹ صارفین کو زیادہ محفوظ ماحول فراہم کرنے اور Node.js فن تعمیر میں تصوراتی غلطیوں کو ختم کرنے کے لیے بنایا گیا تھا۔ سیکورٹی کو بہتر بنانے کے لیے، V8 انجن کو Rust میں لکھا گیا ہے، جو کم سطح کی میموری کی ہیرا پھیری سے پیدا ہونے والی بہت سی کمزوریوں سے بچتا ہے۔ نان بلاکنگ موڈ میں درخواستوں پر کارروائی کرنے کے لیے، ٹوکیو پلیٹ فارم، جسے Rust میں بھی لکھا جاتا ہے، استعمال کیا جاتا ہے۔ ٹوکیو آپ کو ایونٹ سے چلنے والے فن تعمیر کی بنیاد پر اعلیٰ کارکردگی کی ایپلی کیشنز بنانے کی اجازت دیتا ہے، ملٹی تھریڈنگ کی حمایت کرتا ہے اور غیر مطابقت پذیر موڈ میں نیٹ ورک کی درخواستوں پر کارروائی کرتا ہے۔

نئی ریلیز میں ایک اہم تبدیلی NPM ریپوزٹری میں میزبان پیکجز کے ساتھ مطابقت کا استحکام ہے، جو Deno کو Node.js پلیٹ فارم کے لیے بنائے گئے 1.3 ملین سے زیادہ ماڈیولز استعمال کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، ڈینو پر مبنی ایپلی کیشنز اب مستقل ڈیٹا تک رسائی کے ماڈیولز جیسے پریزما، منگوز اور مائی ایس کیو ایل، نیز فرنٹ اینڈ فریم ورک جیسے ری ایکٹ اور ویو کا استعمال کر سکتی ہیں۔ کچھ NPM ماڈیول اب بھی Deno کے ساتھ مطابقت نہیں رکھتے، مثال کے طور پر Node.js-مخصوص ماحول کے عناصر جیسے package.json فائل کے پابند ہونے کی وجہ سے۔ NPM ماڈیولز کے ساتھ "deno compile" کمانڈ استعمال کرنا بھی ابھی ممکن نہیں ہے۔ مستقبل کی ریلیز ان عدم مطابقتوں اور حدود کو دور کرنے کا منصوبہ رکھتی ہے۔

ڈینو کے پہلے استعمال شدہ ECMAScript ماڈیول سسٹم اور ویب API ماڈل کے لیے سپورٹ اسی سطح پر برقرار ہے، اور ڈینو کی واقف یو آر ایل پر مبنی لوڈنگ اسکیم NPM ماڈیولز درآمد کرنے کے لیے استعمال کی جاتی ہے۔ NPM ماڈیولز تک رسائی کے لیے، ایک خاص یو آر ایل کا سابقہ ​​"npm:" ہے، جسے باقاعدہ Deno ماڈیولز کی طرح استعمال کیا جا سکتا ہے۔ مثال کے طور پر، ایک NPM ماڈیول درآمد کرنے کے لیے، آپ 'import { chalk } سے "npm:chalk@5"؛' کی وضاحت کر سکتے ہیں، اور کمانڈ لائن سے NPM اسکرپٹ چلانے کے لیے - "deno run --allow-env --allow -پڑھیں npm:create-vite-extra."

Deno میں NPM پیکجوں کا استعمال Node.js کے مقابلے میں بہت آسان ہے، کیونکہ ماڈیولز کو پہلے سے انسٹال کرنے کی ضرورت نہیں ہے (ماڈیول انسٹال ہوتے ہیں جب ایپلیکیشن پہلی بار لانچ ہوتی ہے)، کوئی package.json فائل نہیں ہے، اور کوئی ڈیفالٹ node_modules نہیں ہے۔ ڈائریکٹری (مشترکہ ڈائرکٹری میں ماڈیولز کیش کیے جاتے ہیں، لیکن "--node-modules-dir" آپشن کا استعمال کرتے ہوئے پرانے رویے کو واپس کرنا ممکن ہے)۔

NPM پر مبنی ایپلی کیشنز Deno کی رسائی کنٹرول، تنہائی، اور سیکورٹی سے متعلق حساس جدید صلاحیتوں کو استعمال کرنے کی صلاحیت کو برقرار رکھتی ہیں۔ قابل اعتراض انحصار کے ذریعے حملوں کا مقابلہ کرنے کے لیے، ڈینو ڈیفالٹ طور پر انحصار سے سسٹم تک رسائی حاصل کرنے کی تمام کوششوں کو روکتا ہے اور دریافت شدہ مسائل کے بارے میں انتباہ دکھاتا ہے۔ مثال کے طور پر، جب کوئی ماڈیول /usr/bin/ تک تحریری رسائی حاصل کرنے کی کوشش کرتا ہے، تو اس آپریشن کے لیے ایک تصدیقی درخواست ظاہر کی جائے گی: deno run npm:install-malware ⚠️ ┌ Deno /usr/bin/ تک تحریری رسائی کی درخواست کرتا ہے۔ ├ `install-malware` کی طرف سے درخواست کی گئی ├ اس پرامپٹ کو نظرانداز کرنے کے لیے --allow-write کے ساتھ دوبارہ چلائیں۔ └ اجازت دیں؟ [y/n] (y = ہاں، اجازت دیں؛ n = نہیں، انکار) >

نئے ورژن میں غیر NPM بہتریوں میں 8 کو جاری کرنے کے لیے V10.9 انجن کو اپ ڈیٹ کرنا، تالے کے ساتھ فائلوں کا خودکار پتہ لگانا، Deno.bench() Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() کا استحکام شامل ہے۔ اور ڈینو APIs۔

ڈینو کی اہم خصوصیات:

  • سیکیورٹی پر مبنی ڈیفالٹ کنفیگریشن۔ فائل تک رسائی، نیٹ ورکنگ، اور ماحولیاتی متغیرات تک رسائی بطور ڈیفالٹ غیر فعال ہے اور اسے واضح طور پر فعال ہونا چاہیے۔ ایپلیکیشنز بذریعہ ڈیفالٹ الگ تھلگ سینڈ باکس ماحول میں چلتی ہیں اور واضح اجازتوں کے بغیر سسٹم کی صلاحیتوں تک رسائی حاصل نہیں کرسکتی ہیں۔
  • جاوا اسکرپٹ سے آگے TypeScript کے لیے بلٹ ان سپورٹ۔ ٹائپ چیکنگ اور جاوا اسکرپٹ جنریشن کے لیے، معیاری ٹائپ اسکرپٹ کمپائلر استعمال کیا جاتا ہے، جو V8 میں جاوا اسکرپٹ پارسنگ کے مقابلے کارکردگی میں کمی کا باعث بنتا ہے۔
  • رن ٹائم ایک خود ساختہ ایگزیکیوٹیبل فائل ("deno") کی شکل میں آتا ہے۔ ڈینو کا استعمال کرتے ہوئے ایپلی کیشنز چلانے کے لیے، آپ کو اپنے پلیٹ فارم کے لیے صرف ایک قابل عمل فائل ڈاؤن لوڈ کرنے کی ضرورت ہے، جس کا سائز تقریباً 30 MB ہے، جس کا کوئی بیرونی انحصار نہیں ہے اور اسے سسٹم پر کسی خاص انسٹالیشن کی ضرورت نہیں ہے۔ مزید برآں، deno ایک یک سنگی ایپلی کیشن نہیں ہے، بلکہ Rust crate پیکیجز (deno_core, rusty_v8) کا مجموعہ ہے، جسے الگ سے استعمال کیا جا سکتا ہے۔
  • پروگرام شروع کرنے کے ساتھ ساتھ ماڈیول لوڈ کرنے کے لیے، آپ یو آر ایل ایڈریسنگ استعمال کر سکتے ہیں۔ مثال کے طور پر، welcome.js پروگرام کو چلانے کے لیے، آپ "deno https://deno.land/std/examples/welcome.js" کمانڈ استعمال کر سکتے ہیں۔ بیرونی وسائل سے کوڈ مقامی سسٹم پر ڈاؤن لوڈ اور کیش کیا جاتا ہے، لیکن کبھی بھی خود بخود اپ ڈیٹ نہیں ہوتا ہے (اپ ڈیٹ کرنے کے لیے واضح طور پر ایپلیکیشن کو "--ریلوڈ" پرچم کے ساتھ چلانے کی ضرورت ہوتی ہے)؛
  • ایپلی کیشنز میں HTTP کے ذریعے نیٹ ورک کی درخواستوں کی موثر پروسیسنگ؛ پلیٹ فارم کو اعلی کارکردگی والے نیٹ ورک ایپلی کیشنز بنانے کے لیے ڈیزائن کیا گیا ہے۔
  • یونیورسل ویب ایپلیکیشنز بنانے کی اہلیت جو ڈینو اور باقاعدہ ویب براؤزر دونوں میں چلائی جا سکتی ہے۔
  • ماڈیولز کے ایک معیاری سیٹ کی موجودگی، جس کے استعمال کے لیے بیرونی انحصار کے پابند ہونے کی ضرورت نہیں ہے۔ معیاری مجموعہ کے ماڈیولز اضافی آڈٹ اور مطابقت کی جانچ سے گزر چکے ہیں۔
  • رن ٹائم کے علاوہ، ڈینو پلیٹ فارم ایک پیکیج مینیجر کے طور پر بھی کام کرتا ہے اور آپ کو کوڈ کے اندر یو آر ایل کے ذریعے ماڈیولز تک رسائی کی اجازت دیتا ہے۔ مثال کے طور پر، ایک ماڈیول کو لوڈ کرنے کے لیے، آپ "https://deno.land/std/log/mod.ts" سے لاگ کے طور پر "import*" کوڈ میں بتا سکتے ہیں۔ یو آر ایل کے ذریعے بیرونی سرورز سے ڈاؤن لوڈ کی گئی فائلیں کیش کی جاتی ہیں۔ ماڈیول ورژن کے پابند ہونے کا تعین URL کے اندر ورژن نمبر بتا کر کیا جاتا ہے، مثال کے طور پر، "https://unpkg.com/[ای میل محفوظ]/dist/liltest.js"؛
  • ڈھانچے میں ایک مربوط انحصاری معائنہ کا نظام ("deno info" کمانڈ) اور کوڈ فارمیٹنگ (deno fmt) کے لیے ایک افادیت شامل ہے۔
  • تمام ایپلیکیشن اسکرپٹس کو ایک جاوا اسکرپٹ فائل میں ملایا جا سکتا ہے۔

ماخذ: opennet.ru

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