Node.js 주간 뉴스 2015년 9월 11일

Node.js 뉴스 — 9월 11일

Node.js v4.1.0과 io.js v3.3.1이 배포되었습니다.

Node.js v4.1.0과 io.js v3.3.1 릴리스

이번 주는 두 개의 릴리스가 있습니다. Node.js v4.1.0io.js v3.3.1이고, 이전 버전에서의 완전한 변경사항은 GitHub에서 확인할 수 있습니다.

Node.js v4.1.0 주요 변경사항

  • buffer:
  • 버퍼는 이제 C++가 아닌 자바스크립트에서 만들어집니다. 이 변경은 버퍼의 생성 속도를 향상시킵니다. (Trevor Norris) #2866.
  • Buffer#slice()는 현재 slice()의 성능을 높이기 위해 내부적으로 Uint8Array#subarray()를 사용합니다. (Karl Skomski) #2777.
  • fs:
    • fs.utimes()는 숫자 문자열과 NaN, Infinity를 적절히 변환합니다. (Yazhong Liu) #2387.
    • fs.WriteStream에 매우 빠른 대용량 쓰기를 허용하는 _writev를 구현했습니다. (Ron Korving) #2167.
  • http: http.request()를 사용할 때 특정 write() 크기들이 에러를 유발하는 문제를 수정했습니다. (Fedor Indutny) #2824.
  • npm: 2.14.3 버전으로 업그레이드 했습니다. 자세한 사항은 https://github.com/npm/npm/releases/tag/v2.14.3을 참조하세요. (Kat Marchán) #2822.
  • src: V8 cpu 정보 수집은 대기 상태일 때 더 이상 잘못 표기되지 않습니다. (Oleksandr Chekhovskyi) #2324.
  • timers: #ref()#unref()는 그들이 속한 타이머를 반환합니다. (Sam Roberts) #2905.
  • v8: 4.5.103.30에서 4.5.103.33으로 사소한 수정사항을 포함한 업그레이드가 있었습니다. (Ali Ijaz Sheikh) #2870.
    • 일부 계산된 객체의 단축 속성이 제대로 작동하지 않는 이전에 알려진 오류를 수정했습니다. (#2507).

io.js v3.3.1 주요 변경 사항

  • buffer: 종료를 유발했던 사소한 오류를 수정했습니다. (Michaël Zasso) #2635,
  • child_process: 종료를 유발했던 오류를 수정했습니다. (Evan Lucas) #2727
  • crypto: Windows XP / 2003에서 안전하지 않은 rwlocks를 대체했습니다. (Ben Noordhuis) #2723
  • libuv: 1.7.3에서 1.7.4로 업그레이드했습니다. (Saúl Ibarra Corretgé) #2817
  • node: 윈도우에서 흠이 있는 process.release.libUrl을 수정했습니다. (Rod Vagg) #2699
  • node-gyp: Node.js와 io.js의 v0.10에서 v4 이상의 버전까지의 지원을 향상하기 위해 v3.0.3를 유동적으로 설정했습니다. (Rod Vagg) #2700
  • npm: 2.13.3에서 2.14.3으로 보안 업데이트를 포함한 업그레이드를 했습니다. 더 자세한 사항은 https://github.com/npm/npm/releases/tag/v2.14.2를 참조하세요. (Kat Marchán) #2696.
  • timers: 0.12로 이식하면서 타이머의 성능 향상이 있었고, 사소한 수정사항도 포함 되어있습니다. (Jeremiah Senkpiel) #2540, (Julien Gilli) nodejs/node-v0.x-archive#8751 nodejs/node-v0.x-archive#8905

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/node/labels/confirmed-bug에서 확인할 수 있습니다.

  • 계산된 객체를 사용할 때 종종 일부 계산된 객체의 단축 속성이 현재 버전의 V8에서는 제대로 다뤄지지 않고 있습니다. 예를 들어 [{ [prop]: val }][{}]으로 인식되는 문제 등입니다. #2507
  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 멈출 수 있습니다. #690
  • DNS 질의 진행 중에 호출된 dns.setServers()가 실패한 단언문으로 프로세스의 충돌을 일으킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

Node.js 재단은 Node.js와 io.js를 새 릴리스에서 단일 코드 기반으로 합쳤습니다.

Node.js 재단은 Node.js의 새 릴리스 진입과 Node 재단을 소개하는 글을 게재했습니다. 자세한 사항은 여기를 참조하세요.

Node.js Interactive

Node.js Interactive는 Node.js를 위한 새롭고 정기적이며 벤더 중립적인 콘퍼런스입니다. 이 콘퍼런스는 새로운 형식으로 Node.js 재단을 이끌어갈 것입니다. Node.js Interactive(한국어)

커뮤니티 업데이트

  • LTS 빌드를 할 V8 메인테이너를 아직 구하고 있습니다! GitHub에서 요구사항을 확인하세요.
  • Raygun blog에 따르면 Node.js v4.0.0는 Node.js v0.12보다 8% 빠르다고 합니다.
  • 에반젤리즘 워킹 그룹 회원인 Tony Pujals가 Node.js v4.0.0으로의 진입이란 글을 게재했고, Node.js v4.0.0안의 ES6와 LTS, SemVer에 관해 이야기했습니다.

Node.js나 io.js에 관한 글을 쓰거나 발견했다면, Evangelism 팀 저장소에 와서 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 Medellin의 Ruta N에서 열립니다.
  • EmpireNode, 10월 23일 미국 뉴욕에서 열립니다.
  • NodeFest, 11월 7일 일본 도쿄에서 열립니다.
  • Nodevember가 11월 14일부터 15일까지 미국의 Tennessee, Nashville에서 열립니다.
  • NodeConf Barcelona, 11월 21일 스페인 바르셀로나에서 열립니다.
  • Node.js Interactive, 12월 8일부터 9일까지 미국 포틀랜드에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

Node.js Interactive

Node.js Interactive를 맞이할 준비는 되셨나요?

Node.js 재단은 2015년 12월 8-9일, 오리건 주 포틀랜드에서 Node.js Interactive를 개최합니다. node.js가 광범위하게 성장함에 따라, 이 콘퍼런스는 빠른 웹 사이트와 실시간 애플리케이션의 효율적인 개발 방법부터 node.js 애플리케이션 관리를 위한 조언, 그 밖에 언급되지 않은 것까지 전반적으로 다루게 될 것입니다.

이번 행사는 Node.js 재단이 Linux 재단과 함께 협력한 첫 번째 일이 될 것입니다. 의도적으로 특정 벤더에 소속되지 않은 채, 이제는 합쳐진 node.js와 io.js 커뮤니티 간 오픈 거버넌스 협업의 이상을 이어나가는 데 집중할 것입니다. 콘퍼런스는 경력 개발자뿐만 아니라 IoT, 프론트엔드, 백엔드 기술에 초점을 맞춘 발표들을 자신의 사업에 어떻게 이용할 수 있을지 관심을 가진 사람들도 환영합니다. 이런 발표들을 모으고 참석자들에게 최상의 경험을 제공하기 위해서 발표 책임자는 잔뼈 굵은 베테랑들로 이루어져 있습니다.

  • Kassandra Perch, IoT 담당, 텍사스 오스틴에 사는 소프트웨어 개발자 / 에반젤리스트 / 지지자 / 교육자 / 로봇 기술자, @nodebotanist에서 팔로우.
  • Jessica Lord, 프론트엔드 담당, 오픈 소스, JavaScript, node.js, 튜더 영국의 이야기를 사랑하는 GitHub 개발자이자 디자이너, 포틀랜드 이주자.
  • C J Silvero, 백엔드 담당, 항상 node를 쓰고 샌프란시스코 베이 에어리어의 npm, Inc. 엔지니어링 책임자.

Node.js 커뮤니티가 성장함에 따라, Node.js 재단은 이번 행사가 엄청난 인기의 Node.js가 다음에는 어떻게 될지 이해하고 협업 개발을 이어나가는 최적의 장소가 될 것이라고 생각합니다. 우리와 함께 하고 싶은가요? 여기에서 등록하세요. 등록 시기에 따른 할인율은 다음과 같습니다.

  • 슈퍼 얼리 버드 - US$200, 첫 100장 한정
  • 얼리 버드 - US$325, 10월 17일에 종료
  • 표준 - US$425, 11월 21일에 종료
  • 늦은 구매, 현장 구매 - US$525, 11월 22일부터 시작

발표자가 되고 싶다면, 모집 공고 페이지를 참조하세요. 모집은 2015년 9월 24일에 종료됩니다.

Node v4.0.0 (안정 버전)

Node.js 프로젝트의 협력자와 Node.js 재단의 멤버는 v4.0.0을 공식적으로 릴리스하게 되어 자랑스럽습니다. 이제 하나의 코드로 합쳐진 Node.js와 io.js 프로젝트에서 이뤄진 수많은 시간의 고된 작업이 이번 릴리스에 담겨 있습니다. 현재 Node.js 프로젝트는 44명의 협력자로 운영되고 있고 그중의 15명은 기술 결정 위원회(Technical Steering Committee, TSC)입니다. 게다가 v0.12.7 이후 새로운 100여 명이 코드 기여 목록에 이름을 올렸습니다.

Node.js v4.0.0은 현재 크롬 웹 브라우저가 사용하는 V8과 같은 버전인 V8 v4.5를 사용합니다. 이로써 Node.js 사용자에게 많은 이점이 생겼는데 블록 범위, 클래스, 타입을 가진 배열(Node의 Buffer는 이제 Uint8Array에 기반을 둡니다.), 제너레이터, 프로미스, 심볼, 템플릿 문자열, 컬렉션(Map, Set 등)을 포함해서 V8 v4.5에 새로 추가된 화살표 함수(arrow function) 등 새로운 ES6 기능이 기본적으로 활성화 되었다는 점이 주목할 부분입니다.

지난 몇 년간 Rackspace, DigitalOcean, Scaleway, miniNodes, Voxer, Joyent, CloudFlare, ARM Holdings 같은 회사나 커뮤니티의 후원으로 고맙게도 다양한 Linux와 OS X, Windows, FreeBSD, SmartOS 등의 다양한 환경에서 놀라운 테스트 클러스터를 구축했습니다. 여기에 새로 ARM 프로세서도 기본으로 지원합니다. ARMv6, ARMv7와 새로운 64비트 ARMv8 프로세스에서도 테스트 슈트가 계속해서 통과해야 합니다. 이제 Node.js는 취미로 ARM을 쓰는 사람이나 ARM 서버 사용자들도 사용할 수 있게 되었습니다.

Node.js v4부터는 장기지원버전(LTS)와 정기 릴리스 주기가 생겼습니다. 이제 릴리스 버전은 SemVer를 따르기 때문에 버그를 수정하고 기능을 추가함에 따라 부 버전과 수 버전을 모두 올릴 것입니다. v4.x 브랜치에서는 호환성을 깨뜨리는 변경사항은 추가하지 않을 것입니다.

하지만 10월에 릴리스할 첫 LTS 버전에 첫 발걸음을 시작할 것입니다. 동시에 v5.x 브랜치를 새로 시작하고 v5.0.0으로 시작하는 새로운 안정 버전(Stable)의 릴리스를 사용 가능하게 할 것입니다. 이 브랜치에는 새로운 버전의 V8과 필요하다면 호환성이 없는 변경사항이 포함될 것입니다. v4.x 릴리스는 릴리스 이후 18개월 동안 LTS로 지원하면서 안정성과 보안에 집중하면서 새로운 기능은 추가하지 않을 것입니다. 18개월의 지원이 끝난 뒤 v4.x는 12개월 동안 추가로 치명적인 버그와 보안 수정사항에 집중하는 유지보수(Maintenance) 단계에 진입할 것입니다.

동시에 6개월마다 새로운 안정 버전의 브랜치를 만들어서 매년 4월과 10월에 릴리스할 예정입니다. 안정 버전은 계속해서 개발하면서 매주 혹은 격주로 부 버전과 수 버전을 올리면서 정기적인 릴리스를 할 계획입니다. 10월에 릴리스하는 두 번째 안정 버전 릴리스마다 LTS로 계속해서 지원할 것입니다. 즉, 전체 30개월(LTS와 유지보수 기간 포함) 동안 관심을 받으면서 1년 내내 관리되는 LTS 브랜치가 존재할 것입니다. 안정 버전과 LTS 주기를 통해 프로젝트가 계속해서 혁신을 이뤄내고 자랑스럽게 핵심기술로 Node.js를 도입하는 엔터프라이즈 사용자(일부는 이미 자신을 Node.js 재단의 멤버로 생각합니다.)가 늘어남에 따라 필요해진 예측 가능한 장기 안정성과 보안의 요구사항도 충족하면서 최신 자바스크립트를 사용할 수 있는 여유를 제공할 수 있다고 생각합니다.

모든 주요 릴리스가 항상 그렇듯이 Node.js v4의 도입에 문제가 없다고 생각하진 않습니다. 여기에는 시간이 걸릴 것이고 특히 새로운 버전의 V8을 따라잡아야 하는 컴파일된 애드온이라면 더욱 시간이 걸릴 것입니다.(힌트: 호환성 문제에 대한 공식적인 해결책은 NAN을 참고하세요.) 다행히도 애드온 작성자는 io.js v3.x 릴리스에서 Node.js v4에 대비할 수 있는 기회가 있었으므로 오늘날 npm 생태계는 꽤 많이 준비되어 있습니다.

v0.12와 v4 사이의 변경사항 목록은 LTS 위키에서 볼 수 있고 며칠 내에 반드시 알아야 하는 변경사항과 관련된 문서는 이 위키와 코어 위키에 모두 포함될 것입니다.

GitHub의 새로운 저장소(https://github.com/nodejs/node)에 버그를 보고하고, 핵심에 기여해 점점 늘어가는 협력자 명단에 이름을 올려보세요.

주요 변경 사항

이 변경사항은 마지막 io.js v3.x 릴리스인 v3.3.0에 관련된 것입니다. 0.12.x 이후의 전체 변경사항은 CHANGELOG에 정리된 v3.x, v2.x, v1.x 릴리스의 주요 변경사항 목록을 참고하길 바랍니다. 이번 릴리스의 호환성이 없는 주요 변경사항과 마찬가지로 v3.x의 일부 변경사항은 Node.js와 io.js 프로젝트가 완전히 합쳐지면서 필요한 변경사항으로 간주합니다.

  • child_process: ChildProcess.prototype.send()process.send()가 모든 플랫폼에서 비동기로 동작하므로 메시지를 보낸 후 호출될 선택적인 콜백 파라미터가 추가되었습니다. 예시: .send(message[, sendHandle][, callback]) (Ben Noordhuis) #2620.
  • node: "io.js" 코드를 "Node.js"로 변경했습니다. (cjihrig) #2367.
  • node-gyp: 이번 릴리스에는 갱신된 버전의 node-gyp가 포함되었습니다. 이번 node-gyp는 Node.js와 io.js의 모든 버전과 나이틀리와 릴리스 후보 빌드 모두에서 동작합니다. io.js v3와 Node.js v4부터 애드온을 빌드할 때 전체 소스를 다운로드 하지 않고 headers tarball만 다운로드 받습니다. (Rod Vagg) #2700
  • npm: 2.13.3에서 2.14.2 버전으로 업그레이드했습니다. (Kat Marchán) #2696.
  • timers: 0.12 구현을 포팅하고 일부 버그를 수정해서 timer의 성능이 개선되었습니다. (Jeremiah Senkpiel) #2540, (Julien Gilli) nodejs/node-v0.x-archive#8751 nodejs/node-v0.x-archive#8905
  • util: util.is*() 함수는 폐기 예정이므로 이번 릴리스부터는 문서에 폐기 경고를 표시하기 시작했습니다. 사용자는 npm 저장소에서 더 신뢰할 수 있는 대체제를 찾기를 권장합니다. (Sakthipriyan Vairamani) #2447.
  • v8: 4.4.63.30에서 4.5.103.30 버전으로 업그레이드했습니다. (Ali Ijaz Sheikh) #2632.

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/node/labels/confirmed-bug에서 확인할 수 있습니다.

  • 현재 버전의 V8에서는 계산된 객체의 축약 프로퍼티를 사용할 때 일부가 제대로 처리되지 않습니다. 예시로 [{ [prop]: val }][{}]로 평가됩니다. #2507
  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 얼릴 수 있습니다. #690
  • DNS 질의 진행 중에 호출된 dns.setServers()가 assertion 실패로 프로세스를 크래시시킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

Commits

  • [4f50d3fb90] - (SEMVER-MAJOR) This commit sets the value of process.release.name to "node". (cjihrig) #2367
  • [d3178d8b1b] - buffer: SlowBuffer only accept valid numeric values (Michaël Zasso) #2635
  • [0cb0f4a6e4] - build: fix v8_enable_handle_zapping override (Karl Skomski) #2731
  • [a7596d7efc] - build: remote commands on staging in single session (Rod Vagg) #2717
  • [be427e9efa] - build: make .msi install to "nodejs", not "node" (Rod Vagg) #2701
  • [5652ce0dbc] - build: fix .pkg creation tooling (Rod Vagg) #2687
  • [101db80111] - build: add --enable-asan with builtin leakcheck (Karl Skomski) #2376
  • [2c3939c9c0] - child_process: use stdio.fd even if it is 0 (Evan Lucas) #2727
  • [609db5a1dd] - child_process: check execFile and fork args (James M Snell) #2667
  • [d010568c23] - (SEMVER-MAJOR) child_process: add callback parameter to .send() (Ben Noordhuis) #2620
  • [c60857a81a] - cluster: allow shared reused dgram sockets (Fedor Indutny) #2548
  • [b2ecbb6191] - contextify: ignore getters during initialization (Fedor Indutny) #2091
  • [3711934095] - cpplint: make it possible to run outside git repo (Ben Noordhuis) #2710
  • [03f900ab25] - crypto: replace rwlocks with simple mutexes (Ben Noordhuis) #2723
  • [847459c29b] - (SEMVER-MAJOR) crypto: show exponent in decimal and hex (Chad Johnston) #2320
  • [e1c976184d] - deps: improve ArrayBuffer performance in v8 (Fedor Indutny) #2732
  • [cc0ab17a23] - deps: float node-gyp v3.0.0 (Rod Vagg) #2700
  • [b2c3c6d727] - deps: create .npmrc during npm tests (Kat Marchán) #2696
  • [babdbfdbd5] - deps: upgrade to npm 2.14.2 (Kat Marchán) #2696
  • [155783d876] - deps: backport 75e43a6 from v8 upstream (again) (saper) #2692
  • [5424d6fcf0] - deps: upgrade V8 to 4.5.103.30 (Ali Ijaz Sheikh) #2632
  • [c43172578e] - (SEMVER-MAJOR) deps: upgrade V8 to 4.5.103.24 (Ali Ijaz Sheikh) #2509
  • [714e96e8b9] - deps: backport 75e43a6 from v8 upstream (saper) #2636
  • [8637755cbf] - doc: add TSC meeting minutes 2015-09-02 (Rod Vagg) #2674
  • [d3d5b93214] - doc: update environment vars in manpage and --help (Roman Reiss) #2690
  • [29f586ac0a] - doc: update url doc to account for escaping (Jeremiah Senkpiel) #2605
  • [ba50cfebef] - doc: reorder collaborators by their usernames (Johan Bergström) #2322
  • [8a9a3bf798] - doc: update changelog for io.js v3.3.0 (Rod Vagg) #2653
  • [6cd0e2664b] - doc: update io.js reference (Ben Noordhuis) #2580
  • [f9539c19e8] - doc: update changelog for io.js v3.2.0 (Rod Vagg) #2512
  • [cded6e7993] - doc: fix CHANGELOG.md on master (Roman Reiss) #2513
  • [93e2830686] - (SEMVER-MINOR) doc: document deprecation of util.is* functions (Sakthipriyan Vairamani) #2447
  • [7038388558] - doc,test: enable recursive file watching in Windows (Sakthipriyan Vairamani) #2649
  • [f3696f64a1] - events,lib: don't require EE#listenerCount() (Jeremiah Senkpiel) #2661
  • [45a2046f5d] - (SEMVER-MAJOR) installer: fix installers for node.js rename (Frederic Hemberger) #2367
  • [7a999a1376] - (SEMVER-MAJOR) lib: add net.Socket#localFamily property (Ben Noordhuis) #956
  • [de88255b0f] - Revert "lib,src: add unix socket getsockname/getpeername" (Ben Noordhuis) #2584
  • [f337595441] - (SEMVER-MAJOR) lib,src: add unix socket getsockname/getpeername (Ben Noordhuis) #956
  • [3b602527d1] - (SEMVER-MAJOR) node: additional cleanup for node rename (cjihrig) #2367
  • [a69ab27ab4] - (SEMVER-MAJOR) node: rename from io.js to node (cjihrig) #2367
  • [9358eee9dd] - node-gyp: float 3.0.1, minor fix for download url (Rod Vagg) #2737
  • [d2d981252b] - src: s/ia32/x86 for process.release.libUrl for win (Rod Vagg) #2699
  • [eba3d3dccd] - src: use standard conform snprintf on windows (Karl Skomski) #2404
  • [cddbec231f] - src: fix buffer overflow for long exception lines (Karl Skomski) #2404
  • [dd3f3417c7] - src: re-enable fast math on arm (Michaël Zasso) #2592
  • [e137c1177c] - (SEMVER-MAJOR) src: enable vector ics on arm again (Ali Ijaz Sheikh) #2509
  • [7ce749d722] - src: replace usage of v8::Handle with v8::Local (Michaël Zasso) #2202
  • [b1a2d9509f] - src: enable v8 deprecation warnings and fix them (Ben Noordhuis) #2091
  • [808de0da03] - (SEMVER-MAJOR) src: apply debug force load fixups from 41e63fb (Ali Ijaz Sheikh) #2509
  • [5201cb0ff1] - src: fix memory leak in ExternString (Karl Skomski) #2402
  • [2308a27c0a] - src: only set v8 flags if argc > 1 (Evan Lucas) #2646
  • [384effed20] - test: fix use of common before required (Rod Vagg) #2685
  • [f146f686b7] - (SEMVER-MAJOR) test: fix test-repl-tab-complete.js for V8 4.5 (Ali Ijaz Sheikh) #2509
  • [fe4b309fd3] - test: refactor to eliminate flaky test (Rich Trott) #2609
  • [619721e6b8] - test: mark eval_messages as flaky (Alexis Campailla) #2648
  • [93ba585b66] - test: mark test-vm-syntax-error-stderr as flaky (João Reis) #2662
  • [367140bca0] - test: mark test-repl-persistent-history as flaky (João Reis) #2659
  • [f6b093343d] - timers: minor _unrefActive fixes and improvements (Jeremiah Senkpiel) #2540
  • [403d7ee7d1] - timers: don't mutate unref list while iterating it (Julien Gilli) #2540
  • [7a8c3e08c3] - timers: Avoid linear scan in _unrefActive. (Julien Gilli) #2540
  • [b630ebaf43] - win,msi: Upgrade from old upgrade code (João Reis) #2439

Windows 32-bit Installer: http://nodejs.org/dist/v4.0.0/node-v4.0.0-x86.msi

Windows 64-bit Installer: http://nodejs.org/dist/v4.0.0/node-v4.0.0-x64.msi

Mac OS X 64-bit Installer: http://nodejs.org/dist/v4.0.0/node-v4.0.0.pkg

Mac OS X 64-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-darwin-x64.tar.gz

Linux 32-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-x86.tar.gz

Linux 64-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-x64.tar.gz

SmartOS 32-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-sunos-x86.tar.gz

SmartOS 64-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-sunos-x64.tar.gz

ARMv6 32-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz

ARMv7 32-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz

ARMv8 64-bit Binary: http://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-arm64.tar.gz

Source Code: http://nodejs.org/dist/v4.0.0/node-v4.0.0.tar.gz

Other release files: http://nodejs.org/dist/v4.0.0/

Documentation: http://nodejs.org/docs/v4.0.0/api/

Shasums:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

4893cadaa55fe88b214371b23257d7fae4b30661ef01d352e3f930ba9d402ee0 node-v4.0.0-darwin-x64.tar.gz
1f2b278d4708d7d956f2a17be139af26955114b92cb4340735a10bb5f0585c0a node-v4.0.0-darwin-x64.tar.xz
8812b88e81ee258f7f9446b548f6b364edcdd455f73f06589f14dd71dca415d0 node-v4.0.0-headers.tar.gz
776962bd95bf295e336fbf04f0d8764bb9f6236e0c699358b17e4e2a95ee3d6f node-v4.0.0-headers.tar.xz
0436f107e1d82c61c3ee4f916781466a49bece74bf4d4fb4bf4d53a57b81df85 node-v4.0.0-linux-arm64.tar.gz
7fdb978ddda803b188958b368db13b97dcaacfbf96d40c99d13ed385499d3fdd node-v4.0.0-linux-arm64.tar.xz
6f88e532bbf55cff36d4940898b80359761de3a274cc214fbb58cc176ec49ba2 node-v4.0.0-linux-armv6l.tar.gz
d7c1e9fefb360bde70c543d8981d2cce9a1c8444e847d19a89604756570d3075 node-v4.0.0-linux-armv6l.tar.xz
a788ed1b04de00344f4bbb8a278b317c69f9672f5fd03adb24f53d7c3d6fc8f6 node-v4.0.0-linux-armv7l.tar.gz
1ed96526e87c29b4d3b5618b5d2e3e65e1aef6a5e40f90ec3a3afd21047517cf node-v4.0.0-linux-armv7l.tar.xz
df8ada31840e3dc48c7fe7291c7eba70b2ce5a6b6d959ac01157b04731c8a88f node-v4.0.0-linux-x64.tar.gz
cc4eae3e4c2dd8b068d69e6d1d9849a863c51e3ec3d7f85cfb1e91e63912b66a node-v4.0.0-linux-x64.tar.xz
444b0c2e38602699103e4adb76c9f15b76c405f58b1308751cdc194041a39b93 node-v4.0.0-linux-x86.tar.gz
6fe4ab43eae74c1cb376169f4f161bddef04ff8a693a772875de651fafa4252b node-v4.0.0-linux-x86.tar.xz
387dd01caf168267749b0ddc7702b2fef7c95fbe1b2dab9a41ded02c11f16889 node-v4.0.0.pkg
f17ea8b1ffa6d63ba4eaa37708a365e5aefdb7de136f8b1a5751f2f258507026 node-v4.0.0-sunos-x64.tar.gz
69188f3568bbc9c071c70cf92551dd15e6fb79c9bd5d8b3da136ed65af4adea1 node-v4.0.0-sunos-x64.tar.xz
4537640f912b1db217351271e15d092d4654ecbe7cdb0169313988de5e453cd3 node-v4.0.0-sunos-x86.tar.gz
99ce4830b6b4f10dfca050296c001beb60e47d3eda455bc5b287b4ecc0773c04 node-v4.0.0-sunos-x86.tar.xz
e110e5a066f3a6fe565ede7dd66f3727384b9b5c5fbf46f8db723d726e2f5900 node-v4.0.0.tar.gz
2e3c5069933bead1022848009a68426a10689e67c4204707798fa319a6847bb5 node-v4.0.0.tar.xz
28dfb26fddb3ff56456bfc0ec186db27e6b84d9ce98752f34d48758f4af05fbe node-v4.0.0-x64.msi
ba67b46504afeedfd43d0ebb51844e2b427d64b631fe05d6fc35f7fc59d05307 node-v4.0.0-x86.msi
4c468e9a5e664f700f664fde42576260a7dd2bd5625ab824a713845e231f8275 win-x64/node.exe
c8189c310c774ce3cbe960bd9920e49f47db97a19f1256b9b5bfa1f9d83d4dca win-x64/node.lib
02814e5fdddbf77840e14042e98de3b50e0c0167aa1a8cccdf3222e643dd016f win-x86/node.exe
1bbe7009ea25e3ffe72cc7da92725146536be698cefd960e0e22269d02368c25 win-x86/node.lib
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJV71yWAAoJEMJzeS99g1RdcXkH/3sBJ89TZdqvzGEB/FZ5x+5C
A4iAWfEa+RjSvJbtmo3noOUA7+OZPWVue6yEv3ZX4EEdk5ZIUEcf/4tYoW/D5cCm
SBlnCB5TXMp8ZafCni3OvR52gBPIB4EFPlqPDLLA6wloUYm7xhyJ5V+Z9DeTzvGl
CC6JDs0RkcqMT3799KBgrS/ud0G5BXCC1imnHxGUCgYc1BAcExHThbLs1zFyMuXg
SSQJVJGoxR7LWfvnGFPnEbliSCuUfjGIT3DHAgovJgjQirj/vLssLBYyxMhCVBEa
eR2+UlptmdbsIAsPvyNp2Tr466KlIawD99haYOfgmVnA1l1PWbAjJMdQZJPk+Mg=
=tBAw
-----END PGP SIGNATURE-----

Node.js 재단의 이사회 선출

새 재단은 Node.js 플랫폼의 성장을 가속하는데 헌신하고 마케팅 의장과 커뮤니티 관리자도 추가했다.

샌프란시스코, 2015년 9월 4일 - Node.js 플랫폼의 개발을 개선하려고 커뮤니티와 기업이 함께 만든 Node.js 재단에서 오늘 이사회에 선출된 핵심 임원을 발표했다. 전 Node.js 커뮤니티를 대표하는 이사회는 Node.js와 다른 관련 모듈의 개발을 널리 보급하고 가속할 수 있게 하는 재단의 목표를 실행하도록 돕는다.

IP 관리, 마케팅, 조직에서 주체하는 이벤트를 감독하는 역할뿐 아니라 사업적 방향과 기술적 방향을 정하는 Node.js 재단 이사회에는 다음의 사람들이 포함되어 있다.

  • Danese Cooper, 이사회 의장, 기술 스탭으로 뛰어난 사람으로 PayPal에서 오픈소스를 한다.
  • Scott Hammond, 이사회 부의장, Joyent의 CEO
  • Brian McCallister, 이사회의 실버레벨 감독, Groupon 플랫폼의 CTO
  • Todd Moore, 이사회 회원, IBM 오픈 테크놀로지의 부사장
  • Steve Newcomb, 이사회 회원, Famous Industries의 창업자이자 CEO
  • Gianugo Rabellino, 이사회 간사, Microsoft 오픈소스 프로그램의 시니어 감독
  • Charlie Robbins, 이사회 골드레벨 감독, GoDaddy.com의 엔지니어링 감독
  • Imad Sousou, 이사회 회원, Intel의 부사장이자 관리자
  • Rod Vagg, 기술적 방향을 정하는 위원회 의장, NodeSource의 CNO(chief node officer)

여기에 이사회를 공인하기 위해 Joyent의 제품/마케팅 부사장인 Bill Fine이 마케팅 의장으로 선출되었다. Linux 재단도 새로운 조직을 지원하고 안내하는 커뮤니티 관리자로 Mikeal Rogers를 고용했다.

Node.js 재단 이사회 의장인 Danese Cooper는 "새로운 이사회 회원들은 Node.js 커뮤니티의 다양성과 이 회사들이 전반적으로 노력을 지원해야 한다는 약속을 의미한다."고 얘기했다. "Node.js는 개발자 생태계에 엄청나게 중요하고 갈수록 커머스의 흐름을 바꾸는 기기에서 애플리케이션을 만드는 것과 관련이 깊어지고 있다. 이사회는 커뮤니티의 지지를 받고 투명한 오픈 거버넌스 모델의 청사진을 사용해서 Node.js 플랫폼을 지원하고 만드는 작업을 할 것이다."

6월 초 Node.js와 io.js 개발자 커뮤니티는 중립적인 포럼인 Node.js 재단에서 작업을 계속할 수 있도록 서로의 코드 기반을 합칠 것이라고 발표했다. 새로운 리더들은 합쳐진 커뮤니티의 계속된 성장과 현신을 지원하고 플랫폼의 혁신과 성장을 가속할 수 있도록 협력적인 환경을 증진할 것이다.

Node.js 재단에 대하여

Node.js 재단은 협력적인 오픈 소스 프로젝트로 Node.js 플랫폼과 다른 관련 모듈을 만들고 지원하는데 몰두한다. Node.js는 200개 이상의 국가의 수많은 조직에서 사용되고 있고 매달 2백만 이상의 다운로드를 기록하고 있다. Node.js는 엔터프라이즈 애플리케이션, 로봇, API 엔진, 클라우드 스택, 모바일 웹사이트의 모든 것을 운영하는 고성능, 저지연 애플리케이션을 위한 런타임이다.

재단은 플래티넘 회원사인 Famous, IBM, Intel, Joyent, Microsoft, PayPal과 골드 회원사인 GoDaddy, NodeSource, Modulus/Progress Software, 실버 회원사인 Apigee, Codefresh, DigitalOcean, Fidelity, Groupon, nearForm, npm, Sauce Labs, SAP, StrongLoop, YLD를 포함한 다양한 회사로 구성되었다! 참여하려면 http://nodejs.org를 방문해라.

Node.js 재단은 Linux 재단 산하의 협업 프로젝트(Collaborative Project)이다. Linux 재단 협업 프로젝트는 협업 개발의 힘을 이용해 산업과 생태계 전반에 걸친 혁신을 돕기 위한 소프트웨어 프로젝트로 독립적으로 투자를 받는다. www.linuxfoundation.org

Node.js 주간 뉴스 2015년 9월 4일

Node.js 뉴스 — 9월 4일

Node.js v4.0.0이 배포되었습니다.

Node.js v4.0.0

이번 주는 기념적인 한 주입니다. 마침내 Node.js v4.0.0(안정 버전)을 배포했습니다. 모든 Node/io.js 기여자들에게 감사드립니다. 이번 Node.js는 역대 가장 안정적인 버전입니다. 우리는 모든 패치를 리뷰했고 통합 테스트의 상태는 더욱 안정화 되었습니다. 이면에는 새로운 Node의 더 적극적인 기여자들이 있었습니다.

모든 뉴스, 변경점, 기능을 설명하고 싶지만, 여기에 적기에는 공간과 시간이 부족합니다. Node 커뮤니티에서 더 자세히 다룬 블로그 글이나 뉴스를 기고해 주셨습니다.

Node.js v4.0.0 주요 변경 사항

이 변경사항은 마지막 io.js v3.x 릴리스인 v3.3.0에 관련된 것입니다. 0.12.x 이후의 전체 변경사항은 CHANGELOG에 정리된 v3.x, v2.x, v1.x 릴리스의 주요 변경사항 목록을 참고하길 바랍니다. 이번 릴리스의 호환성이 없는 주요 변경사항과 마찬가지로 v3.x의 일부 변경사항은 Node.js와 io.js 프로젝트가 완전히 합쳐지면서 필요한 변경사항으로 간주합니다.

  • child_process: ChildProcess.prototype.send()process.send()는 모든 플랫폼에 걸쳐 비동기적으로 동작합니다. 선택적 콜백 파라미터는 메시지가 전송되었을 때 적용된다고 소개했었습니다(.send(message[, sendHandle][, callback])). (Ben Noordhuis) #2620.
  • node: "io.js" 코드를 "Node.js"로 다시 명명했습니다. (cjihrig) #2367.
  • node-gyp: 이번 릴리스 묶음에 node-gyp의 버전이 업데이트되었습니다. 이는 모든 버전의 Node.js와 io.js, 나이틀리와 릴리스 후보 빌드 등에서도 작동합니다. io.js v3와 Node.js v4부터 애드온을 구성하는 때에는 전체 소스보다 tarball 내려받기만 가능할 것입니다. (Rod Vagg) #2700
  • npm: 2.13.3에서 2.14.2로 보안 업데이트를 포함한 버전 업그레이드를 했습니다. 자세한 사항은 https://github.com/npm/npm/releases/tag/v2.14.2을 확인하세요, (Kat Marchán) #2696.
  • timers: 0.12 포팅 구현으로부터 타이머의 성능 향상이 있었고, 몇몇 작은 수정사항도 있습니다. (Jeremiah Senkpiel) #2540, (Julien Gilli) nodejs/node-v0.x-archive#8751 nodejs/node-v0.x-archive#8905
  • util: util.is*() 함수는 앞으로 폐기될 예정이고, 이번 릴리스에 폐기 예정임을 나타내는 경고 문구를 넣기 시작했습니다. 사용자들은 npm 저장소에서 더 적절한 대안을 찾기를 권장합니다. (Sakthipriyan Vairamani) #2447.
  • v8: 4.4.63.30에서 4.5.103.30로 버전 업그레이드를 했습니다. (Ali Ijaz Sheikh) #2632.

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/node/labels/confirmed-bug에서 확인할 수 있습니다.

  • 계산된 객체를 사용할 때 종종 shorthand 속성이 현재 버전의 V8에서는 제대로 다뤄지지 않고 있습니다. 예를 들어 [{ [prop]: val }][{}]으로 인식되는 문제 등입니다. #2507
  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 멈출 수 있습니다. #690
  • DNS 질의 진행 중에 호출된 dns.setServers()가 실패한 단언문으로 프로세스의 충돌을 일으킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

Node.js v4.0.0(안정 버전) 항목이 게재되었습니다.

  • 우리는 Node v4.0.0(한국어) 항목을 게재했습니다. 이 항목은 Node.js v4.0.0에 관한 더욱 세부적인 사항들을 포함하고 있습니다.

우리는 현재 Node.js v4.0.0과는 함께 작동하지 않는 모듈 리스트를 생성했습니다.

  • v4.0.0과는 함께 작동하지 않는 모듈을 나열했습니다. 당신의 모듈과 Node.js v4.0.0을 함께 사용하면서 문제가 생긴다면 issue에 그 정보를 제공해주세요.

커뮤니티 업데이트

  • LTS 빌드를 할 V8 메인테이너를 아직 구하고 있습니다! GitHub에서 요구사항을 확인하세요.
  • Node 기술 결정 위원회(TSC) 멤버인 Jeremiah Senkpiel가 Node.js v4.0.0를 심도있게 소개했습니다. 이 뉴스를 확인하세요.
  • Daniel Khan이 Node.js v4.0 성능, 특징 LTS에 관해 기고했습니다. 이 글은 4.0으로 옮기는데 참고가 될 것입니다.

Node.js나 io.js에 관한 글을 쓰거나 발견했다면, Evangelism 팀 저장소에 와서 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • EmpireNode, 10월 23일 미국 뉴욕에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 Medellin의 Ruta N에서 열립니다.
  • NodeFest가 11월 7일 일본 도쿄에서 열립니다.
  • Nodevember가 11월 14일부터 15일까지 미국의 Tennessee, Nashville에서 열립니다.
  • NodeConf Barcelona, 11월 21일 스페인 바로셀로나에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

io.js와 Node.js 주간 뉴스 2015년 8월 28일

io.js, Node.js 뉴스 — 8월 28일

io.js v3.2.0/v3.3.0, Node v4 에반젤리즘, 새로운 nodejs.org, nodefest/empirenode 이벤트.

io.js 3.2, 3.3 발표

이번 주에 다음 두 가지 버전의 io.js 릴리스를 발표했습니다: v3.2.0, v3.3.0, 이전 릴리스부터 전체 변경사항은 GitHub에서 확인 가능합니다.

io.js v3.3.0 주요 변경사항

  • build: --link-module 옵션을 configure 항목에 추가하여 추가적인 자바스크립트 모듈을 빌드된 바이너리로 번들화 합니다. (Bradley Meck) #2497
  • docs: joyent/node 저장소로부터 주요 문서 업데이트 내역을 통합하였습니다. (James M Snell) #2378
  • http_parser: http.Server가 net.Socket에서 초기 데이터를 모두 소비하고 JavaScript에 진입하지 않고 직접 파싱하여 큰 성능 향상이 있습니다. (Fedor Indutny) #2355
  • libuv: 1.7.3으로 버전 업그레이드 했습니다. 자세한 내용은 변경사항을 참고하세요. (Saúl Ibarra Corretgé) #2310
  • V8: 4.4.63.30으로 버전 업그레이드 했습니다. (Michaël Zasso) #2482

io.js v3.2.0 주요 변경사항

  • events: EventEmitter#listenerCount(event)를 추가하여, 문서에서는 이미 폐기 예정인 EventEmitter.listenerCount(emitter, event)를 대체하였습니다. (Sakthipriyan Vairamani) #2349
  • module: 현재 작업 중인 디렉터리가 존재하지 않을 때 발생하는 미리 로드된 모듈과 연관된 오류를 해결하였습니다. (Bradley Meck) #2353
  • node: V8 플래그를 전달하지 않을 때 시작 시간이 약 5% 빠르게 향상되었습니다. (Evan Lucas) #2483
  • repl: 탭 자동완성 기능이 배열과 함께 더 잘 작동합니다. (James M Snell) #2409
  • string_bytes: UCS2 인코딩을 처리할 때 발생하는 정렬되지 않는 쓰기 오류를 해결하였습니다. (Fedor Indutny) #2480
  • tls: 새로운 ——tls—cipher—list 플래그를 추가하여 기본 암호화 목록을 대체 할 수 있도록 하였습니다. (James M Snell) #2412

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/io.js/labels/confirmed-bug에서 확인할 수 있습니다.

  • 현재 버전의 V8에서는 계산된 객체의 축약 프로퍼티를 사용할 때 일부가 제대로 처리되지 않습니다. 예시로 [{ [prop]: val }][{}]로 평가됩니다. #2507
  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 얼릴 수 있습니다. #690
  • process.send()가 문서에 쓰인 것처럼 동기적이지 않으며, 이 문제는 1.0.2에서 발생했습니다. #760
  • DNS 질의 진행 중에 호출된 dns.setServers()가 단언문 실패로 프로세스를 크래시시킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

Node.js v4 에반젤리스트가 필요합니다

  • Node.js v4는 곧 출시됩니다. 우리는 Node.js v4를 위한 에반젤리스트가 필요합니다. 당신이 에반젤리즘에 관심이 있다면, 이 이슈에 당신의 정보를 알려주세요.
  • 현재 회원:

새로운 nodejs.org가 오늘 출시 되었습니다

커뮤니티 업데이트

  • 우리의 LTS 빌드를 해줄 V8 메인테이너가 아직 필요합니다! 당신이 요구사항에 충족 되는지 GitHub에서 확인하세요.
  • npm에서 테스트와 배포에 관한 팁에 대한 블로그 글을 올렸습니다.

만약 Node.js나 io.js에 관한 글을 쓰거나 발견했다면, Evangelism 팀 저장소에 와서 추천한 후 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일부터 9일까지 아일랜드 워터포드에서 열립니다.
  • nodeday 입장권을 판매하고 있습니다. 9월 10일 인도 Karnataka에서 열립니다.
  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • EmpireNode가 10월 23일 미국 뉴욕에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 콜롬비아 Medellin의 Ruta N에서 열립니다.
  • NodeFest가 11월 7일 일본 도쿄에서 열립니다.
  • Nodevember가 11월 14일부터 15일까지 미국의 Tennessee, Nashville에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

io.js와 Node.js 주간 뉴스 2015년 8월 21일

io.js v3.1.0, v0.12 LTS 계획, ARM 빌드, nodeday 이벤트.

io.js v3.1.0 릴리스

주요 변경 사항

  • buffer: 몇 가지 큰 메모리 누수 수정 (Ben Noordhuis) #2352.
  • crypto:
    • 몇 가지 사소한 메모리 누수 수정 (Karl Skomski) #2375.
    • Sign은 이제 OpenSSL 에러를 확인합니다 (P.S.V.R) #2342. 이 변경은 사용자 코드의 숨겨진 에러를 드러낼 수도 있습니다.
  • intl: Intl의 small-icu 지원은 이제 빌드에서 기본 값으로 활성화됩니다. (Steven R. Loomis) #2264
    • String#normalize()는 이제 유니코드 정규화에도 사용할 수 있습니다.
    • Intl 객체와 여러 String, Number 메서드가 있지만, 영어 로케일만 지원합니다.
    • 모든 로케일을 지원하려면, node를 full-icu로 빌드해야만 합니다.
  • tls: 잘못된 머지 후에 tls의 처리량이 급감한 문제를 수정했습니다. (Fedor Indutny) #2381
  • tools: v8 tick 프로세서는 이제 node에 포합됩니다. (Matt Loring) #2090
    • 이는 node를 --perf 옵션과 함께 실행해 성능 분석 출력을 만드는데 사용할 수 있습니다. 이 출력은 tools/v8-prof에 있는 당신에게 적합한 플랫폼의 스크립트에서 사용할 수 있습니다.
  • util: util.inspect(obj)는 이제 객체의 생성자 이름이 있다면 이를 출력합니다. (Christopher Monsanto) #1935.

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/io.js/labels/confirmed-bug에서 확인할 수 있습니다.

  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 얼릴 수 있습니다. #690
  • process.send()가 문서에 쓰인 것처럼 동기적이지 않으며, 이 문제는 1.0.2에서 발생했습니다. #760
  • DNS 질의 진행 중에 호출된 dns.setServers()가 실패한 단언문으로 프로세스의 충돌을 일으킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

커뮤니티 업데이트

  • LTS 빌드를 할 V8 메인테이너를 아직 구하고 있습니다! GitHub에서 요구사항을 확인하세요.
  • Marko Bonaći가 처음으로 만든 유용한 Node.js 툴(로그 파일을 검색)에 관한 블로그 글을 공개했습니다.
  • Rod VaggARM의 Node.js 빌드 상태에 관한 글을 갱신했습니다. 이 글에서, Node 코어 멤버가 Node.js를 어떻게 테스트하고 빌드하는지 설명합니다.

Node.js나 io.js에 관한 글을 쓰거나 발견했다면, Evangelism 팀 저장소에 와서 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • BrazilJS Conf 입장권을 판매하고 있습니다. 8월 21일과 22일 BarraShoppingSul 쇼핑 센터에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일부터 9일까지 아일랜드 워터포드에서 열립니다.
  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 Medellin의 Ruta N에서 열립니다.
  • Nodevember가 11월 14일부터 15일까지 미국의 Tennessee, Nashville에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

io.js와 Node.js 주간 뉴스 2015년 8월 14일

io.js와 Node.js 뉴스 — 8월 14일

nodejs/io.js에서 nodejs/node로의 이동, 기여자 회담 등.

nodejs/io.js가 nodejs/node로 바뀝니다!

이번 주 초 Rod Vagg가 io.js와 Node.js의 합병 작업에 관한 제안을 했는데, 그중 하나는 nodejs/io.js인 저장소의 이름을 nodejs/node로 변경하자는 것입니다. 결의된 사항에 따라 nodejs/node에 새로 둥지를 틀게 됐습니다!

새로운 이름과 함께 io.js v3.x는 io.js의 마지막 메이저 버전이 될 것이고 그다음(v4.x)은 Node.js v4.x가 될 것입니다.

그 밖의 제안 내용은 다음과 같습니다.

  • 새로운 저장소에서 io.js v3, Node.js 0.10, 0.12를 포함해 미래의 모든 릴리스가 이뤄집니다. 이미 있는 v3.x 브랜치와 별개로 v0.10.x, v0.12.x 브랜치로 분리해 저장하자고 제안했습니다.
  • joyent/node는 그대로 남겨두고, 모든 새로운 이슈와 풀 리퀘스트는 nodejs/node에 기록되도록 장려할 것입니다. 여전히 joyent/node를 nodejs/node-legacy 또는 비슷한 이름의 저장소로 옮길 가능성이 있습니다.
  • 기여는 nodejs/node가 가지게 될 새로운 브랜치 구조에 따라 문서화 되어야 하므로, 일반적인 기여를 위한 더 간단한 CONTRIBUTING.md를 새로 작성했습니다. 새로운 브랜치들이 서로 다른 버전을 제공함에 따라 기여자들은 어떤 브랜치에 풀 리퀘스트를 보내야 하는지, 어떤 버전이 그들의 이슈와 관계있는지 알아야 합니다.

대화에 참여하려면 nodejs/node 이슈 페이지에 방문하세요.

커뮤니티 업데이트

만약 당신이 Node.js나 io.js에 관한 글을 쓰거나 발견했다면, 우리의 Evangelism 팀 저장소에 와서 추천한 후 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • BrazilJS Conf 입장권을 판매하고 있습니다. 8월 21일과 22일 BarraShoppingSul 쇼핑 센터에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일부터 9일까지 아일랜드 워터포드에서 열립니다.
  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 Medellin의 Ruta N에서 열립니다.
  • Nodevember가 11월 14일부터 15일까지 미국의 Tennessee, Nashville에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

4.0이 새로운 1.0이다

완전히 합쳐진 io.js/node.js의 첫 릴리스가 조만간 이뤄질 예정이다.

지난주는 일반적인 샌프란시스코의 여름처럼 맑고 때때로 강한 바람이 불었다. 새로운 Node.js 재단이 주관한 첫 기여자 회담을 위해 40명의 node.js 기여자가 모였다.

1년 전만 해도 40명의 기여자를 모으지 못했지만 지금 이 40명은 전체 기여자에 극히 일부일 뿐이다. (8월 12일 기준으로 Github 조직에 359명의 구성원이 있다.) Joyent가 node.js를 재단으로 이관하고 io.js가 재단으로 합쳐진 덕분이다. 프로젝트가 하나로 합쳐졌으므로 node.js는 지금까지 보지 못한 진보를 보여주었고 Node.js v4.0을 곧 볼 수 있을 것이다. 이는 io.js와 node.js가 합쳐진 첫 릴리스이다.

타임라인

  • 2월 — Joyent가 Node Summit에서 Node.js 재단을 구성한다고 발표했다.
  • 3월 — 재단의 내규 초안이 배포되었다.
  • 5월 — io.js TC가 Node.js 재단에 들어가고 node.js와 합치기로 투표했다.
  • 6월 — Node.js 재단과 창립 구성원을 공식 발표했다.
  • 7월 — Node.js 재단 이사회가 구성되었다.
  • 8월 — 첫 번째 Node.js 기여자 회담이 이뤄졌다.
  • 9월 — Node.js v4.0 (완전히 합쳐진 첫 릴리스).
  • 12월 — 세계 정복.

지난 몇 달 동안 io.js와 node.js의 거버넌스와 개발이 함께 이뤄졌다. 참여하는 모두가 합쳐진 릴리스가 가능한 한 빨리 이뤄지길 바라면서 기술 결정 위원회[1]는 개발 커뮤니티가 사용 중인 io.js와 node.js 0.12.x의 정기 릴리스를 계속해서 전담했다.

이 과정에서 운영 중인 개발 단계와 릴리스 단계의 몇 가지 문제점을 발견했고 동시에 최근 V8의 상당한 변경사항에도 대응했다.

네이티브 모듈

모듈 생태계는 Node 개발자가 되는 가장 좋은 부분 중 하나이다. 이러한 모듈 중 일부는 "네이티브 모듈"이라고 부르는데, 어떤 방식으로든 V8의 C++ API에 의존하는 순수 자바스크립트가 아니라는 의미를 담고 있다. 다시 말해 node.js의 주 버전이 릴리스 될 때마다 네이티브 모듈에 문제가 생기고, 새 버전의 V8과 동작하려면 네이티브 모듈도 업데이트되어야 한다는 뜻이다.

2013년 중순에 Rog Vagg는 네이티브 모듈 개발자가 node.js에서 사용하는 여러 V8 버전(0.8, 0.10, 0.12 등)을 동시에 지원할 때 사용할 수 있는 NAN(노드 네이티브 추상화, Native Abstractions for Node)이라는 모듈을 개발했다. 덕분에 개발자들은 여러 버전의 V8을 지원하기 위한 수많은 코드를 작성하지 않아도 되었지만, 그렇다고 네이티브 모듈이 V8 새 버전에서 동작하지 않는 문제가 해결되지는 않았다.

네이티브 모듈 개발자들은 최신 버전의 node.js를 지원하는 NAN으로 간단하게 업그레이드할 수 있다. 안타깝지만 node.js 모듈에 있는 의존성 체인 때문에 업데이트 해야 할 네이티브 모듈의 의존성, 그리고 의존성의 의존성과 의존성의 의존성의 의존성 등을 처리하는 데는 꽤 많은 시간이 소요될 것이다.

여기서 말하는 모듈의 개수는 어느 정도일까? 현재 NAN에 직접 의존하는 모듈은 600개 정도이다(전체 npm 모듈의 0.5% 수준). 하지만 이 모듈에 대한 의존성까지 모두 계산한다면 전체 모듈의 최대 30% 정도가 간접적으로 NAN에 의존하고 있다. 이러한 모듈이 새 버전을 좇아오려면 어느 정도 시간이 걸릴 것이므로, 기술 결정 위원회는 네이티브 모듈 생태계에 영향을 줄 수 있는 메이저 버전을 릴리스하기 전에 네이티브 모듈의 업그레이드를 위한 유예 시간을 늘리는 새로운 릴리스 프로세스를 개발했다.

"io.js v3가 node.js v4 알파"라는 말은 무슨 뜻인가?

io.js가 첫 릴리스를 할 때 새로운 버전의 V8로 업그레이드했고(node.js는 몇 년 지난 버전을 사용했다.) 이를 지원하도록 새 버전의 NAN을 릴리스했다. io.js v3에 포함된 V8의 최근 변경사항은 상당히 내용이 많고 새로운 버전의 NAN이 필요할 뿐만 아니라 NAN 자체의 호환되지 않는 API 변경사항으로 모든 의존 네이티브 모듈에서 코드를 변경해야 할 필요도 생겼다.

이는 아주 큰 변화이고 네이티브 모듈 작성자가 io.js v3 릴리스를(몇 주 내에 계속 릴리스될 것이다.) 따라 잡으려면 시간이 필요하므로 모듈 작성자는 이에 대해 테스트를 하고 업그레이드해야 한다. Node.js v4는 더 새로운 V8을 포함할 것이지만 이는 현재 버전의 NAN에서 이미 지원하고 있다. 즉, io.js v3에서 동작하도록 NAN을 업그레이드했다면 이는 node.js v4에서도 동작할 것이다. 그래서 io.js v3를 node.js v4의 "알파 버전"이라고 부르는 것이다.

Node.js v4는 io.js 릴리스에서는 제공하지 않았던 node.js 0.12의 기능뿐 아니라 io.js에서 이뤄진 개선사항을 모두 포함하고 있다.

프로젝트가 합쳐졌다는 것은 릴리스 번호도 합쳐졌음을 의미하므로 기존에 존재하는 io.js 버전 번호와 겹치는 것을 피하고자 Node.js의 버전이 v4.0으로 올라간 것이다.

이제 io.js v3를 다운로드 받고 다음의 큰 릴리스를 준비할 때이다. :)


  1. Technical Steering Committee로 Node.js의 방향을 정하는 위원회

io.js와 Node.js 주간 뉴스 2015년 8월 7일

io.js와 Node.js 뉴스 — 8월 7일

io.js v3.0과 좋은 소식 및 비호환 변경, LTS 빌드 v8 메인테이너를 위한 회의.

io.js v3.0 릴리스

이번 주에는 io.js v3.0.0을 릴리스했습니다! 이 주 버전업으로, io.js에 새로운 기능이 추가되었습니다.

  • V8을 v4.2에서 v4.4로 업그레이드했습니다. Rod Vagg(@rvagg)가 v4.3과 v4.4의 변경사항을 포함한 Gist를 작성했습니다.
  • 계산된 프로퍼티 이름({['foo'+'bar']:'bam'})을 이제 harmony- 플래그 없이 지원합니다.
  • 유니코드 문자 이스케이프 시퀀스(\u{xxxxx})도 지원합니다. 더는 --harmony 옵션이 필요 없습니다.
  • 지금까지 클래스를 사용할 수 있었지만 내장된 Array 서브클래스는 지원하지 않았고 문제점이 있었습니다. V8의 새 버전에서 이 문제를 해결했습니다.
  • 스프레드 연산자(spread operator, ...)를 --es-staging 플래그로 지원합니다. (함수 호출에) 다수의 인자나 (배열 리터럴에) 다수 요소가 필요한 곳에 스프레드 연산자를 사용할 수 있습니다.
  • 레스트 파라미터(Rest parameters, function(...args) {})도 --es-staging 플래그와 함께 사용할 수 있도록 구현되었습니다.
  • REPL에 히스토리 파일이 추가되었습니다. 지금까지 REPL은 NODE_REPL_HISTORY_FILE을 지정해야 했지만, 현재 버전에서는 기본적으로 히스토리를 저장할 것입니다.
  • Buffer는 이제 Uint8Array의 서브 클래스입니다.
  • smalloc 모듈을 제거하고 freelist 모듈을 폐기했습니다.

주 버전이 올라감에 따라 호환되지 않는 변경사항이 있습니다.

  • Buffer.concat, dgram send() 오류와 http 서버 타이밍 동작이 변경되었습니다.
  • V8이 업그레이드 되어 모든 네이티브 애드온을 재컴파일해야 하고 애드온 작성자는 Maybe<>MaybeLocal<> 타입을 가능한 한 빨리 새로운 API로 전환해야 합니다.
  • HTTP 상태 코드. 코드 매핑이 이제 IANA 표준을 따르고 헤더의 텍스트 값에 따라 하위 호환성이 없는 변경이 생길 것입니다.
  • HTTP 에이전트 .getName()에서 반환 값 끝에 붙은 불필요한 여분의 콜론을 수정했습니다.

이번 릴리스에 대한 자세한 내용은 전체 변경사항, 호환되지 않는 변경사항에 대한 문서, 릴리스 제안에 대한 풀 리퀘스트에서 확인할 수 있습니다. 추가로 Yosuke Furukawa새로운 기능에 대한 자세한 내용을 담고 있는 저장소를 만들었습니다.

주요 변경 사항

  • buffer:
    • V8의 변경사항 때문에 V8의 Uint8ArrayBuffer를 다시 구현해야 했습니다. 성능에 주는 영향을 최소화하려고 모든 노력을 다했지만 Buffer 인스턴스화가 측정할 수 있을 정도로 느려졌습니다. 접근 작업이 어떤 상황에서는 더 빠를 수도 있지만 정확한 성능 프로파일과 이전 버전과의 차이점은 애플리케이션 내에서 Buffer를 어떻게 사용하느냐에 따라 다를 것입니다. (Trevor Norris) #1825.
    • Buffer가 이제 생성자 인자로 ArrayBuffer를 받을 수 있습니다. (Trevor Norris) #2002
    • 하나의 버퍼를 Buffer.concat()에 전달했을 때 새로 복사된 Buffer 객체를 반환할 것입니다. 이전 동작은 원래의 Buffer 객체를 반환하는 것이었습니다. (Sakthipriyan Vairamani) #1937
  • build: PPC 지원에 pLinux BE와 LE에서 컴파일할 수 있는 코어가 추가되었습니다. (AIX는 곧 지원할 예정입니다.) (Michael Dawson) #2124
  • dgram: socket.send()에서 오류가 발생하고 콜백이 제공된 경우 콜백의 첫 인자로 오류만 전달하고 socket 객체에서는 이벤트가 발생하지 않습니다. 이전에는 두 가지 모두가 호출되었습니다. (Matteo Collina & Chris Dickinson) #1796
  • freelist: 문서가 없는 freelist 핵심 모듈을 폐기했습니다. (Sakthipriyan Vairamani) #2176
  • http:
    • 상태 코드는 이제 RFC7231에 따라 공식 IANA 이름을 모두 사용합니다. 예시로 http.STATUS_CODES[414]는 이제 'Request-URI Too Large'가 아니라 'URI Too Long'를 반환합니다. (jomo) #1470
    • HTTP 에이전트에서 .getName()을 호출하면 더는 마지막에 콜론을 붙이지 않고 HTTPS 에이전트는 더는 문자열 중간에 여분의 콜론을 반환하지 않습니다. (Brendan Ashworth) #1617
  • node:
    • API 변경을 나타내려고 NODE_MODULE_VERSION45로 올렸습니다. (Rod Vagg) #2096
    • 'io.js'로 설정된 name 프로퍼티와 관련 리소스의 URL을 담고 있는 sourceUrl, headersUrl, libUrl(Windows 전용) 프로퍼티를 가진 process.release 객체를 도입했습니다. 이는 node-gyp에서 사용하기 위함입니다. (Rod Vagg) #2154
    • io.js에 포함된 node-gyp 버전은 이제 네이티브 애드온을 컴파일하려고 전체 소스를 다운로드하는 대신 iojs.org에서 헤더 파일의 tarball을 다운로드해서 사용합니다. 이 부분은 일시적인 패치이고 변경사항이 node-gyp에 적용되기를 기대합니다. (Rod Vagg) #2066
  • repl: 이제 기본적으로 히스토리를 유지합니다. 히스토리 파일은 ~/.node_repl_history에 있고 이는 새로운 NODE_REPL_HISTORY 환경 변수로 덮어쓸 수 있습니다. 이로써 이전에 사용하던 NODE_REPL_HISTORY_FILE 변수는 폐기했습니다. 추가로 파일의 형식은 파일 변조를 더 잘 다루도록 플레인 텍스트로 변경하였습니다. (Jeremiah Senkpiel) #2224
  • smalloc: V8의 변경사항 때문에 API를 더는 제공할 수 없으므로 smalloc 모듈을 제거했습니다. (Ben Noordhuis) #2022
  • tls: TLS 세션 키 순환을 위해 server.getTicketKeys()server.setTicketKeys() 메서드를 추가했습니다. (Fedor Indutny) #2227
  • v8: 4.4.63.26로 업그레이드 했습니다.
    • ES6: 계산된 프로퍼티 이름을 활성화했습니다.
    • ES6: strict 모드에서 Array를 서브클래스화 할 수 있습니다.
    • ES6: 스테이징에서 레스트 파라미터(rest parameters)를 구현했습니다. --harmony-rest-parameters 커맨드 라인 플래그를 사용하세요.
    • ES6: 스테이징에서 스프레드 연산자(spread operator)를 구현했습니다. --harmony-spreadcalls 커맨드 라인 플래그를 사용하세요.
    • SetIndexedPropertiesToExternalArrayData와 관련 API를 제거해서 BufferUint8Array에 기반해서 다시 구현하도록 강제합니다.
    • 값이 있을 수도 없을 수도 있는 객체를 위해 MaybeMaybeLocal C++ API를 도입했습니다.
    • PPC에 대한 지원을 추가했습니다.

호환되지 않는 변경사항에 대한 요약은 https://github.com/nodejs/io.js/wiki/Breaking-Changes#300-from-2x도 참고하세요.(SEMVER-MAJOR)

알려진 이슈

현재 알려진 이슈의 전체 목록은 https://github.com/nodejs/io.js/labels/confirmed-bug에서 확인할 수 있습니다.

  • beforeExit 중에 참조 해제된 타이머에 대한 문제가 아직 남아 있습니다. #1264
  • REPL에 입력된 서로게이트 페어가 터미널을 얼릴 수 있습니다. #690
  • process.send()가 문서에 쓰인 것처럼 동기적이지 않으며, 이 문제는 1.0.2에서 발생했습니다. #760
  • DNS 질의 진행 중에 호출된 dns.setServers()가 실패한 단언문으로 프로세스의 충돌을 일으킬 수 있습니다. #894
  • url.resolve가 다른 두 호스트 사이를 해석하는 중 URL의 인증 정보 부분을 교환할 수 있습니다. #1435

커뮤니티 업데이트

만약 당신이 Node.js나 io.js에 관한 글을 쓰거나 발견했다면, 우리의 Evangelism 팀 저장소에 와서 추천한 후 이슈 페이지에 주간 업데이트 이슈로 알려주세요.

다가오는 이벤트

  • BrazilJS Conf 입장권을 판매하고 있습니다. 8월 21일과 22일 BarraShoppingSul 쇼핑 센터에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일부터 9일까지 아일랜드 워터포드에서 열립니다.
  • Node.js Italian Conference 입장권을 판매하고 있습니다. 10월 10일 이탈리아 Brescia의 Desenzano에서 열립니다.
  • JSConf CO가 10월 16일부터 17일까지 Medellin의 Ruta N에서 열립니다.

Node.js와 io.js의 다가오는 이벤트를 계획하고 있나요? Evangelism 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.