Node.js 24.0.0, platform untuk menjalankan aplikasi jaringan dalam JavaScript, telah dirilis. Node.js 24.0 ditetapkan ke cabang dukungan jangka panjang, tetapi status ini akan ditetapkan hanya pada bulan Oktober, setelah stabilisasi. Node.js 24.x akan didukung hingga 30 April 2028. Cabang LTS sebelumnya Node.js 22.x akan didukung hingga April 2027, dan cabang LTS sebelumnya 20.x akan didukung hingga April 2026. Pemeliharaan cabang LTS 18.x akan berakhir pada 30 April 2025, dan cabang perantara Node.js 23.x akan berakhir pada 1 Juni 2025.
Perbaikan utama:
- API AsyncLocalStorage menggunakan kelas AsyncContextFrame secara default, yang ditandai sebagai stabil. AsyncContextFrame menerapkan mekanisme yang lebih efisien untuk melacak konteks asinkron, yang dapat meningkatkan kinerja secara signifikan.
- API URLPattern sekarang tersedia sebagai objek global yang dapat digunakan tanpa impor eksplisit. URLPattern menyediakan kemampuan untuk memeriksa apakah URL cocok dengan pola tertentu, yang dapat digunakan, misalnya, untuk mengurai tautan.
- Mekanisme Model Izin telah ditingkatkan dan distabilkan, yang memungkinkan Anda membatasi akses ke sumber daya tertentu selama eksekusi (misalnya, Anda dapat melarang pembuatan proses anak, membatasi akses untuk menulis atau membaca ke bagian tertentu dari FS, menonaktifkan add-on). Alih-alih tanda eksperimental "--experimental-permission", tanda "--permission" kini dapat digunakan untuk mengaktifkan Model Izin.
- Kemampuan modul node:test (test_runner), yang dirancang untuk membuat dan menjalankan pengujian dalam JavaScript yang mengembalikan hasil dalam format TAP (Test Anything Protocol), telah diperluas. Modul sekarang secara otomatis menunggu pengujian bertingkat selesai tanpa perlu menggunakan await.
- Klien HTTP undici telah diperbarui ke cabang 7.x, yang meningkatkan kinerja dan menambahkan dukungan untuk fitur HTTP baru.
- Mesin V8 telah diperbarui ke versi 13.6, yang digunakan dalam Chromium 136. Fitur-fitur baru dibandingkan dengan rilis Node.js sebelumnya meliputi dukungan untuk array Float16Array yang diketik, manajemen sumber daya manual, metode RegExp.escape (string escape untuk RegExp), pointer 64-bit (Memory64) dalam WebAssembly, dan metode Error.isError.
- Manajer paket NPM telah diperbarui ke versi 11.
- Dukungan kompiler MSVC telah dihentikan. Untuk mengkompilasi pada platform Windows Anda perlu menggunakan ClangCL.
Platform Node.js dapat digunakan baik untuk dukungan sisi server aplikasi web maupun untuk membuat program jaringan sisi klien dan server standar. Untuk memperluas fungsionalitas aplikasi Node.js, sejumlah besar modul telah disiapkan, termasuk modul yang mengimplementasikan server dan klien HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modul untuk integrasi dengan berbagai kerangka kerja web, penangan WebSocket dan Ajax, konektor ke DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mesin templat, mesin CSS, implementasi algoritma kriptografi dan sistem otorisasi (OAuth), parser XML.
Untuk menangani sejumlah besar permintaan bersamaan, Node.js menggunakan model eksekusi kode asinkron berdasarkan penanganan peristiwa non-pemblokiran dan penentuan penangan panggilan balik. Metode yang didukung untuk koneksi multiplexing meliputi epoll, kqueue, /dev/poll, dan select. Untuk koneksi multipleks, pustaka libuv digunakan, yang merupakan superset libev pada sistem Unix dan IOCP pada Windows. Pustaka libeio digunakan untuk membuat kumpulan utas, dan c-ares diintegrasikan untuk melakukan kueri DNS dalam mode non-pemblokiran. Semua panggilan sistem pemblokiran dieksekusi di dalam kumpulan utas dan kemudian, seperti pengendali sinyal, meneruskan hasil pekerjaannya kembali melalui saluran yang tidak disebutkan namanya.
Eksekusi kode JavaScript dipastikan melalui penggunaan mesin V8 yang dikembangkan oleh Google (selain itu, Microsoft sedang mengembangkan versi Node.js dengan mesin Chakra-Core). Pada intinya, Node.js mirip dengan Perl AnyEvent, Ruby Event Machine, kerangka Python Twisted dan implementasi event di Tcl, namun event loop di Node.js disembunyikan dari pengembang dan menyerupai pemrosesan event di aplikasi web berjalan di peramban.
Sumber: opennet.ru
