دينو (بيئة تشغيل)

دينو هو منفذ لـ JavaScript و TypeScript في وقت تشغيل مبني على محرك V8 JavaScript ولغة البرمجة Rust . تم إنشاؤه بواسطة Ryan Dahl ، المصمم الأصلي لـ Node.js ، ويركز على الأمان والإنتاجية. [4] تم الإعلان عنه من قبل داهل في عام 2018 خلال حديث له بعنوان "10 أشياء مؤسفة حول Node.js". [5] يقوم "دينو (البرمجية)" بالتنفيذ في وقت التشغيل وكذلك إدارة الحزم ضمن ملف تنفيذي واحد ، بدلاً من طلب ذلك من برنامج منفصل لإدارة الحزم أي يستغني على npm. [6] [7]

هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر مغاير للذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. يمكن أيضاً تقديم طلب لمراجعة المقالة في الصفحة المُخصصة لذلك. (مايو 2020)
Deno
معلومات عامة
نوع
نظام التشغيل
موقع الويب
(الإنجليزية) deno.land
معلومات تقنية
المطور الأصلي
Ryan Dahl
المطورون
Various
لغة البرمجة
التوثيق
الإصدار الأول
13 مايو 2018 (2018-05-13[1]
إصدار تجريبي
1.0.0-rc1
الإصدار الأخير
المستودع
الرخصة
التسلسل
مأخوذ عن
V8

نظرة تاريخية

تم الإعلان عن Deno في JSConf EU 2018 من قبل Ryan Dahl في حديثه حول "10 أشياء مؤسفة عن Node.js". [5]، و ذكر ريان عن أسفه لقرارات التصميم الأولية لـNode.js ، مع التركيز على اختياراته بعدم استخدام الـ Promises في تصميم واجهة برمجة التطبيقات ، واستخدام نظام بناء GYP القديم ، و node_modules و package.json ، وترك ملحقات الملفات ، وmagical module باستخدام index.js وكسر بيئة الحماية (sandboxed ) من V8. [8]

وقدم Ryan Dahl في النهاية النموذج الأولي لـ Deno ، تهدف إلى ربط النظام من خلال تمرير الرسائل باستخدام أدوات مثل Buffers Protocol ، وتوفير أوامر الطرفية (موجه الأوامر) للتحكم في الوصول .

نظرة عامة حول دينو

تهدف دينو إلى أن تكون بيئة نصية منتجة وآمنة للمبرمج الحديث. [6] على غرار نود.جي إس، دينو نؤكد على التحريك بالحدث event-driven architecture- ، وتوفير IO الأساسية من <a href="https://en.wikipedia.org/wiki/Non-blocking_I/O" rel="mw:ExtLink" title="Non-blocking I/O" class="mw-redirect cx-link" data-linkid="97">non-blocking</a> ، جنبا إلى جنب مع الإصدارات المحجوبة (blocking . يمكن استخدام Deno لإنشاء خوادم الويب وإجراء الحسابات العلمية وما إلى ذلك.

مقارنة مع Node.js

كل من دينو و نود.جي أس يعملان في وقت التشغيل مبني على محرك جافا سكريبت V8 المصمم من جوجل، وهو نفس المحرك المستخدم في جوجل كروم .

كلاهما لديه حلقات الحدث ويوفر واجهات سطر الأوامر CLI لتشغيل البرامج النصية ومجموعة واسعة من أدوات النظام المساعدة.

يختلف Deno بشكل أساسي مع Node.js في الجوانب التالية:[6]

  1. يستخدم (Module ES) كنظام الوحدة النمطية الافتراضي ، بدلاً من CommonJS .
  2. يستخدم عناوين URL لتحميل التبعيات (المكتبات) المحلية أو البعيدة ، كما هو الحال في المتصفحات .
  3. يتضمن مدير حزم مدمجًا لجلب الموارد ، وبالتالي لا حاجة لـ Npm .
  4. يدعم TypeScript، باستخدام مترجم TypeScript مع آليات التخزين المؤقت.
  5. تهدف إلى توافق أفضل مع المتصفحات مع مجموعة واسعة من ال Web API.
  6. يسمح بالتحكم في نظام الملفات والوصول إلى الشبكة من أجل تشغيل البرنامج في وضع الحماية.
  7. إعادة تصميم واجهة التطبيقات البرمجية الـAPI لاستخدام ميزات Promises و ES6 و TypeScript.
  8. يقلل حجم واجهة برمجة التطبيقات الأساسي ، مع توفير مكتبة قياسية كبيرة بدون تبعيات (مكتبات) خارجية.
  9. استخدام قنوات تمرير الرسائل لاستدعاء واجهات برمجة تطبيقات النظام المتميزة واستخدام عمليات الربط.

أمثلة

فيما يلي برنامج نصي Deno أساسي دون أي أذونات للقراءة / الكتابة / الشبكة (في وضع الحماية ):

deno run main.ts

الأوامر الصريحة المطلوبة لطلب الأذونات:

deno run --allow-read --allow-net main.ts

لفحص شجرة التبعيات للبرنامج، استخدم الأمر الفرعي info :

deno info main.ts

يشبه برنامج hello-world الأساسي في Deno ما يلي (كما هو الحال في Node.js):

console.log("مرحبا يا عالم");

يوفر Deno مساحة الاسم (namespace ) لمعظم واجهات برمجة التطبيقات الخاصة بـ Deno والتي لا تتوفر في المتصفح. يمكن تنفيذ برنامج Unix cat على النحو التالي:

/* cat.ts */

/* Deno APIs are exposed through the `Deno` namespace. */
const { stdout, open, copy, args } = Deno;

// Top-level await is supported
for (let i = 0; i < args.length; i++) {
    const filename = args[i]; // Obtains command-line arguments.
    const file = await open(filename); // Opens the corresponding file for reading.
    await copy(stdout, file); // Performs a zero-copy asynchronous copy from `file` to `stdout`.
}

تعمل وظيفة Deno.copy المذكورة أعلاه بنفس الطريقة التي تعمل بها Go's Copy.io ، حيث stdout ( الإخراج القياسي ) هو وجهة Writer و file هو مصدر للـ Reader . لتشغيل هذا البرنامج ، نحتاج إلى توفير إذن القراءة من نظام الملفات :

deno run --allow-read cat.ts myfile

يقوم نص Deno التالي بتنفيذ برنامج خادم HTTP أساسي:

// Imports `serve` from the remote Deno standard library, using URL.
import { serve } from "https://deno.land/std@v0.21.0/http/server.ts";

// `serve` function returns an asynchronous iterator, yielding a stream of requests
for await (const req of serve({ port: 8000 })) {
    req.respond({ body: "Hello World\n" });
}

عند تشغيل هذا البرنامج ، يقوم دينو تلقائيًا بتنزيل ملفات المكتبات القياسية البعيدة (في خوادم خارجية) وتخزينها مؤقتًا وتحويلها.

وبالمثل ، يمكننا تشغيل برنامج نصي قياسي لمكتبة (مثل خادم ملفات (HTTP server)) مباشرة بدون تنزيل مباشر.

لتنفيذ البرنامج بجميع الأذونات أضف الأمر الفرعي -A مثل المثال التالي:

$ deno run -A https://deno.land/std/http/file_server.ts
Download https://deno.land/std/http/file_server.ts
Compile https://deno.land/std/http/file_server.ts
...
HTTP server listening on http://0.0.0.0:4500/

المراجع

  1. "Contributors, denoland/deno, Github". مؤرشف من الأصل في 30 مايو 2019. اطلع عليه بتاريخ 05 يوليو 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  2. "deno/LICENSE at master". GitHub. مؤرشف من الأصل في 29 مايو 2019. اطلع عليه بتاريخ 05 يوليو 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  3. "The MIT License". Open Source Initiative. 17 September 2018. مؤرشف من الأصل في 9 مايو 2020. اطلع عليه بتاريخ 17 سبتمبر 2018. الوسيط |CitationClass= تم تجاهله (مساعدة)
  4. "Deno: Secure V8 TypeScript Runtime from Original Node.js Creator". InfoQ. مؤرشف من الأصل في 8 يناير 2020. اطلع عليه بتاريخ 17 مايو 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  5. JSConf (2018-06-06), 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU 2018, مؤرشف من الأصل في 25 أبريل 2020, اطلع عليه بتاريخ 17 مايو 2019 الوسيط |CitationClass= تم تجاهله (مساعدة); الوسيط |separator= تم تجاهله (مساعدة)CS1 maint: ref=harv (link)
  6. "Deno Manual". deno.land. مؤرشف من الأصل في 15 أبريل 2020. اطلع عليه بتاريخ 17 مايو 2019. الوسيط |CitationClass= تم تجاهله (مساعدة)
  7. Paul Krill (2018-06-21). "Ryan Dahl's Node.js regrets lead to Deno". InfoWorld. مؤرشف من الأصل في 25 أبريل 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)
  8. Dahl, Ryan (2018-06-06). "Design mistakes in Node" (PDF). Github. مؤرشف من الأصل (PDF) في 22 فبراير 2020. الوسيط |CitationClass= تم تجاهله (مساعدة)

    روابط خارجية

    • بوابة برمجة الحاسوب
    • بوابة برمجيات حرة
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.