피드로 돌아가기
Node.js 20.11.0 (LTS)
Node.js BlogNode.js Blog
Backend

Node.js 팀이 20.11.0 LTS 버전에서 모듈 로더 아키텍처 재설계 및 스트림/암호화 성능 최적화로 런타임 기능 확장

Node.js 20.11.0 (LTS)

2024년 1월 10일12intermediate

Technical Solution

  • ESM에 import.meta.dirname 및 import.meta.filename 속성 추가: 현재 모듈의 디렉토리와 파일명 접근 가능
  • 모듈 로더를 shadow realm에서 부팅: useCustomLoadersIfPresent 플래그 제거 및 격리된 실행 환경에서 로더 초기화
  • fs.writeFileSync utf8 경로를 C++ 빠른 경로로 구현: 동기 파일 쓰기 성능 향상
  • Readable 스트림 버퍼를 배열로 변경: 내부 버퍼 구조 최적화 (#50341)
  • 스트림 생성 최적화: 생성 성능 개선 (#50337)
  • test_runner에 내장 LCOV 리포터 추가: 코드 커버리지 보고 기능 확장
  • test_runner에 Date 모킹 API 지원: 시간 관련 테스트 작성 편의성 증대
  • --test-timeout CLI 플래그 추가: 테스트 실행 시간 제한 설정 가능
  • 근본 인증서를 NSS 3.95로 업데이트: 암호화 보안 강화
  • --disable-warning 옵션 추가: 특정 경고 메시지 억제 가능
  • V8 엔진 cherry-pick 적용: 격리(isolate)별 프록시 환경 템플릿 생성 및 프로세스 바인딩 데이터를 약한 참조로 변경
  • npm 10.2.4, undici 5.27.2, zlib 1.2.13.1-motley, ada 2.7.4 등 주요 의존성 업데이트
  • Python 3.12 빌드 지원: 최신 Python 버전에서 컴파일 가능

Node.js 20 LTS 버전을 사용하는 프로덕션 애플리케이션에서 import.meta.dirname/filename을 활용하면 ESM 모듈 경로 참조를 간편하게 처리할 수 있고, 내장 test_runner와 --test-timeout 옵션을 조합하면 테스트 스위트 관리 시 별도 외부 라이브러리 의존성을 줄일 수 있다. 또한 스트림 버퍼 재설계는 대용량 데이터 처리 워크로드에서 메모리 효율성을 개선한다.

원문 읽기