Node.js 27 Alpha: V8 15.6, Iterator.zip, dan Perubahan Heap yang Wajib Diuji
  easystem   11 November 2026   Developer

Node 27 masih berstatus alpha, tetapi rilisnya sudah membawa perubahan yang cepat atau lambat akan terasa di lingkungan produksi. Tim inti melepas versi ini pada 29 Oktober 2026 dengan mesin JavaScript V8 15.6, lompatan cukup jauh dari V8 14.6 yang dipakai versi 26. Yang bergeser bukan hanya fitur bahasa, sebab default memori, perilaku HTTP, dan format serialisasi juga berubah dan sebagian di antaranya bisa memecahkan kode lama.

Kabar penting lain datang hari ini, karena proyek Node mengumumkan rilis keamanan untuk jalur 22, 24, dan 26 pada Rabu 11 November 2026 dengan isu berseveritas tertinggi HIGH di ketiga jalur tersebut. Sebelum bereksperimen dengan versi 27, pastikan server Anda sudah memakai patch keamanan terbaru pada jalur LTS yang dipakai.

Fitur bahasa baru yang langsung bisa dipakai

V8 15.6 mengaktifkan beberapa fitur bahasa secara default, dan yang paling terasa sehari-hari adalah Math.sumPrecise() yang mengurangi penumpukan galat pembulatan floating point ketika banyak angka dijumlahkan. Contoh klasiknya, penjumlahan 0,1 + 0,2 + 0,3 lewat reduce() menghasilkan 0,6000000000000001, sedangkan Math.sumPrecise() memberi 0,6. Untuk laporan keuangan atau rekap nilai, selisih sekecil itu sering berujung pada angka yang tidak cocok saat direkap.

Selain itu ada properti variants pada Intl Locale, plus empat method iterator baru: join(), includes(), zip(), dan zipKeyed(). Yang paling praktis adalah Iterator.zip(), karena ia menggabungkan dua sumber data berurutan, misalnya daftar NIP dan daftar nama hasil impor spreadsheet, tanpa perlu loop indeks manual. ZipKeyed() melakukan hal serupa untuk data berbentuk objek, sementara join() dan includes() memungkinkan pemakaian method mirip array langsung pada iterator.

Fitur eksperimental yang masih di balik flag antara lain import defer (--js-defer-import-eval) dan Immutable ArrayBuffer (--js-immutable-arraybuffer), jadi keduanya belum layak diandalkan untuk kode produksi.

Perubahan perilaku yang berpotensi memecahkan aplikasi

Bagian berikut perlu dibaca tim yang mengelola layanan berjalan, karena status alpha memang membolehkan perubahan besar dan beberapa di antaranya sudah tercatat resmi di catatan rilis.

  • Batas heap default berubah. Bila --max-old-space-size tidak diset, batas heap kini separuh RAM fisik dengan rentang 256 MB hingga 4 GB, dan memori yang dipegang Buffer maupun ArrayBuffer ikut dihitung dalam batas tersebut. Aplikasi yang selama ini mengandalkan default lama sebaiknya menetapkan nilainya secara eksplisit.
  • Keep-alive HTTP naik ke 65 detik, sehingga konfigurasi reverse proxy, load balancer, atau Cloudflare di depan aplikasi perlu diselaraskan agar koneksi tidak menggantung.
  • Header request memakai null prototype, sehingga kode yang memanggil hasOwnProperty('host') pada objek header akan error dan perlu diganti dengan Object.hasOwn().
  • Stack error tidak lagi diwarisi lewat prototype, artinya objek turunan hasil Object.create(err) tidak lagi membawa stack trace.
  • Hasil fungsi Math bisa berbeda di digit terakhir karena versi baru memakai libm dari LLVM, sehingga uji yang membandingkan hasil floating point dengan angka hardcode berpotensi gagal. Urutan angka acak untuk seed tertentu juga berubah.
  • Pengurutan array memakai PowerSort untuk array besar; hasilnya tetap stabil, tetapi jumlah pemanggilan comparator berbeda sehingga kode dengan comparator berefek samping perlu diuji ulang.
  • Format serialisasi berubah, karena v8.serialize(), structuredClone(), dan postMessage() kini memakai format yang tidak bisa dibaca versi lama; cache atau payload antar-worker yang disimpan lintas versi perlu dibersihkan saat upgrade.

Sisi keamanan dan dependensi

Node 27 mewajibkan OpenSSL 3 atau lebih baru dengan bundel naik ke OpenSSL 4.1, menghapus build FIPS provider bawaan, dan menghentikan dukungan OpenSSL engine pada API crypto, https, serta tls. Modul domain deprecated secara runtime, begitu pula pembuatan instance http tanpa new. Di sisi penguatan, model permission mendapat flag baru --allow-env, npm bawaan naik ke versi 12, dan fs.glob() kini diimplementasikan native sehingga pencarian file sederhana tidak selalu butuh paket pihak ketiga.

Langkah praktis untuk tim

  1. Hari ini: pasang patch keamanan HIGH pada jalur 22, 24, atau 26 yang dipakai server Anda, karena ini prioritas dan bukan pekerjaan opsional.
  2. Minggu ini: jalankan test suite di CI dengan Node 27 alpha lewat nvm atau matrix setup-node, lalu catat kegagalan yang muncul tanpa memasangnya di produksi.
  3. Tetapkan --max-old-space-size secara eksplisit di Dockerfile atau unit systemd, lalu ukur ulang pemakaian memori pada beban kerja yang paling berat.
  4. Audit akses header request dan pembacaan stack error.
  5. Periksa native addon, sebab perubahan ABI ditandai kenaikan NODE_MODULE_VERSION dan toolchain harus memilih prebuilt yang cocok dengan versi runtime yang dipakai.
  6. Siapkan rencana rollback dan catat perubahan perilaku di dokumen internal sebelum menyentuh layanan klien.

Kesimpulannya, versi 27 layak dicoba sekarang justru karena perubahan memorinya besar: lebih murah menemukan masalah heap dan header di CI daripada di server produksi pemda atau sekolah yang dipakai pada jam kerja. Untuk produksi, tetap bertahan di jalur LTS dengan patch keamanan terbaru.

Sumber: catatan rilis Node 27 alpha, Notable V8 changes from Node 26 to 27, dan Security Releases 11 November 2026.

Tags :

nodejs , v8 , javascript , developer

Bagikan :