Node.js v15 가 모습을 드러냈습니다!
Node.js v15가 출시되었다!
  • NodeJS

이 블로그는 이 글을 번역한 글입니다!

2020년 10월 20일 Node.js v15가 출시되었습니다.
그와함께 Node.js v14 가 LTS로 승격되었고, 2주마다 v15의 새 릴리즈를 기대할 수 있습니다. 홀수 버전인 v15는 LTS로 승격되지 않습니다. 이 점을 염두해 두세요. 일반적으로 프로덕션 레벨에서는 LTS버전을 사용하는것이 좋습니다.

Node.js v15.0.0을 다운로드 하려면 (본 글을 번역하는 중에는 v15.0.2가 최신입니다.)
https://nodejs.org/en/download/current/ 에서 다운받을 수 있습니다.
추가로 릴리즈에 포함 된 커밋 목록은 https://nodejs.org/en/blog/release/v15.0.0 에서 찾을 수 있습니다.

Node.js v15에서 제공하는 기능 (일부)

  • AbortController
  • N-API verstion 7
  • npm 7
  • Throw on unhandled rejections
  • QUIC (experimental)
  • V* 8.6

AbortController

Node.js v15에서는 AbortController의 향상된 경험을 제공합니다. AbortController는 웹 API를 AbortController 기반으로 Promise기반 API에서 취소 신호를 보내는데 사용되는 전역 유틸리티 클래스입니다.

const ac = new AbortController();
ac.signal.addEventListener('abort', () => console.log('Aborted!'),
{ once: true });
ac.abort();
console.log(ac.signal.aborted);  // Prints True

위의 예제에서 abort 이벤트는 ac.abort()를 호출 할 때 발생합니다.
AbortControllerabort이벤트가 한번만 트리거 합니다.
이벤트 리스너는 AbortSignal{ once: true }옵션을 사용하여 abort이벤트가 처리된 후 이벤트 리스너를 제거해야 합니다.

자세한 내용은 Node.js API문서를 참고하세요.

N-API 7

새로운 N-API버전을 다른 LTS Node.js버전으로 백포트하는동안 N-API7은 마지막 주요 릴리즈 이후 새로운 기능이며 ArrayBuffers 작업을위한 추가 메서드를 제공한다 알려드릴 가치가 있습니다.

NPM 7

Node.js 15는 npm7의 새로운 주요 릴리즈와 함께 제공됩니다. npm7 에는 npm 작업 영억 및 새로운 package-lock.json형식을 비롯한 새로운 많은 기능이 제공됩니다. npm7에는 yarn.lock 파일도 지원합니다.

npm 7의 가장 큰 변화는 이제 피어 종속성이 기본으로 설치된다는 점입니다. npm7 릴리즈에대한 주요한 새로운 변경사항은 GitHub 블로그를 확인해주세요.

Throw on unhandled rejections

Node.js 15 부터의 기본 모드는 unhandledRejection 에서 throw로 변경되었습니다.
만약 unhandledRejection 훅이 설정되어있지 않다면, unhandledRejection 이 잡히지 않은 예외로 처리됩니다. unhandledRejection 후크가 있는 사용자는 동작의 변화를 볼 수 없으며, -- unhandled-rejections=mode프로세스 플래그를 사용하여 모드를 전환할 수 있습니다.

Node.js는 UnhandledPromiseRejectionWarning가 기본으로 많은 릴리즈에 대해 배포되었으며, Node.js User Insight: Unhandled Promise Rejection설문조사의 결과와 와지막 Node.js Technical Steering의 결과를 기반으로 위원회 투표를 거쳐 throw 처리하기로 결정하였습니다. 이 결정을 추진해 주신 Mary Marchini에게 특별히 감사드립니다.

QUIC (실험용)

QUIC는 HTTP/3 의 기본 전송 프로토콜인 UDP기반 전송 프로토콜 입니다. QUIC는 TLS 1.3, 흐름 제어, 오류 수정, 연결 마이그레이션 및 멀티 플렉싱을 통해 내장 보안 기능을 제공합니다.

