io.js 주간 뉴스 2015년 5월 8일

io.js 2.0 릴리스

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

주요 변경 사항

2.0.1

  • async_wrap: (Trevor Norris) #1614
    • 이제 프로바이더로 필터를 적용할 수 있습니다.
    • bit 플래그가 제거되고 바인딩 객체에서 메서드 콜로 대체되었습니다.
    • 이 API는 불안정하기 때문에 기능 추가와 비호환 변경으로 io.js의 유의적 버전을 변경하지는 않습니다.
  • libuv: 많은 io.js 문제를 해결했습니다.
    • #862 무효한 stdio 파일 서술자로 자식 프로세스를 만드는 것을 방지합니다.
    • #1397 Windows에서 fs.access(W_OK)할 때의 EPERM 오류를 수정했습니다.
    • #1621 동봉된 libuv와 관련된 빌드 에러입니다.
    • #1512 Windows 종료 오류를 수정했습니다.
  • addons: 오래된 컴파일러로 애드온을 컴파일할 때 NODE_DEPRECATED 매크로가 문제될 수 있었습니다. 이 문제는 이제 해결되었습니다.(Ben Noordhuis) #1626
  • V8: V8을 4.2.77.18에서 4.2.77.20으로 업그레이드했습니다. FreeBSD에서 빌드를 할 수 없는 버그를 포함한 자잘한 수정이 포함됩니다.

2.0.0

  • crypto: TLS의 메모리 사용량이 현저히 감소했습니다.(Fedor Indutny & Сковорода Никита Андреевич) #1529
  • net: socket.connect()은 이제 사용자 정의 DNS 해결 메커니즘을 위한 'lookup' 옵션을 받을 수 있습니다. 기본값은 dns.lookup()입니다.(Evan Lucas) #1505
  • npm: npm을 2.9.0으로 업그레이드 했습니다. 더 자세한 내용은 릴리스 노트 v2.8.4v2.9.0을 참조하세요. 주목할 만한 것들은 다음과 같습니다.
    • npm init -y를 사용자 입력 없이 할 수 있도록 기본 저자 필드에 대한 지원을 추가했습니다.(@othiym23) npm/npm/d8eee6cf9d
    • npm outdatednpm update에 지역 모듈이 추가되었습니다.(@ArnaudRinquin) npm/npm#7426
    • npm version의 버전 번호 앞에 붙는 접두사는 이제 tag-version-prefix로 설정할 수 있습니다.(@kkragenbrink) npm/npm#8014
  • os: os.tmpdir()은 이제 크로스 플랫폼에서 일관되게 동작하고 더 이상 어떤 플랫폼에서도 경로 뒤에 슬래시를 붙여 반환하지 않습니다.(Christian Tellnes) #747
  • process:
    • process.nextTick()의 성능이 벤치마크 스위트에 의하면 2-42% 향상되었습니다. 이는 코어에서 많이 사용되기 때문에 주목할 만합니다.(Brian White) #1571
    • process.geteuid(), process.seteuid(id), process.getegid(), process.setegid(id) 함수로 프로세스의 UID와 GID를 효율적으로 get, set할 수 있습니다.(Evan Lucas) #1536
  • repl:
    • NODE_REPL_HISTORY_FILE 환경 변수에 사용자가 접근할 수 있는 파일로 설정하면 REPL 이력을 세션 간에 유지하게 할 수 있습니다. NODE_REPL_HISTORY_SIZE로 최대 이력 크기를 결정할 수 있으며, 기본값은 1000입니다.(Chris Dickinson) #1513
    • NODE_REPL_MODE 환경 변수를 사용해 REPL을 sloppy, strict, magic(기본값) 3가지 모드 중 하나로 할 수 있습니다. 새 magic 모드는 스트릭트 모드에서는 자동으로 “strict mode only” 구문을 실행합니다.(Chris Dickinson) #1513
  • smalloc: ‘smalloc’ 모듈은 V8 4.4에서 사용할 수 없게 되므로 폐기될 예정입니다.
  • util: Promise, Map, Set 검사를 지원합니다.(Christopher Monsanto) #1471
  • V8: 4.2.77.18로 업그레이드했습니다. 자세한 내용은 변경 로그를 참조하세요. 주목할 만한 것들은 다음과 같습니다.
    • 클래스가 스테이징 단계를 벗어났습니다. 이제 class 키워드는 스트릭트 모드에서 플래그 없이 사용할 수 있습니다.
    • 객체 리터럴 개선이 스테이징 단계를 벗어났습니다. 이제 단축 메서드와 프로퍼티 문법을 사용할 수 있습니다. ({ method() { }, property })
    • Rest 매개변수(function(...args) {})가 스테이징에서 구현되었고 --harmony-rest-parameters 플래그로 사용할 수 있습니다.
    • 연산을 사용한 프로퍼티 이름({['foo'+'bar']:'bam'})이 스테이징에서 구현되었고 --harmony-computed-property-names 플래그로 사용할 수 있습니다.
    • 유니코드 이스케이프('\u{xxxx}')가 스테이징에서 구현되었고 --harmony_unicode 플래그로 사용할 수 있습니다. --harmony_unicode_regexps 플래그를 사용하면 정규표현식에서도 사용할 수 있습니다.
  • Windows:
    • Windows에서 무작위로 프로세스가 종료하던 문제가 고쳐졌습니다.(Fedor Indutny) #1512 / #1563
    • 프로세스 이름(iojs.exe / node.exe)이 네이티브 애드온에 옵트아웃을 하는 문제를 고치기 위해 지연 로드 훅이 도입되었습니다. 네이티브 애드온은 문제가 있을 경우 이 기능을 끄려면 binding.gyp에 'win_delay_load_hook': 'false'를 포함해야 합니다.(Bert Belder) #1433
  • Governance:
    • Rod Vagg (@rvagg)가 Technical Committee(TC)에 추가되었습니다.
    • Jeremiah Senkpiel (@Fishrock123)이 Technical Committee(TC)에 추가되었습니다.

