피드로 돌아가기
Weekly Update - Feb 27th, 2015
Node.js BlogNode.js Blog
Backend

io.js 1.4.1이 Promise 거부 이벤트 처리, TLS 스트림 개선, V8 4.1.0.21 업그레이드로 언어 기능 및 안정성 강화

Weekly Update - Feb 27th, 2015

2015년 2월 27일9intermediate

Context

io.js 프로젝트는 Node.js의 느린 릴리스 사이클과 제한된 ES6 지원으로 인한 개발자 불만을 해결하기 위해 포크된 프로젝트입니다. 버전 1.4.0이 libuv 버그로 인해 릴리스 중단되면서 1.4.1로 버전을 조정했습니다.

Technical Solution

  • Promise 거부 처리: 'unhandledRejection' 이벤트를 프로세스에서 발생시켜 이벤트 루프 턴 내 에러 핸들러가 없는 Promise 감지
  • Promise 지연 핸들러: 'rejectionHandled' 이벤트로 Promise 거부 후 이벤트 루프 턴 이후 핸들러 추가 감지
  • TLS 스트림 개선: 정규 스트림을 tls.connect()의 기본 소켓으로 사용 가능하도록 변경
  • HTTP 클라이언트 이벤트: http.ClientRequest 중단 시 'abort' 이벤트 추가
  • V8 엔진 업그레이드: V8 4.1.0.21로 업그레이드하여 보안 수정사항 포함
  • npm 업그레이드: npm 2.6.0으로 업그레이드하여 새 레지스트리 지원 및 npm@3 준비
  • libuv 업그레이드: libuv 1.4.2로 업그레이드
  • ARMv8 빌드 지원: Linaro ARMv8 서버 클러스터 접근 권한으로 정기적 ARMv8 바이너리 릴리스 예정
  • 내부 C++ Streams API: TLS 스트림을 다른 TLS 스트림으로 래핑할 수 있는 새로운 C++ Streams API 추가

Impact

Version 1.4.1 태그 및 빌드 완료했으며, ARMv6(Raspberry Pi), ARMv7 빌드가 각 릴리스마다 제공되고 있습니다.

Key Takeaway

io.js의 빈번한 릴리스 사이클과 표준 추적 정책은 Node.js보다 최신 V8 기능과 언어 표준을 신속하게 도입할 수 있게 하며, Promise 거부 처리 같은 명시적 이벤트 모델은 비동기 코드의 안정성을 높입니다.


Promise 기반 서비스를 개발할 때 'unhandledRejection'과 'rejectionHandled' 이벤트 핸들러를 프로세스 레벨에서 등록하면 미처리 거부를 감지하고 로깅할 수 있어 프로덕션 환경에서의 예측 불가능한 종료를 방지할 수 있습니다.

원문 읽기