Node.js 24 개요

Node.js 24는 V8 엔진 13.6 업그레이드, Permission Model 안정화, npm 11 탑재 등 대규모 변경을 포함합니다. 2025년 10월 LTS로 전환되어 2028년 4월까지 지원됩니다.

V8 13.6 엔진의 새로운 JavaScript 기능

1. Float16Array

16비트 부동소수점 타입 배열이 추가되었습니다. 그래픽스, ML 추론 등 메모리 효율이 중요한 작업에 유용합니다.

// Float16Array - 16비트 부동소수점 배열
const f16 = new Float16Array([1.5, 2.7, 3.14]);
console.log(f16.byteLength); // 6 (각 요소 2바이트)
console.log(f16[2]);         // 3.140625 (16비트 정밀도)

// Float32Array 대비 메모리 50% 절약
const f32 = new Float32Array(1000000); // 4MB
const f16arr = new Float16Array(1000000); // 2MB

2. RegExp.escape()

정규식 특수문자를 안전하게 이스케이프하는 정적 메서드입니다.

// 사용자 입력을 정규식에 안전하게 사용
const userInput = "price: $100 (USD)";
const escaped = RegExp.escape(userInput);
console.log(escaped); // "price\:\ \$100\ \(USD\)"

// 동적 패턴 생성에 활용
function findExact(text, searchTerm) {
    const pattern = new RegExp(RegExp.escape(searchTerm), 'gi');
    return text.match(pattern);
}

3. Error.isError()

객체가 실제 Error 인스턴스인지 확인하는 유틸리티입니다.

Error.isError(new Error('test'));      // true
Error.isError(new TypeError('test'));  // true
Error.isError({ message: 'fake' });   // false
Error.isError(null);                   // false

4. Atomics.pause()

Worker 스레드에서 저수준 동시성 제어에 사용됩니다.

// spin-wait 루프에서 CPU 사이클 절약
const sharedBuffer = new SharedArrayBuffer(4);
const view = new Int32Array(sharedBuffer);

// Worker에서 값 변경 대기
while (Atomics.load(view, 0) === 0) {
    Atomics.pause(); // CPU 힌트 - 바쁜 대기 최적화
}

Permission Model 안정화

실험적이었던 Permission Model이 --permission 플래그로 안정화되었습니다.

# 파일 읽기만 허용 (쓰기 차단)
node --permission --allow-fs-read=/app/data server.js

# 네트워크 + 특정 디렉토리 읽기/쓰기
node --permission \
  --allow-fs-read=/app \
  --allow-fs-write=/app/logs \
  --allow-net=api.example.com \
  server.js

글로벌 URLPattern

import 없이 바로 사용할 수 있는 URL 패턴 매칭입니다.

// 글로벌에서 바로 사용 가능
const pattern = new URLPattern({
    pathname: '/api/users/:id'
});

const result = pattern.exec('https://example.com/api/users/42');
console.log(result.pathname.groups.id); // '42'

// Express 스타일 라우팅
const routes = [
    { pattern: new URLPattern({ pathname: '/api/posts/:id' }), handler: getPost },
    { pattern: new URLPattern({ pathname: '/api/users/*' }), handler: getUsers }
];

Test Runner 개선

서브테스트 자동 대기가 적용되어 수동 await가 불필요합니다.

import { describe, it } from 'node:test';
import assert from 'node:assert';

describe('User API', () => {
    // Node.js 24: 서브테스트가 자동으로 완료 대기
    it('should create user', () => {
        const user = createUser('test');
        assert.strictEqual(user.name, 'test');
    });
});

npm 11

npm 11은 더 빠른 설치 속도와 강화된 보안 감사 기능을 제공합니다. 의존성 해석 알고리즘이 개선되어 설치 시간이 단축되었습니다.