비호환 변경

자세한 내용은 https://github.com/nodejs/node/wiki/Breaking-Changes#200-from-1x 에 있습니다.

  • V8이 4.2로 업그레이드되었습니다. C++ API의 사소한 변경이 있었습니다.
  • os.tmpdir()은 이제 크로스 플랫폼에서 일관되게 동작하고 어떤 플랫폼에서도 경로 뒤에 슬래시가 붙여 반환하지 않습니다.
  • 비호환 변경은 아니지만, V8 4.4으로 업그레이드하면 지원되지 않는 ‘smalloc’ 모듈이 폐기될 예정입니다. 자세한 정보는 #1451를 확인하세요.

주의: ‘url’ 모듈의 새 버전은 릴리스 이전 버전으로 돌렸습니다. 이 결정은 npm 생태에서 비호환이 발생할 가능성이 너무 컸고, 릴리스 호환성 작업이 더 이루어져야 한다는 판단에서 했습니다. 자세한 정보는 #1602를 확인하세요.

알려진 이슈

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

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

커뮤니티 업데이트

  • Michael Dawson이 Node 재단에 WG proposal을 만들었습니다.
  • Mikeal Rogers가 미디엄에 io.js의 발전에 관한 글을 적었습니다.
  • CodeSchool이 io.js 2.0의 새로운 기능에 관한 블로그 글을 적었습니다.
  • Node Lead TJ Fontaine이 리더에서 물러났습니다.

다가오는 이벤트

  • NodeConf Adventure 입장권을 판매하고 있습니다. 6월 11일부터 14일까지 캘리포니아 Walker Creek Ranch에서 열립니다.
  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일부터 10일까지 워싱턴 주에서 열립니다.
  • BrazilJS Conf 입장권을 판매하고 있습니다. 8월 21일과 22일 BarraShoppingSul 쇼핑 센터에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일부터 9일까지 아일랜드 워터포드에서 열립니다.