انتشار پلت فرم Deno 2.0 منتشر شده است که برای اجرای مستقل برنامه های سرور در جاوا اسکریپت و تایپ اسکریپت با استفاده از موتور V8 مورد استفاده در مرورگرهای مبتنی بر کروم طراحی شده است. پروژه Deno توسط رایان دال، خالق Node.js، با هدف ارائه یک محیط امن تر و حذف خطاهای مفهومی در معماری Node.js در حال توسعه است. برای بهبود امنیت، موتور V8 به زبان Rust نوشته شده است و پلت فرم توکیو برای پردازش درخواست ها در حالت غیر مسدود کننده استفاده می شود. کد پروژه تحت مجوز MIT توزیع شده است. بیلدها برای لینوکس، ویندوز و macOS آماده شده اند.
هنگام آماده سازی شعبه جدید، توجه اصلی به سازگاری با زیرساخت قدیمی جاوا اسکریپت و گسترش دامنه پروژه های جاوا اسکریپت پشتیبانی شده بدون به خطر انداختن امنیت معطوف شد. از جمله تغییرات:
- سازگاری رو به عقب با Node.js و npm پیاده سازی شده است که به شما امکان می دهد برنامه های بدون تغییر ایجاد شده برای Node.js را اجرا کنید. پشتیبانی Node.js همچنین امکان انتقال تدریجی پروژههای موجود از Node.js برای استفاده از Deno یا اتصال وابستگیها از NPM به پروژههای Deno را با تعیین مشخصکننده «npm:» در هنگام وارد کردن بستهها به deno.json میدهد.
- پشتیبانی بومی برای فایل package.json و دایرکتوری node_modules مورد استفاده در Node.js اضافه شد.
- پشتیبانی از مخازن خصوصی NPM تعریف شده از طریق فایل های ".npmrc" ارائه شده است.
- پشتیبانی از فریمورک های محبوب جاوا اسکریپت مانند Next.js، Astro، Remix، Angular، SvelteKit و QwikCity اضافه شده است.
- اضافه شدن پشتیبانی از فضاهای کاری npm (فضای کاری) و مخازن mono (monorepo) با پردازش جداگانه وابستگی ها.
- دستورات مدیریت بسته جدید اضافه شده اند: "deno install" برای نصب وابستگی ها، "deno add" برای افزودن بسته ها به package.json یا deno.json، "deno remove" برای حذف بسته ها. توجه داشته باشید که "deno install" زمانی که هیچ بسته ای در حافظه پنهان وجود ندارد، حدود 15٪ سریعتر از npm است، و زمانی که بسته در حافظه نهان است (هر دو node_modules و کش جهانی خود پشتیبانی می شوند) 90٪ سریعتر است.
- کتابخانه استاندارد تثبیت شده است.
- چرخه پشتیبانی بلند مدت (LTS) ارائه شده است.
- JSR معرفی شد - یک مخزن با کتابخانه های جاوا اسکریپت و تایپ اسکریپت که می تواند در زمان های مختلف جاوا اسکریپت استفاده شود.
- دستور "deno fmt" اکنون توانایی قالب بندی محتوا در فرمت های HTML، CSS و YAML را دارد.
- پشتیبانی از قوانین خاص Node.js و اصلاحات دستور "deno lint" اضافه شده است.
- دستور "deno test" امکان اجرای تست های ایجاد شده با استفاده از node:test را فراهم می کند.
- دستور "deno task" اکنون از اجرای اسکریپت ها از طریق package.json پشتیبانی می کند.
- دستور “deno compile” اکنون قابلیت امضای دیجیتالی کد را دارد.
- دستور "deno serve" موازی سازی عملیات سرور HTTP را با استفاده از چندین هسته CPU پیاده سازی می کند.
- دستور "deno coverage" اکنون از ذخیره گزارش ها در قالب HTML پشتیبانی می کند.
- بهینه سازی عملکرد انجام شده است.

ویژگی های اصلی Deno:
- پیکربندی پیش فرض امنیت محور. دسترسی به فایل، شبکه و دسترسی به متغیرهای محیطی به طور پیشفرض غیرفعال هستند و باید صریحاً فعال شوند. برنامهها بهطور پیشفرض در محیطهای sandbox ایزوله اجرا میشوند و نمیتوانند بدون اعطای مجوزهای صریح به قابلیتهای سیستم دسترسی داشته باشند.
- پشتیبانی داخلی از TypeScript فراتر از جاوا اسکریپت. برای بررسی نوع و تولید جاوا اسکریپت، از کامپایلر استاندارد TypeScript استفاده می شود که منجر به کاهش عملکرد در مقایسه با تجزیه جاوا اسکریپت در V8 می شود.
- Runtime به شکل یک فایل اجرایی مستقل ("deno") ارائه می شود. برای اجرای برنامه ها با استفاده از Deno، کافی است یک فایل اجرایی برای پلتفرم خود با حجم حدود 40 مگابایت دانلود کنید که هیچ وابستگی خارجی ندارد و نیازی به نصب خاصی روی سیستم ندارد. علاوه بر این، deno یک برنامه یکپارچه نیست، بلکه مجموعه ای از بسته های Rust crate (deno_core، rusty_v8) است که می تواند به طور جداگانه استفاده شود.
- هنگام شروع برنامه، و همچنین برای بارگذاری ماژول ها، می توانید از آدرس دهی URL استفاده کنید. برای مثال برای اجرای برنامه Welcome.js می توانید از دستور “deno https://deno.land/std/examples/welcome.js” استفاده کنید. کد از منابع خارجی دانلود و در سیستم محلی ذخیره می شود، اما هرگز به طور خودکار به روز نمی شود (به روز رسانی نیاز به اجرای صریح برنامه با پرچم "--reload" دارد).
- پردازش کارآمد درخواست های شبکه از طریق HTTP در برنامه ها؛ این پلت فرم برای ایجاد برنامه های کاربردی شبکه با کارایی بالا طراحی شده است.
- توانایی ایجاد برنامه های کاربردی وب جهانی که می توانند هم در Deno و هم در یک مرورگر وب معمولی اجرا شوند.
- وجود مجموعه استانداردی از ماژول ها که استفاده از آنها نیازی به اتصال به وابستگی های خارجی ندارد. ماژول های مجموعه استاندارد تحت ممیزی و تست سازگاری اضافی قرار گرفته اند.
- علاوه بر زمان اجرا، پلتفرم Deno به عنوان یک مدیر بسته نیز عمل میکند و به شما امکان میدهد از طریق URL در کد خود به ماژولها دسترسی داشته باشید. به عنوان مثال، برای بارگذاری یک ماژول، میتوانید در کد خود عبارت "import * as log from "https://deno.land/std/log/mod.ts" را مشخص کنید. فایلهای بارگذاری شده از منابع خارجی سرورها توسط URL، ذخیره شده. پیوند به نسخههای ماژول با مشخص کردن شماره نسخهها در URL تعیین میشود، برای مثال، "https://unpkg.com/liltest@0.0.5/dist/liltest.js"؛
- روی استفاده از استانداردهای وب، پشتیبانی از ماژول های Promise، fetch و ECMAScript تمرکز کنید.
- سازگار با بسته های میزبانی شده در مخزن NPM و ایجاد شده برای پلتفرم Node.js.
- این ساختار شامل یک سیستم بازرسی وابستگی یکپارچه (دستور "deno info") و یک ابزار برای قالببندی کد (deno fmt) است.
- همه اسکریپت های برنامه را می توان در یک فایل جاوا اسکریپت ترکیب کرد.
منبع: opennet.ru

