Nella piattaforma Deno per JavaScript, Γ¨ garantita la compatibilitΓ  con i moduli NPM

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ выпуск Deno 1.28, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для обособлСнного выполнСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языках JavaScript ΠΈ TypeScript, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для создания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° сСрвСрС. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π Π°ΠΉΠ°Π½ Π”Π°Π»ΡŒ (Ryan Dahl), ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Node.js. Как ΠΈ Π² Node.js Π² Deno ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ V8, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… Π½Π° основС Chromium. ΠŸΡ€ΠΈ этом Deno Π½Π΅ являСтся ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ Node.js, Π° прСдставляСт собой созданный с нуля Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π‘Π±ΠΎΡ€ΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Linux, Windows ΠΈ macOS.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Deno Π±Ρ‹Π» создан для прСдоставлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΠΎΠ»Π΅Π΅ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ устранСния ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ошибок, Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Node.js. Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности обвязка Π²ΠΎΠΊΡ€ΡƒΠ³ Π΄Π²ΠΈΠΆΠΊΠ° V8 написана Π½Π° языкС Rust, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΡ… уязвимостСй, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ примСняСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Tokio, Ρ‚Π°ΠΊΠΆΠ΅ написанная Π½Π° языкС Rust. Tokio позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния Π½Π° основС событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (Event-driven), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сСтСвых запросов Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² Π½ΠΎΠ²ΠΎΠΌ выпускС являСтся стабилизация совмСстимости с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ NPM, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Deno Π±ΠΎΠ»Π΅Π΅ 1.3 ΠΌΠ»Π½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, созданных для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Node.js. НапримСр, Π² прилоТСниях Π½Π° Π±Π°Π·Π΅ Deno Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ постоянного доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Prisma, Mongoose ΠΈ MySQL, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ фронтэндов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ React ΠΈ Vue. НСкоторыС NPM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎΠΊΠ° ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ нСсовмСстимыми с Deno, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·-Π·Π° привязок ΠΊ спСцифичным для Node.js элСмСнтам окруТСния, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» package.json. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«deno compileΒ» с модулями NPM. Π’ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках планируСтся ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ нСсовмСстимости ΠΈ ограничСния.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π½Π΅Π΅ примСняСмой Π² Deno ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° основС систСмы ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ECMAScript ΠΈ Web API сохранСна Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ NPM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ привычная для Deno схСма Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° основС URL. Для обращСния ΠΊ модулям NPM прСдусмотрСн ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ URL-прСфикс Β«npm:Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ модулями Deno. НапримСр, для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° NPM-модуля ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ β€˜import { chalk } from Β«npm:chalk@5Β»;’, Π° для запуска NPM-скрипта ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” Β«deno run β€”allow-env β€”allow-read npm:create-vite-extraΒ».

ИспользованиС NPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Deno Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π² Node.js, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Ρ‚ нСобходимости ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС прилоТСния), Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Π°ΠΉΠ» package.json, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ node_modules (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возвращСния старого повСдСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Β«β€”node-modules-dirΒ»).

Π’ прилоТСниях Π½Π° Π±Π°Π·Π΅ NPM сохраняСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования прСдоставляСмых Π² Deno ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² разграничСния доступа, изоляции ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй. Для противодСйствия ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡŽ Π°Ρ‚Π°ΠΊ Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ зависимости Deno Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ получСния доступа ΠΊ систСмС ΠΈΠ· зависимостСй ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ выявлСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…. НапримСр, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ модуля получСния доступа Π½Π° запись Π² /usr/bin/ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ запрос подтвСрТдСния Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: deno run npm:install-malware ⚠️ β”Œ Deno requests write access to /usr/bin/. β”œ Requested by `install-malware` β”œ Run again with β€”allow-write to bypass this prompt. β”” Allow? [y/n] (y = yes, allow; n = no, deny) >

Из Π½Π΅ связанных Π² NPM ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии упоминаСтся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠ° V8 Π΄ΠΎ выпуска 10.9, автоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ, стабилизация API Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() ΠΈ Deno.uid(), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ API Deno.Command() для запуска ΠΊΠΎΠΌΠ°Π½Π΄ (ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° Deno.spawn, Deno.spawnSync ΠΈ Deno.spawnChild).

Caratteristiche principali di Deno:

  • Orientamento alla sicurezza nella configurazione predefinita. Le richieste ai file, le capacitΓ  di rete e l'accesso alle variabili ambientali per impostazione predefinita sono bloccati e richiedono un'attivazione esplicita. Le applicazioni predefinite vengono eseguite in ambienti sandbox isolati e non possono accedere alle capacitΓ  di sistema senza concessione di autorizzazioni esplicite;
  • Supporto integrato per il linguaggio TypeScript oltre a JavaScript. Per il controllo dei tipi e la generazione di JavaScript viene utilizzato un compilatore TypeScript incorporato, il che comporta un degrado delle prestazioni rispetto all'analisi di JavaScript in V8;
  • Runtime поставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ самодостаточного исполняСмого Ρ„Π°ΠΉΠ»Π° (Β«denoΒ»). Для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Deno достаточно Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ для своСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ», Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠœΠ‘, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ особой установки Π² систСму. ΠŸΡ€ΠΈ этом deno Π½Π΅ являСтся ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° прСдставляСт собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° Rust (deno_core, rusty_v8), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;
  • All'avvio del programma e per il caricamento dei moduli Γ¨ possibile utilizzare l'indirizzamento tramite URL. Ad esempio, per avviare il programma welcome.js, si puΓ² utilizzare il comando Β«deno https://deno.land/std/examples/welcome.jsΒ». Il codice da risorse esterne viene scaricato e memorizzato nella cache sul sistema locale, ma non viene mai aggiornato automaticamente (per aggiornare Γ¨ necessario avviare esplicitamente l'applicazione con il flag Β«β€”reloadΒ»).
  • Gestione efficace delle richieste di rete HTTP nelle applicazioni; la piattaforma Γ¨ progettata per creare applicazioni di rete ad alte prestazioni.
  • PossibilitΓ  di creare applicazioni web universali, che possono essere eseguite sia in Deno che in un normale browser web.
  • Presenza di un insieme standard di moduli, il cui utilizzo non richiede dipendenze esterne. I moduli della collezione standard hanno superato un audit aggiuntivo e controlli di compatibilitΓ ;
  • Oltre a essere una piattaforma runtime, Deno funge anche da gestore di pacchetti e consente di accedere ai moduli tramite URL nel codice. Ad esempio, per caricare un modulo, puoi specificare nel codice Β«import * as log from Β«https://deno.land/std/log/mod.tsΒ». I file caricati da fonti esterne server tramite URL vengono memorizzati nella cache. L'assegnazione delle versioni ai moduli Γ¨ determinata specificando i numeri di versione all'interno dell'URL, ad esempio, Β«https://unpkg.com/liltest@0.0.5/dist/liltest.jsΒ»;
  • Il sistema integra un ispezionatore delle dipendenze (comando Β«deno infoΒ») e un'utilitΓ  per la formattazione del codice (deno fmt);
  • Tutti gli script dell'applicazione possono essere uniti in un unico file JavaScript.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server πŸ”₯ Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster