피드로 돌아가기
Node.js 9.6.0 (Current)
Node.js BlogNode.js Blog
Backend

Node.js 9.6.0이 async_hooks 정규화, 동적 import 지원, HTTP/2 옵션 확장으로 비동기 프로그래밍 안정성과 모듈 시스템 기능 강화

Node.js 9.6.0 (Current)

2018년 2월 22일6intermediate

Context

Node.js 런타임의 비동기 작업 추적(async_hooks) API에 안전하지 않은 메서드가 존재했고, 동적 import와 VM 모듈 지원이 부재하여 모던 JavaScript 워크플로우 적용에 제약이 있었다.

Technical Solution

  • async_hooks의 unsafe emit{Before,After} 메서드를 Deprecate 처리: 안전하지 않은 비동기 후킹 방식 제거 경고
  • PromiseWrap.parentId를 PromiseWrap.isChainedPromise로 명확화: Promise 체이닝 관계를 직관적으로 식별
  • 동적 import(dynamic import) 활성화: ECMAScript 모듈의 런타임 로드 지원
  • VM 모듈에 ECMAScript 모듈 지원 추가: 가상 머신 환경에서 모던 모듈 문법 실행 가능
  • HTTP/2 및 HTTPS 서버의 생성 옵션 확장: IncomingMessage, ServerResponse 커스터마이제이션 및 tls.createSecureContext() 옵션 통합
  • ICU를 60.2로 업그레이드: 국제화 지원 강화
  • n-api에 콜백 스코프 관리 메서드 추가: C++ 네이티브 바인딩의 메모리 안정성 개선
  • Inspector에 --inspect-brk 플래그 추가: ES 모듈 디버깅 지원

Impact

아티클에 정량적 성능 수치나 개선 지표가 명시되지 않음.

Key Takeaway

Node.js 메이저 릴리스에서 비동기 추적 API 정규화와 모던 ECMAScript 기능(동적 import, 모듈 VM 지원) 통합으로 안정적이고 표준에 부합하는 런타임 환경 구축이 핵심 목표다.


Node.js 애플리케이션에서 Promise 추적이 필요한 경우, PromiseWrap.parentId 대신 PromiseWrap.isChainedPromise를 사용하여 Promise 체이닝 관계를 정확하게 식별할 수 있으며, 동적 import 활성화로 조건부 모듈 로딩과 런타임 플러그인 시스템을 구현할 수 있다.

원문 읽기
Node.js 9.6.0 (Current) | Devpick