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 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

io.js 주간 뉴스 2015년 7월 31일

io.js and Node.js 뉴스 — 7월 31일

io.js v2.5.0과 LTS 빌드 v8 메인테이너를 위한 회의.

io.js 2.5 릴리스

io.js v2.5.0을 릴리스했습니다. 이 버전과 이전 릴리스의 전체 변경사항은 GitHub에서 확인할 수 있습니다.

주요 변경 사항

  • https: Agent에서 TLS 세션이 재사용되었습니다. (Fedor Indutny) #2228
  • src: base64 디코딩이 50% 빨라졌습니다. (Ben Noordhuis) #2193
  • npm: v2.13.2으로 업그레이드 되었습니다. 변경사항은 https://github.com/npm/npm/releases/tag/v2.13.2에서 확인할 수 있습니다. (Kat Marchán) #2241.

알려진 이슈

현재 알려진 이슈의 전체 목록은 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 팀 저장소이슈 페이지의 주간 업데이트 이슈를 통해 알릴 수 있습니다.

io.js 주간 뉴스 2015년 7월 24일

이번 주엔 io.js 릴리스가 없습니다. 이전 릴리스의 전체 변경사항은 GitHub에서 확인할 수 있습니다.

커뮤니티 업데이트

다가오는 이벤트

  • 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에서 열립니다.

io.js 주간 뉴스 2015년 7월 17일

io.js 2.4.0 릴리스, Apigee의 재단 합류와 국제 워킹 그룹 발족.

io.js 2.4 릴리스

이번 주에 io.js v2.4.0 릴리스가 있었습니다. 전체 변경사항은 GitHub에서 확인할 수 있습니다.

주요 변경 사항

2.4.0

  • src: 힙 스냅샷에 사용될 힙 오브젝트 할당을 추적하기 위한 --track-heap-objects 플래그가 추가되었습니다. (Bradley Meck) #2135
  • readline: keypress 이벤트 핸들러가 에러를 발생시킬 때 repl이 멈추던 문제를 해결했습니다. (Alex Kocharin) #2107
  • npm: v2.13.0으로 업그레이드 했습니다. 릴리스 노트는 https://github.com/npm/npm/releases/tag/v2.13.0에서 찾을 수 있습니다. (Forrest L Norvell) #2152

알려진 이슈

현재 알려진 이슈의 전체 목록은 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

커뮤니티 업데이트

다가오는 이벤트

  • 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에서 열립니다.

io.js 주간 뉴스 2015년 7월 10일

io.js 1.8, 2.3의 보안 패치와 다가오는 이벤트

io.js 1.8, 2.3 릴리스

이번 주에는 v2.3.4, v1.8.4 릴리스가 있었습니다. 전체 변경사항은 GitHub에서 확인할 수 있습니다. v1.x의 변경사항은 여기서 확인하세요.

주요 변경 사항

1.8.4

유지보수 릴리스

  • openssl: 1.0.2d로 업그레이드 했습니다. CVE-2015-1793를 수정했습니다. (Alternate Chains Certificate Forgery) #2141.

2.3.4

알려진 이슈

현재 알려진 이슈의 전체 목록은 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

커뮤니티 업데이트

다가오는 이벤트

  • 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를 위한 중요 보안 업데이트

node.js와 io.js를 위한 치명적인 보안 릴리스

첫번째 분명한 것: 분명한 것은, 이 일의 처리가 이상적이지는 않았고, 우리가 좀 더 전략적으로 시간을 할애했다면 좋았을 것입니다. 지금 미국은 7월 4일(독립기념일) 주말의 저녁입니다.

우리는 강행하기로 했습니다. 왜냐하면 버그와 잠재적 취약점 공격에 대한 세부 사항이 실수로 인해 공개 포럼에 올라갔기 때문입니다. 우리는 이런 공격이 실제로 발생했을 때 모른 척하고 얼버무리고 싶지 않았습니다. 그래서 회사와 사용자에게 그들 스스로를 보호하고 DoS를 경감할 수 있는 도구를 제공하기로 했습니다. 시기가 굉장히 좋지 않습니다. 큰 배포를 다루는 사람에게는 독립기념일 행사와 주말이 겹친 지금이 악몽 같을 것입니다. 특히 주말을 빼앗긴 미국은 더욱 그렇습니다. 그럼에도 불구하고 이 정보를 공표하기로 결정했습니다.

###요약한다면 Kris Reeves와 Trevor Norris는 V8에서 UTF 문자열을 디코드하는 방법의 버그를 정확하게 지적했습니다. 이것은 버퍼를 UTF8 문자열로 변환할 때 Node에 영향을 주고 프로세스의 강제 종료를 유발할 수 있습니다. 보안 상 고려해야 할 것은, 굉장히 많은 데이터가 애플리케이션 외부로부터 이 메커니즘을 통해 Node로 전달된다는 것입니다. 이 말은 사용자가 이 경로를 통해, 잠재적으로 애플리케이션의 크래시를 유발할 수 있는 특별히 만든 입력 데이터를 전달할 수 있다는 뜻입니다. 우리는 버퍼를 UTF8 문자열로 변환하는 사용자가 많기 때문에 대부분의 네트워킹과 파일 시스템 작동이 영향을 받을 것을 알고 있습니다. Node는 HTTP(S) 헤더를 파싱한 후 UTF8로 변환하지 않기 때문에, 이에 대해서는 취약하지 않습니다. 이는 HTTP(S)가 취약점 공격을 받을 방법을 제한하기에 자그마한 위안을 주지만, 확실히 HTTP(S)에는 헤더 파싱 이외에도 많은 영역이 존재합니다. 게다가 우리에겐, 지금 사용되는 다양한 TLS 종결자와 포워드 프록시가 어떻게 이 취약점 공격에 필요한 데이터 형성을 잠재적으로 방해할 수 있을지에 대한 정보도 아직 없습니다.

초기 완료 예정 시각은 태평양 연안시로 정오였습니다. 불행하게도 그 패치는 불완전하고 낮 동안에는 V8, io.js, Node.js를 위한 다양한 검증 과정과 확장된 테스트만이 있었습니다. 빌드는 이런 이유로 시간을 할애했고 그래서 지연되었습니다. Fedor Indutny는 수정본을 만들었고, Ben Noordhuis, Trevor Norris, Julien Gilli, Rod Vagg, Michael Dawson, Jeremiah Senkpiel 모두 성공으로 이끌기 위해 열심히 일했습니다.

io.js 주간 뉴스 2015년 7월 3일

io.js 1.8, 2.3의 중요한 패치와 다가오는 이벤트

io.js 1.8, 2.3 릴리스

이번 주에는 v2.3.2 릴리스와 v1.8.3, v2.3.3에 중요한 보안 패치가 있었습니다. 전체 변경사항은 GitHub에서 확인할 수 있습니다. v1.x의 변경사항은 여기서 확인하세요.

주요 변경 사항

1.8.3

유지보수 릴리스

  • v8: utf8 디코더의 대역 밖에 쓸 수 있는 문제를 수정했습니다. 이는 DoS 공격에 사용될 수 있으므로 중요한 보안 업데이트입니다.
  • openssl: 1.0.2b, 1.0.2c로 업그레이드 했습니다. DHE 중간자 공격 방어(Logjam)를 도입하고 변형된 ECParameter가 무한 루프를 발생시키던 문제를 수정했습니다. (CVE-2015-1788). 더 자세한 내용은 보안 권고를 확인하세요. (Shigeki Ohtsu) #1950 #1958
  • build:
    • Microsoft Visual C++ 2015 컴파일 지원 추가
    • 헤더만 있는 타볼을 바이너리로 빌드, 배포 시작

2.3.2

  • build:
    • Microsoft Visual C++ 2015 컴파일 지원 추가
    • 헤더만 있는 타볼을 바이너리로 빌드, 배포 시작

2.3.3

  • deps: utf8 디코더의 대역 밖에 쓸 수 있는 문제를 수정했습니다. 이는 DoS 공격에 사용될 수 있으므로 중요한 보안 업데이트입니다.

알려진 이슈

현재 알려진 이슈의 전체 목록은 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

커뮤니티 업데이트

  • 후루카와 요스케가 YAPC Asia 2015에서 Node.js의 과거, 현재, 미래에 관한 발표를 합니다. YAPC은 일본에서 가장 큰 프로그래밍 커뮤니티입니다. 이는 도쿄에서 8월 20일~22일에 개최되며 후루카와의 발표는 22일에 있습니다. 더 자세한 내용은 여기를 참조하세요.
  • v8에서 Node.js의 0.12버전과 io.js의 모든 버전의 애플리케이션과 서버에 대한 DoS 공격에 사용할 될 수 있는 보안 이슈가 발견되었습니다. 중요 보안 업그레이드(Node.js v0.12.6, io.js 2.3.3, io.js 1.8.3)가 릴리스되었습니다. 이 문제에 관한 자세한 내용은 이 글에서 보실 수 있습니다. v1.8.2, v2.3.2 이전 버전을 사용하신다면 io.js 버전을 1.8.3, 2.3.3으로 업데이트해 주세요.

다가오는 이벤트

  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일부터 10일까지 워싱턴 주에서 열립니다.
  • 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에서 열립니다.

io.js 주간 뉴스 2015년 6월 26일

io.js와 Node.js 소식

이번 주에는 io.js v2.3.1 배포가 있고, 전체 변경사항은 GitHub에서 확인할 수 있습니다.

주요 변경 사항

  • module: require() 수행 중 시스템 콜의 횟수가 다시 급격하게 감소하게 되었고(v2.2.0부터 적용된 작업은 #1801을 참조하세요), 이로 인해 성능 향상이 있을 것입니다. (Pierre Inglebert) #1920.
  • npm:
    • v2.11.2로 업그레이드했습니다. (Rebecca Turner) #1956.
    • v2.11.3로 업그레이드했습니다. (Forrest L Norvell) #2018.
  • zlib: 버퍼 안에서 zlib의 압축 해제 결과의 마지막 부분이 최대 길이인 0x3fffffff바이트(~1기가)를 초과할 때 프로세스가 종료되던 버그가 발견되었습니다. 이 버그는 버퍼를 이용한(스트리밍을 이용하는 것보다는) 압축 해제에서만 나타나는 것 같습니다. 이 버그는 이제 해결되었고 앞으로는 RangeError가 발생할 것입니다. (Michaël Zasso) #1811.

알려진 이슈

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

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

커뮤니티 업데이트

다가오는 이벤트

  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일부터 10일까지 워싱턴 주에서 열립니다.
  • 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에서 열립니다.