рд╕рд░реНрднрд░-рд╕рд╛рдЗрдб JavaScript Node.js 17.0 рд░рд┐рд▓реАрдЬ

Node.js 17.0, JavaScript рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдкреНрд▓реЗрдЯрдлрд░реНрдо, рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред Node.js 17.0 рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рдорд░реНрдерди рд╢рд╛рдЦрд╛ рд╣реЛ рдЬреБрди рдЬреБрди 2022 рд╕рдореНрдо рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╣рдиреЗрдЫред рдЖрдЧрд╛рдореА рджрд┐рдирд╣рд░реВрдорд╛, Node.js 16 рд╢рд╛рдЦрд╛рдХреЛ рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреВрд░рд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рд▓реЗ LTS рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рд░ рдЕрдкреНрд░рд┐рд▓ 2024 рд╕рдореНрдо рд╕рдорд░реНрдерд┐рдд рд╣реБрдиреЗрдЫред Node.js 14.0 рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ LTS рд╢рд╛рдЦрд╛рдХреЛ рдорд░реНрдордд рд╕рдореНрднрд╛рд░ рдЕрдкреНрд░рд┐рд▓ 2023 рд╕рдореНрдо рд░ рдЕрдиреНрддрд┐рдо LTS рд╢рд╛рдЦрд╛ 12.0 рдЕрдШрд┐рдХреЛ рд╡рд░реНрд╖ рдЕрдкреНрд░рд┐рд▓ 2022 рд╕рдореНрдо рд░рд╣рдиреЗрдЫред

рдореБрдЦреНрдп рд╕реБрдзрд╛рд░рд╣рд░реВ:

  • V8 рдЗрдиреНрдЬрд┐рди рд╕рдВрд╕реНрдХрд░рдг 9.5 рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • Promise рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЖрдзрд╛рд░рднреВрдд API рдХреЛ рднреЗрд░рд┐рдпрдиреНрдЯрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рд░реА рдЫред рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЯрд╛рдЗрдорд░ рд╡рд╛рдЪрд╛ рд░ рд╕реНрдЯреНрд░рд┐рдореНрд╕ рдкреНрд░рддрд┐рдЬреНрдЮрд╛ API рд╣рд░реВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, Node.js 17.0 рд▓реЗ рд░реАрдбрд▓рд╛рдЗрди рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ Readline Promise API рдХреЛ рдкрд░рд┐рдЪрдп рджрд┐рдиреНрдЫред рдЖрдпрд╛рдд * 'node:readline/promises' рдмрд╛рдЯ readline рдХреЛ рд░реВрдкрдорд╛; 'рдкреНрд░рдХреНрд░рд┐рдпрд╛' рдмрд╛рдЯ {рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ stdin, рдЖрдЙрдЯрдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ stdout} рдЖрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН; const rl = readline.createInterface ({ рдЗрдирдкреБрдЯ, рдЖрдЙрдЯрдкреБрдЯ }); const рдЙрддреНрддрд░ = рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН rl.question ('рддрдкрд╛рдИ Node.js рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ?'); console.log('рддрдкрд╛рдИрдВрдХреЛ рдмрд╣реБрдореВрд▓реНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж: ${answer}'); rl.close();
  • рдЖрдкреВрд░реНрддрд┐ рдЧрд░рд┐рдПрдХреЛ OpenSSL рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрд╕реНрдХрд░рдг 3.0 рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ (QUIC рдкреНрд░реЛрдЯреЛрдХрд▓ рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рднрдПрдХреЛ quictls/openssl рдлреЛрд░реНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ)ред
  • рд╕реНрдЯреНрдпрд╛рдХ рдЯреНрд░реЗрд╕рд╣рд░реВрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ Node.js рд╕рдВрд╕реНрдХрд░рдг рд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдпреЛ рдЬреБрди рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдорд╛рдорд▓рд╛рдорд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ рдЬрд╕рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред

рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореА Node.js (CVE-2021-22959, CVE-2021-22960) рдХреЛ рд╣рд╛рд▓рдХрд╛ рд╢рд╛рдЦрд╛рд╣рд░реВрдорд╛ рджреБрдИ рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рдЙрдиреНрдореВрд▓рди рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬрд╕рд▓реЗ "HTTP рдЕрдиреБрд░реЛрдз рддрд╕реНрдХрд░реА" (HRS) рдЖрдХреНрд░рдордгрд╣рд░реВ рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рд░ рдмреНрдпрд╛рдХрдЗрдиреНрдб рдмреАрдЪрдХреЛ рдПрдЙрдЯреИ рдереНрд░реЗрдбрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХрд╛ рдЕрдиреНрдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реАрдорд╛ рдЬреЛрдбреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЦрд░рд╛рдм JavaScript рдХреЛрдб рдЕрд░реНрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд╕рддреНрд░рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ)ред рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдкрдЫрд┐ рдкреНрд░рдХрдЯ рдЧрд░рд┐рдиреЗрдЫ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ HTTP рд╣реЗрдбрд░ рдирд╛рдо рд░ рдХреЛрд▓реЛрди рдмреАрдЪрдХреЛ рд╕реНрдкреЗрд╕рд╣рд░реВрдХреЛ рдЧрд▓рдд рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдЩрдХрд╛ рд╕рд╛рдереИ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдмреНрд▓рдХрдорд╛ рдХреНрдпрд╛рд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рд░ рд▓рд╛рдЗрди рдлрд┐рдб рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рдлрд░рдХ рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧрдХреЛ рдХрд╛рд░рдгрд▓реЗ рднрдПрдХреЛ рд╣реЛред "chunked" рдореЛрдбрдорд╛ рднрд╛рдЧрд╣рд░реВрдорд╛ рдЕрдиреБрд░реЛрдз рд╢рд░реАрд░

рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╛рдж рдЧрд░реМрдВ рдХрд┐ Node.js рдкреНрд▓реЗрдЯрдлрд░реНрдо рджреБрдмреИ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рд░реНрднрд░ рд╕рдорд░реНрдердирдХреЛ рд▓рд╛рдЧрд┐ рд░ рд╕рд╛рдзрд╛рд░рдг рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред Node.js рдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди, рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдЩреНрдХрд▓рди рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 рд╕рд░реНрднрд░рд╣рд░реВ рд░ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ, рдПрдХреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд┐рднрд┐рдиреНрди рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВ, WebSocket рд░ Ajax рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ, DBMS (MySQL, PostgreSQL, SQLite, MongoDB), рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдиреНрдЬрд┐рдирд╣рд░реВ, CSS рдЗрдиреНрдЬрд┐рдирд╣рд░реВ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ (OAuth), XML рдкрд╛рд░реНрд╕рд░рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдХрдиреЗрдХреНрдЯрд░рд╣рд░реВред

рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди, Node.js рд▓реЗ рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рдШрдЯрдирд╛ рдкреНрд░рд╢реЛрдзрди рд░ рдХрд▓рдмреНрдпрд╛рдХ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдЖрдзрд╛рд░рдорд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ epoll, kqueue, /dev/poll, рд░ рдЪрдпрди рд╕рдорд╛рд╡реЗрд╢ рдЫред рдЬрдбрд╛рди рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐, libuv рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдпреБрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ libev рд░ Windows рдорд╛ IOCP рдорд╛ рдПрдб-рдЕрди рд╣реЛред libeio рдкреБрд╕реНрддрдХрд╛рд▓рдп рдереНрд░реЗрдб рдкреВрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ c-ares рдПрдХ рдЧреИрд░-рдмреНрд▓рдХрд┐рдЩ рдореЛрдбрдорд╛ DNS рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдПрдХреАрдХреГрдд рдЫред рд╕рдмреИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдЬрд╕рд▓реЗ рдмреНрд▓рдХрд┐рдЩ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫ рдереНрд░реЗрдб рдкреВрд▓ рднрд┐рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐, рд╕рд┐рдЧреНрдирд▓ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдЬрд╕реНрддреИ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХрд╛рдордХреЛ рдирддрд┐рдЬрд╛ рдЕрдЬреНрдЮрд╛рдд рдкрд╛рдЗрдк рдорд╛рд░реНрдлрдд рдлрд┐рд░реНрддрд╛ рдкрд╛рд░реНрдЫред рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧреБрдЧрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд V8 рдЗрдиреНрдЬрд┐рдирдХреЛ рдкреНрд░рдпреЛрдЧ рдорд╛рд░реНрдлрдд рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЕрддрд┐рд░рд┐рдХреНрдд, рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯрд▓реЗ рдЪрдХреНрд░-рдХреЛрд░ рдЗрдиреНрдЬрд┐рдирдХреЛ рд╕рд╛рде Node.js рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ)ред

рдпрд╕рдХреЛ рдореВрд▓рдорд╛, Node.js Perl AnyEvent, Ruby Event Mechine, Python Twisted рдлреНрд░реЗрдорд╡рд░реНрдХ рд░ Tcl рдорд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ, рддрд░ Node.js рдорд╛ рдШрдЯрдирд╛ рд▓реБрдк рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдмрд╛рдЯ рд▓реБрдХреЗрдХреЛ рдЫ рд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдШрдЯрдирд╛ рдкреНрд░рд╢реЛрдзрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫред рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред node.js рдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡реЗрджрдирд╣рд░реВ рд▓реЗрдЦреНрджрд╛, рдШрдЯрдирд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "var result = db.query("select..");" рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ред рдХрд╛рдордХреЛ рд╕рдорд╛рдкрди рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдХреЛ рдкрдЫрд┐рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдБрджреИ, Node.js рд▓реЗ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреНред рдХреЛрдбрд▓рд╛рдИ "db.query("select..", function (рдирддрд┐рдЬрд╛) {рдирддрд┐рдЬрд╛ рдкреНрд░рд╢реЛрдзрди});" рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг рддреБрд░реБрдиреНрддреИ рдЕрд░реНрдХреЛ рдХреЛрдбрдорд╛ рдЬрд╛рдиреЗрдЫ, рд░ рдбрд╛рдЯрд╛ рдЖрдЗрдкреБрдЧреНрджрд╛ рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдорд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреЗрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди