Выпуск JavaScript-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Deno 1.16

Бостоялся Ρ€Π΅Π»ΠΈΠ· JavaScript-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Deno 1.16, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для обособлСнного выполнСния (Π±Π΅Π· использования Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, написанных Π½Π° языках JavaScript ΠΈ TypeScript. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Node.js Π Π°ΠΉΠ°Π½ΠΎΠΌ Π”Π°Π»Π΅ΠΌ (Ryan Dahl). Код ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ написан Π½Π° языкС программирования Rust ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ сборки ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Linux, Windows ΠΈ macOS.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ схоТ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Node.js ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΅ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ V8, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎ словам Π°Π²Ρ‚ΠΎΡ€Π° Node.js, исправляСт ряд Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… просчётов своСго ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° ΠΈ отличаСтся ΠΎΡ‚ Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ нюансами:

  • ИспользованиС Π² качСствС основного языка Rust, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ мнСнию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ риск появлСния уязвимостСй, связанных с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°, use-after-free ΠΈ ΠΏΡ€.);
  • Deno Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ npm ΠΈ package.json, прСдлагая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ установку ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΡƒΡ‚Ρ‘ΠΌ указания URL ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ для установки. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ прСдлагаСтся нСсколько ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ со сторонними модулями;
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ обособлСнно Π² пСсочницах ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ сСти, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ окруТСния ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π±Π΅Π· явно Π²Ρ‹Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ;
  • Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² систСмС Deno, Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅;
  • ИспользованиС «ES Modules» ΠΈ отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ require();
  • Π›ΡŽΠ±Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ программистом ошибки Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ приводят ΠΊ ΠΈΡ… ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° TypeScript ΠΏΠΎΠΌΠΈΠΌΠΎ JavaScript;
  • ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊ использованию ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ — 84 ΠœΠ‘ (Π² zip-Π°Ρ€Ρ…ΠΈΠ²Π΅ — 31 ΠœΠ‘) Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π°;
  • Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ прСдлагаСтся систСма Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ зависимостСй ΠΈ форматирования ΠΊΠΎΠ΄Π°;
  • ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния.

Dino ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Tokio, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для создания Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° основС событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ (event-driven) Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’Π°ΠΊΠΆΠ΅ интСрСсно, Ρ‡Ρ‚ΠΎ встроСнный HTTP-сСрвСр Deno Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° TypeScript ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… TCP-сокСтов, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сСтСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии отмСчаСтся:

  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (4 ΠΏΠ°Ρ‚Ρ‡Π°);
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ 15 ошибок, Π² частности, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ TLS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ HTTP/2, подсистСма ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ кодирования ΠΈ ΠΏΡ€.;
  • Π‘ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… дСсятков Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π½Π΅Π΅ тСстовых подсистСм Deno.startTls ΠΈ Deno.TestDefinition.permissions, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ JS-Π΄Π²ΠΈΠΆΠΊΠ° V8 Π΄ΠΎ вСрсии 9.7 ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ React 17 JSX.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru