Platform JavaScript Node.js 22.0.0 tersedia

Node.js 22.0 telah dikeluarkan, platform untuk menjalankan aplikasi rangkaian dalam JavaScript. Node.js 22.0 diklasifikasikan sebagai cawangan sokongan jangka panjang, tetapi status ini akan diberikan hanya pada bulan Oktober, selepas penstabilan. Node.js 22.x akan disokong sehingga 30 April 2027. Penyelenggaraan cawangan LTS sebelumnya Node.js 20.x akan berlangsung sehingga April 2026, dan tahun sebelum cawangan LTS terakhir 18.x sehingga April 2025. Cawangan pementasan Node.js 21.x akan dihentikan pada 1 Jun 2024.

Penambahbaikan utama:

  • Enjin V8 telah dikemas kini kepada versi 12.4, digunakan dalam Chromium 124. Antara perubahan berbanding cawangan Node.js 21, yang menggunakan enjin V8 11.8), adalah diperhatikan:
    • Sokongan untuk sambungan WasmGC, yang memudahkan pemindahan program yang ditulis dalam bahasa pengaturcaraan yang menggunakan pengumpul sampah (Kotlin, PHP, Java, dll.) ke WebAssembly. WasmGC menambah jenis struktur dan tatasusunan baharu yang boleh menggunakan peruntukan memori bukan linear.
    • Sokongan untuk kaedah Array.fromAsync(), yang secara tak segerak mengembalikan tika baharu objek Tatasusunan yang disalin daripada objek seperti tatasusunan, boleh lelar atau tidak segerak.
    • Sokongan untuk kaedah iterator seperti .map, .filter, .find, .take, .drop, .forEach dan .reduce.
    • Sokongan untuk objek Set yang mentakrifkan koleksi nilai dan menawarkan kaedah yang melaksanakan operasi set biasa, seperti persilangan, kesatuan, perbezaan dan penambahan.
  • Pengkompil JIT yang mengoptimumkan Maglev didayakan secara lalai, bertujuan untuk menjana kod mesin berprestasi tinggi dengan cepat untuk kod JavaScript yang banyak digunakan. Mendayakan Maglev boleh mempercepatkan aplikasi CLI jangka pendek yang tidak melaksanakan operasi jangka panjang dengan ketara, contohnya, masa untuk menyelesaikan ujian Jetstrea dikurangkan sebanyak 7.5%, dan ujian Speedometer sebanyak 5%.
  • Bekerja dengan aliran telah dipercepatkan dengan meningkatkan nilai pilihan highWaterMark daripada 16 KB kepada 65 KB (mentakrifkan had sehingga rakaman ditimbal). Perubahan ini menyebabkan penggunaan memori meningkat, jadi aplikasi yang direka untuk berjalan pada RAM terhad mungkin perlu kembali kepada nilai lama melalui panggilan ke setDefaultHighWaterMark().
  • Peningkatan prestasi fetch() dan API runner ujian dengan menjadikan instantiasi AbortSignal lebih cekap. Prestasi API yang berkaitan dengan kerja segerak dengan sistem fail telah dipertingkatkan.
  • Ciri percubaan telah disediakan untuk menggunakan panggilan "require()" untuk memuatkan modul ESM JavaScript (Modul ECMAScript) dalam mod segerak. Modul ESM digunakan dalam pelayar dan menggantikan modul CommonJS khusus untuk Node.js. Untuk memuatkan melalui "require()", modul ESM mesti dilaksanakan dalam mod segerak (tanpa menunggu di peringkat atas). Sokongan didayakan melalui bendera "--experimental-require-module".
  • Menambahkan keupayaan percubaan untuk menjalankan skrip yang ditakrifkan dalam fail package.json menggunakan arahan "--run". "
  • Perintah β€œnod –watch” telah dialihkan ke kategori stabil dengan pelaksanaan mod jam tangan yang memastikan proses dimulakan semula apabila fail yang diimport berubah (contohnya, jika β€œnode –watch index.js” dilaksanakan, proses akan dimulakan semula secara automatik apabila index.js berubah).
  • Pelaksanaan asli API WebSocket telah distabilkan, membolehkan WebSocket digunakan dalam mod klien tanpa memasang kebergantungan tambahan.
  • Menambahkan sokongan separa untuk API Navigator.
  • Webstreams API telah menambah sokongan untuk format mampatan mentah kempis.
  • Menambahkan fungsi glob dan globSync pada node:fsmodule untuk padanan corak laluan fail.
  • Pengendalian yang lebih baik bagi tindanan IPv6 yang dikonfigurasikan secara salah. Algoritma Happy Eyeballs yang dilaksanakan untuk pengembalian pantas sekiranya berlaku masalah dengan operasi IPv6.
  • API util telah ditamatkan.
  • Versi pergantungan yang dikemas kini: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson kepada 3.8.0, ada 2.7.7 dan undici 6.6.0 .

Platform Node.js boleh digunakan untuk penyelenggaraan pelayan aplikasi Web dan untuk mencipta program rangkaian pelanggan dan pelayan biasa. Untuk mengembangkan fungsi aplikasi untuk Node.js, koleksi modul yang besar telah disediakan, di mana anda boleh mencari modul dengan pelaksanaan HTTP, SMTP, XMPP, DNS, FTP, IMAP, pelayan dan klien POP3, modul untuk penyepaduan dengan pelbagai rangka kerja web, pengendali WebSocket dan Ajax , penyambung DBMS (MySQL, PostgreSQL, SQLite, MongoDB), enjin templat, enjin CSS, pelaksanaan algoritma kripto dan sistem kebenaran (OAuth), penghurai XML.

Untuk mengendalikan sejumlah besar permintaan selari, Node.js menggunakan model pelaksanaan kod tak segerak berdasarkan pemprosesan acara tidak menyekat dan mentakrifkan pengendali panggil balik. Kaedah yang disokong untuk pemultipleksan sambungan termasuk epoll, kqueue, /dev/poll, dan pilih. Untuk pemultipleksan sambungan, perpustakaan libuv digunakan, yang merupakan tambahan kepada libev pada sistem Unix dan kepada IOCP pada Windows. Pustaka libeio digunakan untuk mencipta kumpulan benang, dan c-ares disepadukan untuk melaksanakan pertanyaan DNS dalam mod tidak menyekat. Semua panggilan sistem yang menyebabkan penyekatan dilaksanakan dalam kumpulan benang dan kemudian, seperti pengendali isyarat, menghantar hasil kerja mereka kembali melalui paip yang tidak dinamakan.

Pelaksanaan kod JavaScript dipastikan melalui penggunaan enjin V8 yang dibangunkan oleh Google (selain itu, Microsoft sedang membangunkan versi Node.js dengan enjin Chakra-Core). Pada terasnya, Node.js adalah serupa dengan Perl AnyEvent, Mesin Acara Ruby, rangka kerja Python Twisted dan pelaksanaan acara dalam Tcl, tetapi gelung acara dalam Node.js disembunyikan daripada pembangun dan menyerupai pemprosesan acara dalam aplikasi web berjalan dalam penyemak imbas.

Sumber: opennet.ru

Tambah komen