v5.0.0을 릴리스한 뒤 정확히 6개월에서 3일 모자란 날에 Node.js 재단은 Node.js v6을 발표하게
되었습니다.
이 Node.js 새로운 주 버전은 성능, 신뢰성, 사용성, 보안성에서 충분한 개선을 이룬 버전입니다. 모듈
로딩은 Node.js v4보다 4배 가까이 빨라졌고 테스트와 문서도 많이 개선되었으며 Buffer와 파일
시스템 API의 사용성도 개선되었습니다. V8 5.0 덕분에 Node.js는 이제
ES6 언어 기능의 93%를 지원합니다.
장기지원 계획에 따라 Node.js v4 'Argon’은 2017년
4월까지 활성 장기지원을 할 것이고 그 이후부터는 유지보수 LTS라고 부르는 단계에 들어갈 것입니다.
새로운 Node.js v6 브랜치는 올해 10월에 새로운 활성 장기지원에 들어갈 것이고 2018년 4월까지
지원을 받을 것입니다. LTS 계획에 대해서 잘 모른다면 어떤 버전의 Node.js를 사용할지 제대로 결정하기
위해 LTS가 어떻게 동작하는지에 대한
문서를 읽어 보세요.
사용할 Node.js 버전을 결정할 때의 일반적인 규칙은 다음과 같습니다.
- 안정성이 중요하거나 프로덕션 환경이 복잡하다면 Node.js v4(현재는 v4.4.3)로 업그레이드하거나 유지하세요.
- 최신 기능이 도입되는 대로 빨리 사용해보고 싶고 최신 버전으로 업그레이드할 수 있다면 Node.js v6로 업그레이드하세요.
v6가 결국에는 LTS에 들어갈 것이지만 그 전까지는 새로운 기능을 적극적으로 도입할 것입니다.(semver의
마이너 버전으로) 이는 회귀가 발생할 수 있다는 의미입니다.
아래 릴리스 노트에는 v6로 변경할 이유를 보여주는 주요 변경사항이 나와 있습니다. 새로운 버전의
Node.js가 새로운 버전의 V8을 포함하고 있으므로 이미 설치한 네이티브 애드온은 모두 다시 컴파일을
해야 하고 그렇지 않다면 이러한 모듈을 불러올 때 런타임 오류가 발생할 것입니다. npm rebuild
를
사용하거나 node_modules 디렉터리를 제거하고 npm install
로 재설치 하세요.
Node.js v5는 어떻게 되는가?
현재 Node.js v5를 사용하고 있는 개발자들이 Node.js v6로 업그레이드할 시간을 가질 수 있도록
앞으로 두 달 동안 Node.js v5도 계속 지원할 것입니다.
Node.js v0.10과 v0.12는 어떻게 되는가?
아직 Node.js v0.10나 v0.12를 사용하고 있다면 v4나 v6로 바꿀 때입니다. 현재 v0.10과
v0.12 모두 유지보수 단계에 있고 올해 말에는 지원을 완전히 멈출 예정입니다.
현재 버전(Current)? 안정 버전(Stable)은 어떻게 되는가?
v6 릴리스가 안정 버전
대신 현재 버전
이라는 레이블을 사용하는 것을 눈치챘을 겁니다. 장기지원
릴리스와 현재 주도적으로 개발하고 있는 브랜치를 더 명확하게 구별하기 위해서 이름을 변경했습니다.
이제 안정 버전
대신 현재 버전
이라는 레이블을 사용할 것입니다.
주요 변경사항
이전의 Node.js v5.0.0 릴리스 이후 다음과 같은 많은 변경사항이 있습니다.
- Buffer
- Cluster
- Console
console.timeEnd()
를 알지 못하는 레이블로 호출하면 이제 오류를 던지는 대신 프로세스 경고를
발생시킵니다.
#5901
- Crypto
- 의존성
- DNS
- 평문 DNS PTR 레코드를 질의하는
dns.resolvePtr()
API를 추가했습니다.
#4921
- 평문 DNS PTR 레코드를 질의하는
- Domains
- 오류 핸들러가 없을 때는 스택을 제거합니다.
#4659
- 오류 핸들러가 없을 때는 스택을 제거합니다.
- Events
- File System
- HTTP
- HTTP 서버에서 커스텀 오류를 반환하는데 'clientError’를 사용할 수 있습니다.
#4557
- HTTP 서버에서 커스텀 오류를 반환하는데 'clientError’를 사용할 수 있습니다.
- Modules
- Net
- OS X
MACOSX_DEPLOYMENT_TARGET
이 10.7로 바뀌었습니다.
#6402
- Path
- 타입 검사가 개선되었습니다. #5348
- Process
- Querystring
querystring.parse()
가 반환하는 객체는 더는 Object.prototype를 상속받지 않습니다.
#6055.
- Readline
- REPL
- Timers
- 콜백이 함수가 아닐 때 빨리 실패합니다.
#4362
- 콜백이 함수가 아닐 때 빨리 실패합니다.
- Streams
- object 모드에서 작성을 할 때
null
은 이제 유효하지 않은 청크입니다.
#6170
- object 모드에서 작성을 할 때
- TLS
- TTY
- 전에 폐기했던 setRawMode 래퍼를 제거했습니다.
#2528
- 전에 폐기했던 setRawMode 래퍼를 제거했습니다.
- URL
- 호스트가 바뀌었다면
url.resolve()
에서 사용자명과 비밀번호를 버립니다.
#1480
- 호스트가 바뀌었다면
- Util
- Windows
- Windows XP와 Vista는 더는 지원하지 않습니다.
#5167.
- Windows XP와 Vista는 더는 지원하지 않습니다.
- Zlib
Commits
v5.0.0 이후의 SEMVER-MAJOR 변경사항
- [
85ab4a5f12
] - (SEMVER-MAJOR) buffer: add .from(), .alloc() and .allocUnsafe() (James M Snell) #4682 - [
2c55cc2d2c
] - (SEMVER-MAJOR) buffer: remove deprecated Buffer.write branch (dcposch@dcpos.ch) #5048 - [
101bca988c
] - (SEMVER-MAJOR) buffer: remove deprecated buffer.get/.set methods (Feross Aboukhadijeh) #4594 - [
3b27dd5ce1
] - (SEMVER-MAJOR) buffer: throw if both length and enc are passed (Mathias Buus) #4514 - [
3fe204c700
] - (SEMVER-MAJOR) buffer: docs-only deprecate SlowBuffer (James M Snell) #5833 - [
627524973a
] - (SEMVER-MAJOR) buffer: add Buffer.allocUnsafeSlow(size) (James M Snell) #5833 - [
204f3a8a0b
] - (SEMVER-MAJOR) build: Bump MACOSX_DEPLOYMENT_TARGET to 10.7 (Сковорода Никита Андреевич) #6402 - [
90a5fc20be
] - (SEMVER-MAJOR) build: remove lint/dotfiles from release tarball (Johan Bergström) #5695 - [
66f4586dd0
] - (SEMVER-MAJOR) cluster: emit worker as first ‘message’ event arg (Ben Noordhuis) #5361 - [
4f619bde4c
] - (SEMVER-MAJOR) cluster: migrate from worker.suicide (Evan Lucas) #3743 - [
a5cce79ec3
] - (SEMVER-MAJOR) console: delete timers that have ended (Vladimir Varankin) #3562 - [
1c84579031
] - (SEMVER-MAJOR) console: timeEnd() with no label emits warning (Eugene Obrezkov) #5901 - [
41feaa89e0
] - (SEMVER-MAJOR) crypto: improve error messages (Sakthipriyan Vairamani) #3100 - [
f429fe1b88
] - (SEMVER-MAJOR) crypto: fail early when loading crypto without openssl (James M Snell) #5611 - [
a37401e061
] - (SEMVER-MAJOR) crypto: simplify Certificate class bindings (Alexander Makarenko) #5382 - [
7c48cb5601
] - (SEMVER-MAJOR) crypto: Improve control of FIPS mode (Stefan Budeanu) #5181 - [
a1163582c5
] - (SEMVER-MAJOR) crypto: pbkdf2 deprecate digest overload. (Tom Gallacher) #4047 - [
b010c87164
] - (SEMVER-MAJOR) crypto, string_bytes: treatbuffer
str asutf8
(Fedor Indutny) #5522 - [
1d9451bb5a
] - (SEMVER-MAJOR) crypto: better error message for createHash (Calvin Metcalf) #6042 - [
52af5c4eeb
] - (SEMVER-MAJOR) deps: upgrade V8 to 5.0.71.32 (Ali Ijaz Sheikh) #6111 - [
2253be95d0
] - (SEMVER-MAJOR) deps: reintroduce supporting shared c-ares builds (Johan Bergström) #5775 - [
4bc1cccb22
] - (SEMVER-MAJOR) dgram: pass null as error on successful send() (cjihrig) #5929 - [
dbdbdd4998
] - (SEMVER-MAJOR) dns: add resolvePtr to query plain DNS PTR records (Daniel Turing) #4921 - [
c4ab861a49
] - (SEMVER-MAJOR) dns: add failure test for dns.resolveXXX (Daniel Turing) #4921 - [
f3be421c1c
] - (SEMVER-MAJOR) dns: coerce port to number in lookupService (Evan Lucas) #4883 - [
4d4f3535a9
] - (SEMVER-MAJOR) doc: general improvements to fs.markdown (James M Snell) #5616 - [
d8290286b3
] - (SEMVER-MAJOR) doc: document deprecation of util._extend (Benjamin Gruenbaum) #4903 - [
236b7e8dd1
] - (SEMVER-MAJOR) doc: doc-only deprecation for util.log() (Jackson Tian) #6161 - [
90204cc468
] - (SEMVER-MAJOR) domains: clear stack when no error handler (Julien Gilli) #4659 - [
e38bade828
] - (SEMVER-MAJOR) events: don’t inherit from Object.prototype (Brian White) #6092 - [
53a95a5b12
] - (SEMVER-MAJOR) fs: make fs.watch error message more useful (James M Snell) #5616 - [
060e5f0c00
] - (SEMVER-MAJOR) fs: Buffer and encoding enhancements to fs API (James M Snell) #5616 - [
8bb60e3c8d
] - (SEMVER-MAJOR) fs: improve error message for invalid flag (James M Snell) #5590 - [
1124de2d76
] - (SEMVER-MAJOR) fs: deprecate fs.read’s string interface (Sakthipriyan Vairamani) #4525 - [
2b15e68bbe
] - (SEMVER-MAJOR) fs: fs.read into zero buffer should not throw exception (Feross Aboukhadijeh) #4518 - [
8b97249893
] - (SEMVER-MAJOR) fs: fix the error report on fs.link(Sync) (yorkie) #3917 - [
b488b19eaf
] - (SEMVER-MAJOR) fs: optimize realpath using uv_fs_realpath() (Yuval Brik) #3594 - [
5f76b24e5e
] - (SEMVER-MAJOR) http: overridableclientError
(Fedor Indutny) #4557 - [
d01eb6882f
] - (SEMVER-MAJOR) lib: add ‘pid’ prefix ininternal/util
(Minwoo Jung) #3878 - [
20285ad177
] - (SEMVER-MAJOR) lib: Consistent error messages in all modules (micnic) #3374 - [
94b9948d63
] - (SEMVER-MAJOR) lib,src: ensure ‘(node:pid)’ prefix for stdout logging (Minwoo Jung) #3833 - [
b70dc67828
] - (SEMVER-MAJOR) lib,test: remove publicly exposed freelist (cjihrig) #3738 - [
d38503ab01
] - (SEMVER-MAJOR) module: prioritize current dir for local lookups (Phillip Johnsen) #5689 - [
71470a8e45
] - (SEMVER-MAJOR) module: pass v8::Object to linked module initialization function (Phillip Kovalev) #4771 - [
18490d3d5a
] - (SEMVER-MAJOR) module: always decorate thrown errors (Brian White) #4287 - [
de1dc0ae2e
] - (SEMVER-MAJOR) module: preserve symlinks when requiring (Alex Lamar) #5950 - [
b85a50b6da
] - (SEMVER-MAJOR) net: remove implicit setting of DNS hints (cjihrig) #6021 - [
ec49fc8229
] - (SEMVER-MAJOR) net: improve socket.write() error message (Phillip Johnsen) #5981 - [
d0edabecbf
] - (SEMVER-MAJOR) net: strict checking for internal/net isLegalPort (James M Snell) #5733 - [
a78b3344f8
] - (SEMVER-MAJOR) net: type check createServer options object (Sam Roberts) #2904 - [
02ac302b6d
] - (SEMVER-MAJOR) net: Validate port in createServer().listen() (Dirceu Pereira Tiegs) #5732 - [
25751bedfe
] - (SEMVER-MAJOR) node: deprecate process.EventEmitter (Evan Lucas) #5049 - [
08085c49b6
] - (SEMVER-MAJOR) path: assert inputs are strings (Brian White) #5348 - [
d1000b4137
] - (SEMVER-MAJOR) path: make format() consistent and more functional (Nathan Woltman) #2408 - [
c6656db352
] - (SEMVER-MAJOR) process: add ‘warning’ event and process.emitWarning() (James M Snell) #4782 - [
72e3dd9f43
] - (SEMVER-MAJOR) process: throw on non-function to nextTick() (yorkie) #3860 - [
5dafb435d8
] - (SEMVER-MAJOR) querystring: using toString for objects on querystring.escape (Igor Kalashnikov) #5341 - [
dba245f796
] - (SEMVER-MAJOR) querystring: don’t inherit from Object.prototype (Brian White) #6055 - [
0a62f929da
] - (SEMVER-MAJOR) readline: emit key info unconditionally (cjihrig) #6024 - [
3de9bc9429
] - (SEMVER-MAJOR) readline: document emitKeypressEvents() (cjihrig) #6024 - [
ca2e8b292f
] - (SEMVER-MAJOR) readline: deprecate undocumented exports (cjihrig) #3862 - [
0303a2552e
] - (SEMVER-MAJOR) readline: allow history to be disabled (surya panikkal) #6352 - [
ad8257fa5b
] - (SEMVER-MAJOR) repl: Assignment of _ allowed with warning (Lance Ball) #5535 - [
3ee68f794f
] - (SEMVER-MAJOR) repl: don’t complete expressions when eval fails (Anna Henningsen) #6328 - [
757fbac64b
] - (SEMVER-MAJOR) src: remove deprecated internal functions (Ben Noordhuis) #6053 - [
4e46931406
] - (SEMVER-MAJOR) src: deprecate undocumented variables (Jackson Tian) #1838 - [
57003520f8
] - (SEMVER-MAJOR) src: attach error to stack on displayErrors (cjihrig) #4874 - [
e7c077c610
] - (SEMVER-MAJOR) stream: make null an invalid chunk to write in object mode (Calvin Metcalf) #6170 - [
cc0342a517
] - (SEMVER-MAJOR) streams: update .readable/.writable to false (Brian White) #4083 - [
652782d137
] - (SEMVER-MAJOR) test: update test-repl-require for local paths (Myles Borins) #5689 - [
a5aa7c1713
] - (SEMVER-MAJOR) test: expand test case for unknown file open flags (James M Snell) #5590 - [
2c33819370
] - (SEMVER-MAJOR) test: fix tests that check error messages (cjihrig) #3727 - [
ac153bd2a6
] - (SEMVER-MAJOR) timers: fail early when callback is not a function (Anna Henningsen) #4362 - [
1ab6b21360
] - (SEMVER-MAJOR) tls: renameclientError
totlsClientError
(Fedor Indutny) #4557 - [
df268f97bc
] - (SEMVER-MAJOR) tls: use SHA1 for sessionIdContext (Stefan Budeanu) #3866 - [
8ffa20c495
] - (SEMVER-MAJOR) tools: do not rewrite npm shebang in install.py (Evan Lucas) #6098 - [
a2c0aa84e0
] - (SEMVER-MAJOR) tty: Remove deprecated setRawMode wrapper (Wyatt Preul) #2528 - [
eb4201f07a
] - (SEMVER-MAJOR) url: drop auth inurl.resolve()
if host changes (Alex Kocharin) #1480 - [
e2f47f5698
] - (SEMVER-MAJOR) util: Change how Error objects are formatted (Mudit Ameta) #4582 - [
93d6b5fb68
] - (SEMVER-MAJOR) util: use consistent Dates in inspect() (Xotic750) #4318 - [
24012a879d
] - (SEMVER-MAJOR) util: make inspect more reliable (Evan Lucas) #4098 - [
007cfea308
] - (SEMVER-MAJOR) util: remove pump (Wyatt Preul) #2531 - [
4cf19ad1bb
] - (SEMVER-MAJOR) util: Remove exec, has been deprecated for years (Wyatt Preul) #2530 - [
34a35919e1
] - (SEMVER-MAJOR) util: improve typed array formatting (Ben Noordhuis) #3793 - [
1cf26c036d
] - (SEMVER-MAJOR) win: prevent node from running on Windows Vista or earlier (Alexis Campailla) #5167 - [
55db19074d
] - (SEMVER-MAJOR) win,msi: prevent from installing on Windows Vista or earlier (Alexis Campailla) #5167 - [‘54a5287e3e’] -
(SEMVER-MAJOR) zlib: fix gzip member head/buffer boundary issue (Anna Henningsen) #5883 - [
8b43d3f52d
] - (SEMVER-MAJOR) zlib: do not emit event on *Sync() methods (Rich Trott) #5707
Semver-minor and patch commits since v5.11.0
- [
6c1e5ad3ab
] - (SEMVER-MINOR) buffer: add Buffer.prototype.lastIndexOf() (dcposch@dcpos.ch) #4846 - [
dd67608bfd
] - buffer: safeguard against accidental kNoZeroFill (Сковорода Никита Андреевич) nodejs/node-private#30 - [
a4b8000029
] - build: update android-configure script for npm (Robert Chiras) #6349 - [
40ede46690
] - cares: Support malloc(0) scenarios for AIX (Gireesh Punathil) #6305 - [
e5f1e2c1df
] - deps: upgrade to V8 5.0.71.35 (Ali Ijaz Sheikh) #6372 - [
49e42c530b
] - deps: upgrade to V8 5.0.71.34 (Ali Ijaz Sheikh) #6320 - [
2011f2c6dc
] - doc: fix position offs.readSync()
(Jeremiah Senkpiel) #6399 - [
29a6c7c1f0
] - doc: change references to Stable to Current (Myles Borins) #6318 - [
a026cd0fa5
] - doc: update authors (James M Snell) #6373 - [
92a02d51dc
] - doc: add JacksonTian to collaborators (Jackson Tian) #6388 - [
879aeb5e49
] - doc: add Minqi Pan to collaborators (Minqi Pan) #6387 - [
be5d699055
] - doc: add eljefedelrodeodeljefe to collaborators (Robert Jefe Lindstaedt) #6389 - [
916b1a1d44
] - doc: add ronkorving to collaborators (ronkorving) #6385 - [
c7066fb853
] - doc: add estliberitas to collaborators (Alexander Makarenko) #6386 - [
983a809456
] - doc: fix broken references (Alexander Gromnitsky) #6350 - [
ae991e7577
] - doc: add note for platform specific flagsfs.open()
(Robert Jefe Lindstaedt) #6136 - [
f85412d49b
] - doc: improvements to child_process, process docs (Alexander Makarenko) - [
f6d90a912b
] - doc: fix a typo in the CONTRIBUTING.md (vsemozhetbyt) #6343 - [
6815a3b7f9
] - doc: add vm example, be able to require modules (Robert Jefe Lindstaedt) #5323 - [
7f11634a46
] - doc: note that process.config can and will be changed (James M Snell) #6266 - [
0e7d57af35
] - (SEMVER-MINOR) events: add prependListener() and prependOnceListener() (James M Snell) #6032 - [
c1cd64481f
] - events: make eventNames() use Reflect.ownKeys() (Luigi Pinca) #5822 - [
f1294f5bfd
] - gyp: inherit parent for*.host
(Johan Bergström) #6173 - [
d5922bd7a9
] - querystring: fix comments (Brian White) #6365 - [
2c480bdae6
] - src: fix check-imports.py linter errors (Sakthipriyan Vairamani) #6105 - [
5eb4ec090d
] - src: squelch -Wunused-variable in non-icu builds (Ben Noordhuis) #6351 - [
a3b5b9cbf2
] - src: fix out-of-bounds write in TwoByteValue (Anna Henningsen) #6330 - [
cdba9a6c02
] - src: add intl and icu configs to process.binding(‘config’) (James M Snell) #6266 - [
2e974cdd8c
] - src: add process.binding(‘config’) (James M Snell) #6266 - [
75e073f2b2
] - test: increase the platform timeout for AIX (Michael Dawson) #6342 - [
84ebf2b40d
] - test: add tests for console.assert (Evan Lucas) #6302 - [
a770a163ab
] - test: v8-flags is sensitive to script caching (Ali Ijaz Sheikh) #6316 - [
1e4d053e6b
] - test: don’t assume IPv6 in test-regress-GH-5727 (cjihrig) #6319 - [
a7335bd1f0
] - test,benchmark: use deepStrictEqual() (Rich Trott) #6213 - [
6781d917f4
] - tools: rewrite check-install.sh in python (Sakthipriyan Vairamani) #6105 - [
e84c69310f
] - tools: enforce deepStrictEqual over deepEqual (Rich Trott) #6213 - [
7940ecfa00
] - v8: warn in Template::Set() on improper use (Ben Noordhuis) #6277
Windows 32-bit Installer: https://nodejs.org/dist/v6.0.0/node-v6.0.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v6.0.0/node-v6.0.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v6.0.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v6.0.0/win-x64/node.exe
Mac OS X 64-bit Installer: https://nodejs.org/dist/v6.0.0/node-v6.0.0.pkg
Mac OS X 64-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-ppc64le.tar.xz
SunOS 32-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-sunos-x64.tar.xz
ARMv6 32-bit Binary: Coming soon
ARMv7 32-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v6.0.0/node-v6.0.0.tar.gz
Other release files: https://nodejs.org/dist/v6.0.0/
Documentation: https://nodejs.org/docs/v6.0.0/api/
Shasums (GPG signing hash: SHA512, file hash: SHA256):
1 | -----BEGIN PGP SIGNED MESSAGE----- |