피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 17.4.0이 child_process, crypto, events, stream 모듈에 15개 이상의 SEMVER-MINOR 기능을 추가하고 의존성을 업그레이드해 런타임 기능 확장
Node.js 17.4.0 (Current)
AI 요약
Technical Solution
- child_process.fork()가 URL 객체를 인자로 받도록 확장: 기존 문자열 경로 외에 URL 인스턴스 지원
- crypto 모듈에 webcrypto.subtle과 webcrypto.getRandomValues를 alias로 노출: 표준 WebCrypto API를 Node.js crypto 네임스페이스에서 직접 접근 가능
- events 모듈의 captureRejections을 실험단계에서 정식 지원으로 승격: Promise rejection 이벤트를 EventEmitter로 처리
- events 모듈에 EventEmitterAsyncResource 클래스 추가: async_hooks와 EventEmitter를 통합
- stream.Readable에 filter() 메서드 추가: 스트림 데이터를 조건 기반 필터링
- stream.Readable에 map() 메서드 추가: 스트림 데이터 변환
- stream에 isReadable() 헬퍼 함수 추가: 객체의 읽기 가능 여부 판정
- perf_hooks 모듈의 Histogram에 다중 수정사항 적용: 성능 측정 정확도 개선
- loader 시스템이 defaultResolve에서 패키지 형식 정보 반환: ESM/CommonJS 형식 구분 제공
- npm을 8.3.1로 업그레이드: 패키지 관리자 버전 갱신
- libuv를 1.43.0으로 업그레이드: 기본 I/O 라이브러리 버전 갱신
- V8 엔진에 cherry-pick 3b6b21f595f6 적용: 자바스크립트 엔진 성능 패치
- async_hooks 초기화 누락 수정: 비동기 후크 안정성 개선
- AsyncLocalStorage가 unhandledRejection 케이스에서 제대로 동작하도록 수정: 비동기 로컬 스토리지 신뢰성 개선
- crypto 엔진 로드 시 에러 캡처 수정: 암호화 모듈 에러 처리 정확화
- child_process 메시지 대기열 처리 개선: 펀딩 메시지 순서 보장
- child_process 인자 처리 로직 개정: 유효성 검사 강화
실천 포인트
Node.js 기반 서비스에서 stream 처리 시 기존 Array.prototype.filter()와 map() 방식의 체이닝을 stream.Readable.filter()와 stream.Readable.map()으로 대체하면 메모리 효율성을 유지하면서 코드 간결성을 높일 수 있다. 또한 child_process.fork()에 URL 객체를 전달하면 동적 경로 생성 시 URL 정규화를 자동으로 처리받을 수 있다.