Автор Node.js прСдставил Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΡƒΡŽ JavaScript-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Deno 1.0

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

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ вСрсии связан со стабилизациСй API Π² пространствС ΠΈΠΌΡ‘Π½ Deno, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° взаимодСйствиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ОБ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ стабилизированы, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ скрыты ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ запускС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «—unstable». По ΠΌΠ΅Ρ€Π΅ формирования Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ API постСпСнно Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² разряд ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…. API Π² глобальном пространствС ΠΈΠΌΡ‘Π½, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ setTimeout() ΠΈ fetch(), ΠΏΠΎ возмоТности ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ ΠΊ API ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ развиваСтся Π² соотвСтствии с Web-стандартами для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡ‹Π΅ Rust API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ примСняСтся нСпосрСдствСнно Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ интСрфСйс для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΊ Deno runtime, ΠΏΠΎΠΊΠ° Π½Π΅ стабилизированы ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Deno:

  • ΠžΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, сСтСвыС возмоТности ΠΈ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ окруТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ явного Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… sandbox-окруТСниях ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ систСмным возмоТностям Π±Π΅Π· прСдоставлСния явных ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ;
  • ВстроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языка TypeScript ΠΏΠΎΠΌΠΈΠΌΠΎ JavaScript. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ JavaScript задСйствован ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ компилятор TypeScript, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΡΠ΅Π΄Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ JavaScript Π² V8. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ планируСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ систСмы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² TypeScript, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π° порядок ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ TypeScript;
  • Runtime поставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ самодостаточного исполняСмого Ρ„Π°ΠΉΠ»Π° («deno»). Для запуска ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Deno достаточно Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ для своСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ», Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 20 Мб, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ особой установки Π² систСму. ΠŸΡ€ΠΈ этом deno Π½Π΅ являСтся ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° прСдставляСт собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ crate-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° Rust (deno_core, rusty_v8), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;
  • ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· URL. НапримСр, для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ welcome.js ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «deno https://deno.land/std/examples/welcome.js». Код с Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов загруТаСтся ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π½Π° локальной систСмС, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° автоматичСски Π½Π΅ обновляСтся (для обновлСния трСбуСтся явно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Ρ„Π»Π°Π³ΠΎΠΌ «—reload»);
  • ЭффСктивная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² прилоТСниях сСтСвых запросов ΠΏΠΎ HTTP, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° рассчитана Π½Π° созданиС Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Deno, Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅;
  • НаличиС стандартного Π½Π°Π±ΠΎΡ€Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ привязки ΠΊ внСшним зависимостям. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ· стандартной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°ΡƒΠ΄ΠΈΡ‚ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ;
  • ΠšΡ€ΠΎΠΌΠ΅ runtime ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Deno Ρ‚Π°ΠΊΠΆΠ΅ выполняСт Ρ€ΠΎΠ»ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΈ позволяСт Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ модулям ΠΏΠΎ URL. НапримСр, для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ «import * as log from «https://deno.land/std/log/mod.ts». Π€Π°ΠΉΠ»Ρ‹, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ с Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвСров ΠΏΠΎ URL ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ вСрсиям ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· указания Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² вСрсий Π²Π½ΡƒΡ‚Ρ€ΠΈ URL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «https://unpkg.com/[email protected]/dist/liltest.js»;
  • Π’ состав ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° систСма инспСктирования зависимостСй (ΠΊΠΎΠΌΠ°Π½Π΄Π° «deno info») ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для форматирования ΠΊΠΎΠ΄Π° (deno fmt);
  • ВсС скрипты прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ JavaScript Ρ„Π°ΠΉΠ».

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ ΠΎΡ‚ Node.js:

  • Deno Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ npm
    ΠΈ Π½Π΅ привязываСтся ΠΊ рСпозиториям, адрСсация ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· URL ΠΈΠ»ΠΈ ΠΏΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ, Π° сами ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° любом сайтС;
  • Π’ Deno Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ «package.json» для опрСдСлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ;
  • Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ API, всС асинхронныС дСйствия Π² Deno Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ promise;
  • Deno Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного опрСдСлСния всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ для Ρ„Π°ΠΉΠ»ΠΎΠ², сСти ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния;
  • ВсС ошибки, Π½Π΅ снабТённыС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, приводят ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ выполнСния прилоТСния;
  • Π’ Deno примСняСтся систСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ECMAScript ΠΈ Π½Π΅ поддСрТиваСтся require();
  • ВстроСнный HTTP-сСрвСр Deno написан Π½Π° TypeScript ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… TCP-сокСтов, Π° HTTP-сСрвСр Node.js написан Π½Π° Π‘ΠΈ ΠΈ прСдоставляСт привязки для JavaScript. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Deno сосрСдоточили усилия Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ всСго слоя TCP-сокСтов ΠΈ прСдоставлСниС Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ интСрфСйса. HTTP-сСрвСр Deno обСспСчиваСт ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ прСдсказуСмыС Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. НапримСр, Π² тСстС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ Deno HTTP server смогло ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ 25 тысяч запросов Π² сСкунду с максимальной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² 1.3 миллисСкунд. Π’ Node.js Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ 34 тысячи запросов Π² сСкунду, Π½ΠΎ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ колСбались ΠΎΡ‚ 2 ΠΈ 300 миллисСкунд.
  • Deno Π½Π΅ совмСстим с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ для Node.js (NPM), Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ развиваСтся прослойка для совмСстимости со стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Node.js, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Deno смогут Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ всё большС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, написанных для Node.js.
  • Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru