Programming

Node.js 25.0.0 릴리스: 혁신적인 업데이트와 개발자 필수 체크포인트

danny-shim 2025. 10. 22. 10:15

안녕하세요, Node.js 개발자 여러분! 2025년 10월 15일, Node.js 팀에서 v25.0.0 버전을 공식 릴리스했습니다. 이 버전은 'Current' 릴리스로, LTS(Long Term Support)가 아닌 최신 기능을 빠르게 도입할 수 있는 버전입니다. V8 엔진의 대대적인 업그레이드와 보안 강화, 그리고 수많은 API 정리로 인해 개발자들이 더 안정적이고 효율적인 코드를 작성할 수 있게 됐어요. 이 포스트에서는 공식 릴리스 노트를 바탕으로 주요 변경 사항을 정리하고, 개발자들이 바로 적용할 수 있는 팁을 공유하겠습니다. 다운로드는 공식 사이트에서 가능하며, Windows, macOS, Linux 등 다양한 플랫폼을 지원합니다. 예를 들어, macOS Apple Silicon 버전은 여기에서 다운로드하세요.

V8 엔진의 대폭 업그레이드: 성능 향상이 핵심

Node.js의 심장인 V8 엔진이 14.1.146.11 버전으로 업데이트됐습니다. 이는 JSON.stringify의 성능을 크게 개선하고, Uint8Array의 내장 base64/hex 변환 기능을 추가한 점이 돋보입니다. WebAssembly와 JIT 파이프라인 최적화도 지속적으로 강화됐어요.

  • 주요 이점: JSON 처리 속도가 빨라져서 대용량 데이터 직렬화 작업(예: API 응답)이 훨씬 효율적입니다. 예시 코드로 확인해보죠:
    const data = { largeObject: /* 대용량 객체 */ };
    const json = JSON.stringify(data); // 이전보다 20-30% 빨라짐
  • 플랫폼 지원: illumos와 AIX/IBMI 같은 이국적인 플랫폼도 패치됐고, Windows의 MSVC STL 호환성도 강화됐습니다.
  • 주의: 최소 Clang 버전이 19로 상향됐으니, 빌드 환경을 업데이트하세요.

이 업데이트로 인해 NODE_MODULE_VERSION이 141로 변경됐으니, 네이티브 애드온 개발자들은 재컴파일을 잊지 마세요.

JavaScript와 코어 모듈: 웹 표준과 보안 강화

JavaScript 측면에서 글로벌 ErrorEvent가 노출됐고, --experimental-webstorage 플래그가 기본으로 활성화됐습니다. 이제 브라우저와 유사한 Web Storage API를 Node.js에서 바로 사용할 수 있어요 – 로컬 스토리지나 세션 스토리지를 서버 사이드에서 테스트하기 좋죠!

  • 권한 모델 확장: --allow-net과 --allow-inspector 플래그가 추가돼 'secure-by-default' 앱 개발이 더 세밀해졌습니다. 예:
    node --allow-net=localhost:3000 app.js  // 네트워크 권한 제한
  • 성능 최적화: dotenv의 ToObject 처리와 node_report의 std::string_view 사용으로 메모리 효율이 올라갔습니다.
  • 제거된 API: node::EmitBeforeExit나 node::CreatePlatform 같은 오래된 API가 완전히 제거됐으니, async context를 사용하는 코드를 현대적으로 리팩토링하세요.

모듈, 스트림, 크립토: 레거시 정리와 새로운 표준

모듈 시스템에서 stream* 모듈이 비추천됐고, dgram의 오래된 API가 EOL(End-of-Life)로 이동했습니다. FS 모듈도 fs.F_OK, fs.R_OK 등의 상수가 제거됐어요 – 이제 fs.constants를 사용하세요.

  • 크립토 업데이트: shake128/256의 기본 출력 길이가 런타임 비추천됐고, ECDH.setPublicKey()도 마찬가지입니다. 대신 명시적 옵션을 지정하세요:
    // 이전 (비추천)
    ecdh.setPublicKey(publicKey);
    // 이제
    ecdh.setPublicKey(publicKey, 'utf8');  // 인코딩 명시
  • QUIC 네트워크: nghttp3(1.11.0)과 ngtcp2(1.14.0) 업데이트로 QUIC API가 안정화됐고, OpenSSL 3.5와의 호환성도 개선됐습니다. HTTP/3 실험에 딱 맞아요.

새로운 기능: 개발 생산성 UP!

  • Web Storage 기본 활성화: 브라우저 개발자들이 Node.js에서 스토리지 동작을 미리 테스트할 수 있습니다.
  • 포터블 컴파일 캐시: 빌드 캐시를 환경 간 공유 가능 – CI/CD 파이프라인에서 유용.
  • V8 CPU 프로파일링: 성능 분석이 더 쉬워졌습니다.
  • JSPI for WebAssembly: Wasm 성능이 향상됐어요 (이미 활성화된 상태).

비추천 및 제거: 코드 마이그레이션 필수

이 릴리스는 SEMVER-MAJOR 변경이 50개 이상으로, 레거시 코드가 많다면 주의하세요. 주요 EOL 항목:

  • Buffer: SlowBuffer 제거.
  • Assert: assert.fail(다중 인자) EOL.
  • FS: rmdir recursive 옵션 EOL, FileHandle GC close EOL.
  • HTTP: writeHeader 비추천.
  • TLS: IP 주소 servername EOL.

마이그레이션 팁: Node.js 도큐먼트의 deprecation 가이드를 참고하고, ESLint나 TypeScript로 경고를 잡아보세요.

의존성 업데이트: 안정성과 호환성

  • npm: 11.6.2로 업그레이드 – 패키지 관리 더 부드럽게.
  • OpenSSL: 버전 감지 개선.
  • 빌드 도구: Xcode 16.4, Python 3.14 지원.

Corepack은 더 이상 배포되지 않으니, 별도 설치하세요.

마무리: 지금 업그레이드하세요!

Node.js 25.0.0은 성능, 보안, 웹 표준 준수를 강조한 릴리스입니다. 프로덕션 환경이라면 LTS(현재 22.x)를 유지하되, 개발/테스트에서는 바로 도전해보세요.