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

Node.js 12.3.0이 WebAssembly 모듈 지원, Readable.from 비동기 반복자 유틸리티, MessagePort 메시지 unshift 기능 추가로 런타임 기능 확장

Node.js 12.3.0 (Current)

2019년 5월 21일5intermediate

Context

Node.js 12.x는 ECMAScript 모듈과 WebAssembly 통합, 스트림 처리의 편의성, 워커 스레드의 메시지 제어 기능 강화가 필요했습니다.

Technical Solution

  • ESM에 --experimental-wasm-modules 플래그 추가: WebAssembly 모듈을 ECMAScript 모듈로서 임포트 및 실행 지원
  • stream 모듈에 Readable.from() 메서드 구현: 비동기 반복자(async iterator)를 Readable 스트림으로 변환하는 유틸리티 제공
  • worker_threads의 MessagePort에 메시지 unshift 기능 추가: 수신한 메시지를 큐의 앞으로 반환하여 처리 순서 제어 지원
  • process 객체의 fatal 예외 로깅을 util.inspect 사용으로 개선: 에러 객체의 시각화 품질 향상
  • REPL에 process.on('uncaughtException') 지원 추가: 대화형 환경에서 미처리 예외 핸들링 가능
  • assert 모듈 리팩토링: Symbol 속성 비교 제외, 읽기 연산 최소화, 호환성 강화
  • V8 엔진을 7.4.288.27로 패치: 성능 및 안정성 개선

Key Takeaway

Node.js의 점진적 기능 확장은 기존 워크플로우의 호환성을 유지하면서 --experimental-* 플래그로 신규 기능을 단계적으로 도입하는 전략을 따릅니다.


Node.js 기반 서비스에서 WebAssembly 계산 집약적 작업을 통합해야 할 경우, `--experimental-wasm-modules` 플래그로 활성화하면 native 바이너리와 JavaScript 간 상호 운영성을 얻을 수 있습니다. 비동기 데이터 소스를 스트림으로 처리할 때 `Readable.from()` 메서드를 사용하면 Promise 기반 코드를 Node.js 스트림 API와 직접 통합할 수 있습니다.

원문 읽기