Node.js v15는 실험적으로 QUIC와 함께 지원되며 --experimental-quic를 통하여 Node.js를 컴파일하며 활성화 할 수 있습니다. Node.js QUIC구현은 코어 net모듈에 의해 참조할 수 있습니다.

const { createQuicSocket } = require('net');

QUIC에 대한 자세한 정보는 Node.js 문서를 참고해주세요.

V8 8.6

V8 JavaScript 엔진이 V8.8.6으로 업데이트 되었습니다. (V8.8.4는 Node.js v14에서 사용가능한 최신버전입니다)
성능 조정 및 개선과 함께 V8 업데이트는 다음 언어기능도 제공합니다.

  • Promise.any()MDN (V8.8.5부터)
  • AggregateErrorMDN (V8.8.5부터)
  • String.prototype.replaceAll()MDN (V8.8.5에서)
  • 논리적 할당 연산자 &&=,||=,??=MDN (V8.8.5부터)

공식 블로그에서 V8에 대해 자세히 알아보세요.

기타 프로젝트 소식

Node.js에 새로운 기능을 추가하는 것 외에도 기여 프로세스를 개선하는데 초점을 두었습니다. 올해 프로젝트는 개선 대상 영역을 결정하는데 기여 프로세스에 대한 피드백을 수집하기 위해 Node.js 기여자 설문조사를 실시했습니다.
자동화 및 툴링도 개선되었습니다. 이제 GitHub레이블을 추가하는 것만으로 CI실행을 시작하고 커밋을 시작할 수 있으므로 공동 작업자가 Pull Request의 지속적인 흐름을 더 쉽게 관리할 수 있습니다.

작년은 Node.js의 10주년이었고, 이 프로젝트는 Node.js 다음 10년 노력을 시작했습니다. 이 노력의 목표는 Node.js의 첫 10년 동안 성공으로 이어진 요인을 반영하고 다음 10년 동안의 성공 방향을 설정하는 것입니다.
프로젝트의 기술적 가치, 지지자 및 요구 사항을 살펴보는 것으로 시작되었습니다. 향후 논의를 위한 기초를 설정하고 지금까지의 결과 중 하나는 우리의 노력을 안내하기 위해 기술적 문서를 만들었다는 것입니다.

행동을 요구하다!

새로운 Node.js v15릴리즈를 사용해보세요. 우리는 여러분의 피드백을 들으면 기쁩니다. 또한 최신 Node.js 기능 및 변경 사항과 프로젝트의 향후 호환성을 보장하기 위해 Node.js v15로 어플리케이션과 모듈을 테스트해볼 가치가 있습니다.

이제는 다음 주에 LTS로 승격 될 Node.js v14 (지금 현재는 되었음)로의 업그레이드를 계획을 시작할 좋은 시기이기도 합니다. Node.js v14는 2023년 4월까지 계속 지원됩니다.

또한 Node.js v10은 2021년 4월에 단종 될 예정이므로 Node.js v10을 계속 사용하는 경우 업그레이드 계획을 시작하는것이 좋습니다.

Node.js의 타임 라인은 Node.js 출시일정을 확인해보세요.

마지막으로

많은 Node.js 기여자 및 공동 작업자를 포함하여 이 릴리즈를 만든 모든 사람들에게 감사드립니다. 또한 Node.js 릴리즈를 유지 관리하고 생산하는 Node.js 릴리즈 워킹 그룹과 프로젝트 인프라를 계속 실행하는 Node.js빌드 워킹그룹에 특별한 감사의 말씀을 드립니다.

Node.js V15.0.0을 다운로드 하려면 https://nodejs.org/en/download/current/를 방문하세요. 마찬가지로 이 릴리즈에 포함된 커밋 목록은

https://nodejs.org/en/blog/release/v15.0.0/에서 찾을 수 있습니다.

참고: v15.0.0에서 암호화 회귀를 수정하는 v15.0.1을 사용할 수 있습니다.