Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· Node.js 19.0, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript. Node.js 19 ΠΎΡΠ½Π΅ΡΡΠ½ ΠΊ Π²Π΅ΡΠΊΠ΅ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ ΠΈΡΠ½Ρ 2023 Π³ΠΎΠ΄Π°. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π΄Π½ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΡΠΊΠΈ Node.js 18, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΠ°ΡΡΡ LTS ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π°ΠΏΡΠ΅Π»Ρ 2025 Π³ΠΎΠ΄Π°. Π‘ΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠΉ LTS-Π²Π΅ΡΠΊΠΈ Node.js 16.0 ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ Π΄ΠΎ ΡΠ΅Π½ΡΡΠ±ΡΡ 2023 Π³ΠΎΠ΄Π°, Π° ΠΏΠΎΠ·Π°ΠΏΡΠΎΡΠ»ΠΎΠΉ LTS-Π²Π΅ΡΠΊΠΈ 14.0 Π΄ΠΎ Π°ΠΏΡΠ΅Π»Ρ 2023 Π³ΠΎΠ΄Π°.
Perbaikan utama:
- ΠΠ²ΠΈΠΆΠΎΠΊ V8 ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 10.7, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ Π² Chromium 107. ΠΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π²Π΅ΡΠΊΠΎΠΉ Node.js 18 ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ API Intl.NumberFormat, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ formatRange(), formatRangeToParts() ΠΈ selectRange(), Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ², Π½ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΈ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠΎΠΊ ΠΊΠ°ΠΊ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π». Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ llhttp 8.1.0 ΠΈ npm 8.19.2.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«node βwatchΒ» Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Β«node βwatch index.jsΒ» ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ index.js).
- ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ HTTP/HTTPS-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° HTTP 1.1 Keep-Alive, ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Keep-Alive ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ°ΡΡ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΠΌ Π²ΡΡΡΠ°Π²Π»Π΅Π½ Π² 5 ΡΠ΅ΠΊΡΠ½Π΄. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π±ΠΎΡΠ° HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Keep-Alive Π² ΠΎΡΠ²Π΅ΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ HTTP-ΡΠ΅ΡΠ²Π΅ΡΠ° Node.js Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Keep-Alive.
- Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½ API WebCrypto, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Ed25519, Ed448, X25519 ΠΈ X448. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ WebCrypto ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ globalThis.crypto ΠΈΠ»ΠΈ require(βnode:cryptoβ).webcrypto.
- Π£Π΄Π°Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ DTrace, SystemTap ΠΈ ETW (Event Tracing for Windows), ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ·Π½Π°Π½ΠΎ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
Platform Node.js tiasa dianggo pikeun pangropΓ©a pangladΓ©n aplikasi wΓ©b sareng pikeun nyiptakeun program jaringan klien sareng server biasa. Pikeun dilegakeun pungsionalitas aplikasi pikeun Node.js, kumpulan modul anu ageung parantos disiapkeun, dimana anjeun tiasa mendakan modul kalayan palaksanaan HTTP, SMTP, XMPP, DNS, FTP, IMAP, server POP3 sareng klien, modul pikeun integrasi. kalawan rupa web frameworks, WebSocket na AJAX pawang , panyambungna DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mesin templating, mesin CSS, palaksanaan algoritma crypto sarta sistem otorisasina (OAuth), XML parsers.
Pikeun mastikeun ngolah sajumlah ageung pamundut paralel, Node.js nganggo modΓ©l palaksanaan kode Asynchronous dumasar kana penanganan acara non-blocking sareng definisi panangan callback. MΓ©tode anu dirojong pikeun sambungan multiplexing nyaΓ©ta epoll, kqueue, / dev / poll, sareng pilih. Pikeun sambungan multiplexing, perpustakaan libuv dipakΓ©, nu mangrupa tambihan-on pikeun libev on sistem Unix sarta IOCP on Windows. Perpustakaan libeio dipakΓ© pikeun nyieun kolam renang thread, sarta c-ares ieu terpadu pikeun ngalakukeun queries DNS dina modeu non-blocking. Sadaya panggero sistem anu nyababkeun blocking dieksekusi di jero kolam renang teras, sapertos panangan sinyal, nransferkeun hasil padamelanna deui ngaliwatan pipa anu henteu namina (pipa). Eksekusi kode JavaScript disayogikeun ku ngagunakeun mesin V8 anu dikembangkeun ku Google (sajaba ti Γ©ta, Microsoft ngembangkeun versi Node.js sareng mesin Chakra-Core).
Intina, Node.js sami sareng Perl AnyEvent, Mesin Acara Ruby, kerangka Python Twisted, sareng palaksanaan acara Tcl, tapi loop acara di Node.js disumputkeun tina pamekar sareng nyarupaan penanganan acara dina aplikasi wΓ©b anu ngajalankeun. dina browser. Nalika nulis aplikasi pikeun node.js, Anjeun kudu mertimbangkeun spΓ©sifik program acara-disetir, contona, tinimbang ngalakukeun "var hasil = db.query ("pilih ..");" kalayan ngantosan parantosan padamelan sareng ngolah hasil salajengna, Node.js nganggo prinsip palaksanaan asinkron, nyaΓ©ta. kode ieu ngajanggΓ©lΓ©k jadi "db.query ("pilih ..", fungsi (hasil) {prosΓ©s hasil});", nu kontrol bakal langsung ngalirkeun kana kode salajengna, sarta hasil query bakal diolah sakumaha data datang.
sumber: opennet.ru