Node.js 27.0.0-alpha ra mắt ngày 29/10/2026, nâng V8 từ 14.6 lên 15.6 — bước nhảy một năm của engine JavaScript. Bản alpha mang nhiều tính năng mới bật sẵn, hiệu năng nhanh hơn và garbage collection dừng ngắn hơn, nhưng đổi định dạng serialize, tăng heap mặc định và thay đổi vài hành vi cũ. Đây là bản thử nghiệm, không đưa lên production.
Node.js 27 là bản lớn đầu tiên theo lịch mới — một năm một bản lớn, bản nào cũng lên LTS — và alpha hôm nay định hình runtime bạn dùng vài năm tới.
Tính năng JavaScript mới bật mặc định
V8 15.6 bật sẵn nhiều tính năng mới. Math.sumPrecise cộng dãy số với sai số nhỏ hơn nhiều so với vòng lặp cộng tay — 0.1 + 0.2 + 0.3 cuối cùng cũng ra đúng 0.6. Nhóm Iterator có thêm join, includes, zip và zipKeyed để xử lý iterator trực tiếp, khỏi chuyển sang mảng trước.
- Math.sumPrecise — cộng dãy số chính xác hơn.
- Iterator.prototype.join, includes — nối chuỗi, kiểm tra phần tử trên iterator.
- Iterator.zip, zipKeyed — gộp nhiều iterable thành tuple hoặc object.
- Intl.Locale.prototype.variants — đọc variant subtag của locale.
Math.sumPrecise([0.1, 0.2, 0.3]); // 0.6[1, 2, 3].values().map(x => x * 2).join('-'); // '2-4-6'Iterator.zip([[1, 2], ['a', 'b']]).toArray(); // [[1, 'a'], [2, 'b']]
Nhanh hơn và dừng GC ngắn hơn
V8 15.6 tối ưu Array, String, JSON, async, BigInt và regex. Regex biên dịch sang mã máy ngay lần đầu dùng, BigInt chia lấy dư nhanh hơn khoảng 25%, JSON.parse nhanh hơn với đầu vào nhiều chuỗi. Garbage collection ấn tượng nhất: trường hợp xấu nhất giảm từ khoảng 45 ms xuống khoảng 10 ms. Đổi lại, mỗi isolate tốn thêm khoảng 180 KB, heap mặc định tăng lên — máy 8 GB giờ được 4 GB thay vì 2 GB.
Những thay đổi có thể làm vỡ code của bạn
Một số hàm Math dùng LLVM libm nên kết quả có thể lệch ở bit cuối, làm fail test so sánh số thực với giá trị ghi cứng. Math.random bỏ cache nên cùng –random-seed cho dãy số khác. Array.prototype.sort chuyển từ TimSort sang PowerSort: kết quả không đổi nhưng số lần gọi comparator thay đổi. Định dạng serialize mới (v8.serialize, structuredClone, postMessage) không đọc được bởi Node.js cũ. Heap snapshot giờ chứa toàn bộ source code, nặng gấp đôi — coi như dữ liệu nhạy cảm. Live editing qua inspector bị gỡ hẳn; flag –experimental-wasm-* đổi tên thành –wasm-*.
Lịch trình Node.js 27
Node.js 27 đang ở giai đoạn alpha 6 tháng theo lịch mới. Bản Current dự kiến ngày 22/4/2027, lên LTS ngày 20/10/2027, hỗ trợ tới 30/4/2030. Trong lúc chờ, Node.js 26 (LTS từ 28/10/2026, tên mã Lithium, hỗ trợ tới 30/4/2029) vẫn là lựa chọn an toàn cho production.
Điều này có ý nghĩa gì với bạn
Hãy chạy thử alpha trong CI ngay: rà soát snapshot test về Math, test đếm số lần gọi comparator của sort, và mọi chỗ dùng v8.serialize hay structuredClone xuyên phiên bản. Phát hiện sớm một test vỡ trong alpha rẻ hơn nhiều so với sửa gấp khi bản LTS ra.
Bài viết liên quan
- Node.js 26.10.0 ra mắt: crypto.parsePKCS12(), fs.openAsBlobSync(), util.throttle()/debounce() và cải tiến SQLite
- Node.js 22.23.3 LTS ra mắt: vá lỗi bộ nhớ HTTP/2 nguy hiểm, ai chạy Node 22 nên cập nhật
Câu hỏi thường gặp
Node.js 27 Alpha có dùng được trên production không?
Không. Đây là bản xem trước để thử nghiệm và báo lỗi; production nên ở Node.js 26 LTS.
Nâng cấp lên Node.js 27 cần kiểm tra những gì trước?
Ba điểm dễ vỡ nhất: test so sánh kết quả Math với giá trị ghi cứng, test đếm số lần gọi comparator của sort, và dữ liệu v8.serialize/structuredClone giữa các phiên bản Node.js.
Khi nào Node.js 27 trở thành LTS?
Theo lịch Release Working Group, bản Current ra ngày 22/4/2027, lên LTS ngày 20/10/2027, hỗ trợ tới 30/4/2030.
💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.
Nguồn tham khảo
- Node.js Blog — Notable V8 changes from Node.js 26 to 27 (Alpha)
- Node.js — Releases
- Vinish.dev — Node.js 27 Alpha Upgrades to V8 15.6
