Node v4.8.4(유지보수 버전)

주요 변경사항

  • build:
    • V8 스냅샷 비활성화 - 스냅샷에 포함된 해시 시드는 현재 실행되는 모든 바이너리와 같습니다. 이것은 노드가 서비스 거부(Denial of Service)를 일으킬 수 있는 충돌 공격들에 대해 노출된다는 것을 의미합니다. 그래서 우리는 확실한 해결책이 발견될 때까지 스냅샷을 비활성화 시킬 것입니다. (Ali Ijaz Sheikh)
  • deps:
    • CVE-2017-1000381 - NAPTR 응답을 분석하는 데 사용되는 c-ares 함수 ares_parse_naptr_reply()는, 전달된 DNS 응답 패킷이 특정 방식으로 만들어진 경우, 주어진 입력 버퍼의 외부 메모리를 읽을 수 있도록 트리거 될 수 있습니다. 이 패치는 레코드를 처리하기 전에 NAPTR 레코드의 필수 요소(int16의 경우 2Bytes, 문자열 길이의 경우 3Bytes)에 충분한 데이터가 있는지 확인합니다. (David Drysdale)

Commits

Windows 32-bit Installer: https://nodejs.org/dist/v4.8.4/node-v4.8.4-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v4.8.4/node-v4.8.4-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v4.8.4/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v4.8.4/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v4.8.4/node-v4.8.4.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-ppc64.tar.xz
SunOS 32-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-armv6l.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v4.8.4/node-v4.8.4-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v4.8.4/node-v4.8.4.tar.gz
Other release files: https://nodejs.org/dist/v4.8.4/
Documentation: https://nodejs.org/docs/v4.8.4/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
42
43
44
45
46
47
48
49
50
51
52
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

06213900c7d6ed598355cd11348b204bbb4d8069eaa7425c067ee596f38e7c4d node-v4.8.4-darwin-x64.tar.gz
0b944e08b51233005fa954056f1762a3fad92280e48e384b46dd5bd5695e6afd node-v4.8.4-darwin-x64.tar.xz
fe5cbb91c64df926c49d923348b4861a4e9284c8ecc87e504fbd8ddfbada8384 node-v4.8.4-headers.tar.gz
34e879759e0b577dd3900df2092ab3c15df040fbce1fbecc6cca2bef7301ffdf node-v4.8.4-headers.tar.xz
1eb8f8cadc8024fcb01f333ca8cac1db39735491a35122bf5ab1a40ee6bedced node-v4.8.4-linux-arm64.tar.gz
ae2f5a61b6218fced05de8ca8d163d985238aa5e535af1ba2075bd53aa31244f node-v4.8.4-linux-arm64.tar.xz
aaf8c7c4160ef4932004989cddc3723d8a5170ad86a2bd27e10b3e452702e086 node-v4.8.4-linux-armv6l.tar.gz
3daa79540c2133859d8d474004e6a7821cca4aa34931657f790707664c5f6346 node-v4.8.4-linux-armv6l.tar.xz
8d85b03be742b9494032f34833d766e3037934372cd0e118fd79fde00a3d8d91 node-v4.8.4-linux-armv7l.tar.gz
294ef24d3ec7224702b882d81ff9fa7e8c4988af7824c8378cafd2b72294fb14 node-v4.8.4-linux-armv7l.tar.xz
2a0627ad0683677febe99a523bb759f40c1934b7da2a1d9623dddda4ecd50063 node-v4.8.4-linux-ppc64le.tar.gz
a107957c34b21998abc914006b9566c262243ae38502595611da5cbdebea9283 node-v4.8.4-linux-ppc64le.tar.xz
9f252a4e892cdf99a081f3dfdb37ebdfc2c180df39f8850a35dc46fc59d3c2f6 node-v4.8.4-linux-ppc64.tar.gz
bb8d7167de39198fa631ab8a5b96cefa377048c5886895e1ddb2686991a39abe node-v4.8.4-linux-ppc64.tar.xz
d1297b6ddec12498f19589c0f44768a9f250ad36ea17f1f715b44aeb89cd32b2 node-v4.8.4-linux-x64.tar.gz
a98fc4cf9fcfe1c94dc34c8f58383dc4c2a40f0078735bd8dbf4fa20e075af17 node-v4.8.4-linux-x64.tar.xz
53f377f91aad1719539ba7fb591587b3ff8db25dd22d5f23647753cf60184044 node-v4.8.4-linux-x86.tar.gz
49ceb4e295837b182a61afd03b9aee353734aba646e98686d928bba2cfe502ce node-v4.8.4-linux-x86.tar.xz
b228e03c67aafb2b01456ef58dc6b238db6d31627205c7a69a6e8e072c961c9a node-v4.8.4.pkg
edff2a0eb071df6d15706202d82da7f4f6fa113e77881d6b70b0b6c350816cd8 node-v4.8.4-sunos-x64.tar.gz
11a061ddcb6f877ffb977a269e731e59071d6b3314d254d0a5898e69438f193b node-v4.8.4-sunos-x64.tar.xz
44803d9efb3f5b3b77f90d19e233c8a4e98b752de13ff10ceff9fe8a8094d011 node-v4.8.4-sunos-x86.tar.gz
d9a618c458e9ca91a2787fcd6598da5d77aff9292360078356d11ab11b515c88 node-v4.8.4-sunos-x86.tar.xz
b5480f69e9e929d2814de900fb5e673743a9d93f4fecbd79066baf18219f8584 node-v4.8.4.tar.gz
35fe633a48cbe93c79327161d9dc964ac9810f4ceb2ed8628487e6e14a15905b node-v4.8.4.tar.xz
bad999c784955ed808a2ce67ed2c0dc4b71e2abde873fbe912128f74ae5310b0 node-v4.8.4-win-x64.7z
8ebb31340af2d490a272cf0d3fdf07a60914fd79f40ac54b25babba7fcd9af25 node-v4.8.4-win-x64.zip
95c026c449f653a4de6768ae3c319383411c9c4898bef25691ae0b6038774d31 node-v4.8.4-win-x86.7z
02a38a9a3c723e8df033a9d15d1ffe492b7da42cea8f56d81148c3ac930afe81 node-v4.8.4-win-x86.zip
f5a15cbf5944f566e0ff917686f9290a688dedc24ce4bd237846f6353c20b640 node-v4.8.4-x64.msi
72190dcb1cebdbb05899acc3dea5d2dcad94dc811db289d015bb0e065c92e4ae node-v4.8.4-x86.msi
30e1308011f5e738d01ef406d3fe2648a66a7c042eb9aba3ca21b934a55fb61c win-x64/node.exe
51e7ebeed49def988e3398bf8a70bbba67ed38346439924dbdf9c01827016789 win-x64/node.lib
0a919967ed1cb6d1f7763ddbb2594f8f93adbcab2296192310faaf52d35fd6d1 win-x64/node_pdb.7z
ab593c61f1a39c93774c551116fa96f6b904c3dde9a4caf95cd199aec33f8aca win-x64/node_pdb.zip
540897f8d48d913b45eadb5201fc71475cd1652b414a7f035460aad2613c7594 win-x86/node.exe
35eb7a9960a773e8cac4c02336c500357a88c1937fda93466c1bd57eb8a63310 win-x86/node.lib
09dc53e16ab7d9b46419b5be872035349f428034beaa83008c3fd6798bdbc9e7 win-x86/node_pdb.7z
3070955c6e16c9f9ec5c6ce3a4bb1edc1efd2e1513ba6442d796f16207f5ee5e win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZZP/TAAoJEJM7AfQLXKlGd+gH/AhLQk+gW3NxrdgHhYUbQstS
uMjhSHBeNrwSk2UeFYimjE46SPf/v/zmjovcMyTEL/YzcNCSrEvuzdzjJ1U0ltxf
RngCDoZzJghpozLVQw97jClirblxOID6OpMNMV6zixs+JYzGvjK56RS8jE5mya1s
wZnHEOUAl/BVDvgQ7RGbL4lE9Kgms4PlnRZVqHPK23hZ9YwhMFRr3uMmduM8pasm
5Ea/wDIq7a9AlSgVk1CYkyfI0abgeIvihRa0BI8Q9I8wq517//VRi0Bcs2jcsUWO
/LZVxnz1lEuxRJB5FZ2Cx+PwxMwqITV1oUlNUhpZiPEukpZIeFtthYTrPTAZllI=
=0OBH
-----END PGP SIGNATURE-----

Node v8.1.3(현재 버전)

주요 변경사항

  • Stream stream 모듈의 두 가지 회귀가 수정되었습니다.
    • finish 이벤트는 항상 error 이벤트가 실행된 후에 실행됩니다. [0a9e96e86c] #13850
    • 객체 모드에서 읽기 가능한 스트림은 undefined를 다시 사용할 수 있습니다. [5840138e70] #13760

Commits

Windows 32-bit Installer: https://nodejs.org/dist/v8.1.3/node-v8.1.3-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v8.1.3/node-v8.1.3-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v8.1.3/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v8.1.3/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v8.1.3/node-v8.1.3.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-ppc64.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-aix-ppc64.tar.gz
SunOS 32-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-armv6l.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v8.1.3/node-v8.1.3.tar.gz
Other release files: https://nodejs.org/dist/v8.1.3/
Documentation: https://nodejs.org/docs/v8.1.3/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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

9f00c50d3065a6effe2b8f5c1097238bb7a00de9136b36e368fd30000135006f node-v8.1.3-aix-ppc64.tar.gz
ae588038480a6acc57b6b04802fa876e0b602231e9846944dd1b4437e8c1205f node-v8.1.3-darwin-x64.tar.gz
66ac1b3d3135dc7366b7b105768f334deb347770a7cd35f854638b8095ca1143 node-v8.1.3-darwin-x64.tar.xz
f1ac5b4d1778df43e102ba6a7bc884bdcdaa5cffbd228581794673babc36dd6c node-v8.1.3-headers.tar.gz
a723e2cc1188fc14f3bf92c156c184d5e3854735ee5f38d62c27f76f5e0f4237 node-v8.1.3-headers.tar.xz
5a7837cc31f2d2e0a8db081f5cb856276a6da3bb7b7cae364a36918763816ced node-v8.1.3-linux-arm64.tar.gz
cebc2edd89f20613a530509a2435ecc42757ce16032559ef174ebe84875a1536 node-v8.1.3-linux-arm64.tar.xz
a0386233c3e249c6bbfdb543581b01c3d0b006a17140bd791441c333b345c3a9 node-v8.1.3-linux-armv6l.tar.gz
3fefae29ab6028c0ad339527c08586588df5389df5228b1ed2016be1968d7907 node-v8.1.3-linux-armv6l.tar.xz
d63469cad1f71da249f931b9d7ab4b77dc83a08740cd6917ba7171b5abf0bc6e node-v8.1.3-linux-armv7l.tar.gz
5f957d0bb3d6dcbb9db04de63a9ff21f1e5edcdd1e2e3f0fb372a394403f8882 node-v8.1.3-linux-armv7l.tar.xz
65853d72de7c2b30f7c79817e8c60b4063f6918c7651c80cf1a7a875e4d49bf9 node-v8.1.3-linux-ppc64le.tar.gz
b7d04eb8ac25a5c2b61423695289e207c0d82cf80633f1be55d01eac1848283a node-v8.1.3-linux-ppc64le.tar.xz
59c16cb44800d4ca96f98bcf382f176591cbcc504b8b21a9ee9a7d28eaed06a1 node-v8.1.3-linux-ppc64.tar.gz
ba64edcb0274f3b413e5be9acbcdcc48188f0e2ce8c1afcac511f191b0eabea3 node-v8.1.3-linux-ppc64.tar.xz
302474d0a93055647596f8c962a6afe3fd1cc0e66e8b4d8f14f42813172973d0 node-v8.1.3-linux-s390x.tar.gz
ab54cde2b649002a6f322a460690438d20997a4ff2b3c294b66afc075df24fb6 node-v8.1.3-linux-s390x.tar.xz
1a526c56fb0fe0f4e91892874d89be2c8920a9d51eb6ed8bd68f66162b7a6b9e node-v8.1.3-linux-x64.tar.gz
d41dc375ea7e33fadf0fb1bf89d9dfd222a2fb85633fba3d2cf48ac03522ba71 node-v8.1.3-linux-x64.tar.xz
38bc1b25fc3dea3984729d4457d8e29ea6f0be156ba2e2c2274d850ebda4b8bd node-v8.1.3-linux-x86.tar.gz
68d895c6662c017ddcd54b788bfc90c310520c23853339fc815b58ef1b39c06e node-v8.1.3-linux-x86.tar.xz
6534587fc70b4384a78f2a8557c9fef4e40e7843205a373c401b2b8511ff79c4 node-v8.1.3.pkg
7e91af1e8f9803593c464f1d06df6675c85d35e8fc81bb304caf267dbf6f7f27 node-v8.1.3-sunos-x64.tar.gz
33d2f7f1e865222b07c9b9bbd978b23e41e67ab7c28eccaebcf89acabf279d00 node-v8.1.3-sunos-x64.tar.xz
6d25d4ac6372bdb67cc8c8e6b625ea224d62a0d925659110927eaca09c64618b node-v8.1.3-sunos-x86.tar.gz
accee86d6b1584a320ba0379292344a176786a3b7ce8712974b04698ec795bba node-v8.1.3-sunos-x86.tar.xz
388998d052335af1fe0643dd4d68e2fb1c7109ed6ae22a22cc394f1e7aaf43d3 node-v8.1.3.tar.gz
67bc73136807190bc2f4bd840c647bace9077f24988a262f497eceab78f5acd4 node-v8.1.3.tar.xz
1688ab46105e46af3f0f4c0ed595a6e9481a7d5c4c8913c560208a2faf1ec03a node-v8.1.3-win-x64.7z
be582920c723124ebad48c968f539ef66b1f628d8b6f2338dc68a32f95104856 node-v8.1.3-win-x64.zip
f074db9d173971a5606359c7eddbc2dca288a557542799eb257fdd71ee329523 node-v8.1.3-win-x86.7z
0c7079e6e51150e669aca9f158447504ca0de9254a81fcc68b3ab04e6ee2b901 node-v8.1.3-win-x86.zip
4e4af424435ef4ed18096099ae30880c999fda054e8faa664f5b930370aaad68 node-v8.1.3-x64.msi
53f53d56fa0ecf09bc27ade5980782499053cac7fccf668c017908a4ead11737 node-v8.1.3-x86.msi
6fc8439dbbf17641d993d7793ddc75bbaf401bdb73d4d95edc04db82cdc8d66a win-x64/node.exe
713aee6504cd983b066489f20d916afd3dd188f8aae022f3abdcceec6ccde476 win-x64/node.lib
4ca44c36341e4218232cc7a8ff2ff1420c6be2208b8b9d84535614b43d9bd842 win-x64/node_pdb.7z
b022710661e1b6bdba24735c2d4530e35577bd0ea3b492deb384d7133dd73ada win-x64/node_pdb.zip
a9e8086bc09b9f2830dca69bd6b6904e35cd24849fc0123111fd68418a6fccaf win-x86/node.exe
9715458e3754537b4418d95e62a655d37c86b5aa3abae0ffdbe4413ae55a6130 win-x86/node.lib
7a46f4f812df8b39352f9d5319e82c4c9b46a4ae44e94b62461daef4d52b49d9 win-x86/node_pdb.7z
33c8f5381234b16f469d1940829e19a033cd23dffa18b508b28e1e6f015532d6 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZVKV3AAoJEMJzeS99g1RdrE4IANkA2Pskj6dild8ilLCJdxKP
nyn4/FDS1kcEIt1cciLk5CbE/p6Or7I5QlK+Y7dzDzZS0tQldx2Bpnt8ZAYZgsoQ
mx8DUunZIOhY3m6CBxe2G6wUwttLCwfx0kJlQ0wRa2FeemuBsNcJ7EDK/TwqaExv
cMMr+2qYk6f59cyFfcwe3lkYnXenZbcrXX8W0UxqNHrMcC9KmNElXlVtqOF2Au9Y
INgEwQK+whbUiRPgAhFCVUWwDuFR39ZVHTx3c7BB6SrHNWXtk7TVAu5amMqclUwH
mrO0LUurXT7QtEMQdiSa2cvxiTD52p/2enXeI6UkY2Deknf9GG3I2g/tXEq2hiw=
=cUle
-----END PGP SIGNATURE-----

2017년 6월, 모든 활성 릴리스 라인의 보안 업데이트

(2017년 7월 11일 수정됨) 보안 릴리스를 사용할 수 있습니다.

요약

Node.js의 7.x를 포함한 모든 활성 릴리스 라인의 수정 버전을 이제 이용할 수 있습니다. 이번 수정 버전은 최초 공지에서 높은 심각도로 분류된 수정사항을 포함하고 있고 4.x 릴리스 라인에서 낮은 우선순위의 Node.js 취약점과 현재 릴리스 라인에 포함된 Node.js 의존성에 낮은 우선순위를 가진 수정사항도 포함되어 있습니다.

모든 릴리스 라인을 사용하는 사람은 최대한 빨리 업그레이드하기를 권장합니다.

다운로드

Note: 0.10.x와 0.12.x 릴리스 라인도 상수 해시테이블 시드 취약점에 취약합니다. 이 릴리스 라인을 사용하고 있다면 LTS 릴리스 라인으로 업그레이드하기를 권장합니다.

Node.js에 한정된 보안 결함

상수 해시테이블 시드(CVE 미정)

Node.js의 릴리스 버전에서 해시테이블 시드가 상수였기 때문에 해시 범람(hash flooding) 원격 DoS 공격을 받기 쉬웠습니다. 이는 처음에 랜덤 생성한 시드를 구동시에 덮어쓸 수 있는 V8 스냅숏이 기본적으로 활성화된 채로 만들어졌기 때문입니다. 이 취약점을 보고해준 Google 프로젝트 Zero의 Jann Horn에게 감사드립니다.

해시 범람 취약점의 일반적인 부분에 대해서는 https://events.ccc.de/congress/2011/Fahrplan/attachments/2007_28C3_Effective_DoS_on_web_application_platforms.pdf에서 볼 수 있습니다.

이번 수정 버전에서 스냅숏은 기본적으로 비활성화되었습니다. vm.runInNewContext에 크게 의존하는 코드는 더 좋은 해결책이 구현될 때까지는 대부분 성능 저하가 발생할 것입니다.

이는 높은 심각도의 취약점이고 모든 활성 릴리스 라인(4.x, 6.x, 8.x)과 7.x 라인에 적용되었습니다.

의존성의 취약점

영향받는 Node.js 릴리스 라인의 버전은 Node.js 의존성에 있는 다음 문제를 해결하는 수정하기 위해 갱신되었습니다. 이는 모두 제한적으로만 영향받거나 Node.js 환경에서는 활용될 가능성이 적으므로 낮은 심각도로 분류되었습니다.

CVE-2017-1000381 - c-ares NAPTR 파서가 경계를 벗어난 접근을 시도합니다.

보안 취약점은 Node.js 모든 버전에 포함된 c-ares 라이브러리에서 발견되었습니다. NAPTR 응답을 파싱할 때 정교하게 조작된 DNS 응답 패킷으로 주어진 입력 버퍼를 벗어난 메모리를 읽을 수 있게 됩니다. CVE-2017-1000381에서 권고하는 수정사항이 이번 Node.js 릴리스의 c-ares 버전에 추가되었습니다.

이는 낮은 심각도의 취약점이고 모든 활성 릴리스 라인(4.x, 6.x, 8.x)과 7.x 라인에 적용되었습니다.

아래부터는 원래의 글입니다.


요약

Node.js 프로젝트는 모든 활성 릴리스 라인(4.x, 6.x, 8.x)과 7.x의 보안 문제를 수정한 새 버전을 2017년 7월 10일이 있는 주에 릴리스합니다.

서비스 거부 취약점

4.x부터 8.x까지 모든 버전에 외부 공격자가 서비스 거부를 일으킬 수 있는 취약점이 포함되어 있습니다. 이 취약점의 심각도는 '높음'입니다. 영향받는 버전을 사용하고 있다면 보안 픽스가 출시될 때 반드시 업그레이드해야 합니다.

영향

  • Node.js 4.x 버전은 취약할 수 있습니다.
  • Node.js 6.x 버전은 취약할 수 있습니다.
  • Node.js 7.x 버전은 취약할 수 있습니다.
  • Node.js 8.x 버전은 취약할 수 있습니다.

릴리스 시기

7월 11일 화요일 또는 그즈음에 사용자가 전체적인 영향 평가를 할 수 있도록 취약점 상세 내용을 함께 발표하며 릴리스할 것입니다.

연락처 및 향후 업데이트

Node.js의 현재 보안 정책은 https://nodejs.org/en/security/에서 찾을 수 있습니다.

Node.js의 취약점을 제보하고 싶다면 security@nodejs.org로 연락해주세요.

보안 취약점, Node.js 보안 관련 릴리스, nodejs GitHub 조직 내부에서 유지보수 되는 프로젝트의 최신 정보를 알고 싶다면 적은 양으로 통지만 하는 nodejs-sec 메일링 리스트 https://groups.google.com/forum/#!forum/nodejs-sec를 구독해 주세요.

Node v8.1.2(현재 버전)

주요 변경사항

Windows를 제외한 플랫폼에서 네이티브 애드온 컴파일 실패의 원인이었던 8.1.1의 process.release 프로퍼티를 수정했습니다. Node.js 빌드 프로세스의 수정 사항이므로, 8.1.1에 추가적인 코드 커밋은 없습니다.

Windows 32-bit Installer: https://nodejs.org/dist/v8.1.2/node-v8.1.2-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v8.1.2/node-v8.1.2-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v8.1.2/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v8.1.2/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v8.1.2/node-v8.1.2.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-ppc64.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-aix-ppc64.tar.gz
SunOS 32-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-armv6l.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v8.1.2/node-v8.1.2-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v8.1.2/node-v8.1.2.tar.gz
Other release files: https://nodejs.org/dist/v8.1.2/
Documentation: https://nodejs.org/docs/v8.1.2/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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

9886f85b9ed8f9588ab28c42732deaaae5d43d63432036a351c8df968bc72483 node-v8.1.2-aix-ppc64.tar.gz
70f353449b19d6d36262f5e38f9cc23e80b2034c21ae48623a6a4890f513eb53 node-v8.1.2-darwin-x64.tar.gz
7838b4f97a2bbf4cb024d0e6a620219ba9595c23c06a05dca4eedb1e27334977 node-v8.1.2-darwin-x64.tar.xz
5eb63dcccc90f036b41fad57a98699786a93f694d3c573061621d78bc52bda49 node-v8.1.2-headers.tar.gz
cb8360a3dca94e5ff250eeb282fa131dec06e30699e7ccca16059a4c2d3648b9 node-v8.1.2-headers.tar.xz
555f826cc3507462ce8f4b0f42301dd43ac9ec1640af99ab73c302945d45be18 node-v8.1.2-linux-arm64.tar.gz
d468ac671047a5a5edb6edd34a9a625645505551c35ef73e2102c504535a09d4 node-v8.1.2-linux-arm64.tar.xz
3aa8523d30c78c6908864edafc1b485254770a895e557fa2e2e63899524ca1c7 node-v8.1.2-linux-armv6l.tar.gz
de388f42bf36881b3e0ed40c03c41c700cf85964d439101d95ae75c49b51210b node-v8.1.2-linux-armv6l.tar.xz
43cc882f0a6ad150d527ce5b0b0abefd6a7bdf12b1ab4f269c53fb9a68b02acc node-v8.1.2-linux-armv7l.tar.gz
c475670d4243df28eebc3d1d93475839228bbb01a224e8d95499d531425c15ba node-v8.1.2-linux-armv7l.tar.xz
83c0e5c6643381dd91f25607df17798ed637e590aadcb40334f4e2fb5401cd9a node-v8.1.2-linux-ppc64le.tar.gz
201db4de7bb6d8d6bffc3d5e2d6c4c71afd17ef8ac969916687a36bdc54d2cb1 node-v8.1.2-linux-ppc64le.tar.xz
5d7247a857368c0fa74439342b0347bd273384e7116bd073e56d5744ef5d690c node-v8.1.2-linux-ppc64.tar.gz
951ef8cb358143eb79df7d1ed245fbd851b3135fc05103ee25f4121a949b5d45 node-v8.1.2-linux-ppc64.tar.xz
05204ddcfdb479437e1eecacc59e5db5637f466a71e01bf7c5e9812ac67736fb node-v8.1.2-linux-s390x.tar.gz
565efacce07bad77823252d6b1883e717d15dec1db3504528a7ad3f3b5c25f65 node-v8.1.2-linux-s390x.tar.xz
73b116238dd930efbed7c2f6ba24c5c04f27223fcc44d1d35305e22d70c4bb87 node-v8.1.2-linux-x64.tar.gz
f5dc173d3005fbcfd107c83a15d4dbff9a28ff53ab42c23344a572d84814ecfe node-v8.1.2-linux-x64.tar.xz
fe47b47201ef17a27ef01bd0efde882ce72eee9e11aebf692e33c429874ef373 node-v8.1.2-linux-x86.tar.gz
d00a8d4057ae5ceb778d9fa62ffcb7ede7047d6de022d36416189517668f0655 node-v8.1.2-linux-x86.tar.xz
89287170578e09add01e0f55b43a6639d05f341ca3ac30b5589a7a329bb0a39f node-v8.1.2.pkg
3f682b92985d934703f5cba7b43f0cb0f57907d5d072c1e7c586507bddf445e4 node-v8.1.2-sunos-x64.tar.gz
192acd0fbdd77c0c7ecbc3bf21182c916f2eeb4742eb95fc2eb400cdaab29327 node-v8.1.2-sunos-x64.tar.xz
3ae6b6772ef3334a539a3d6912224c9e784097aae4650e1028b691a315de1aeb node-v8.1.2-sunos-x86.tar.gz
b9d57df71b2dbc6c564c987d5ddf3ee3208d385413b2a0c9ac2dd3f3aacf3559 node-v8.1.2-sunos-x86.tar.xz
d717b364868956e0b775145e57a84e63962a9cf83146e778547fc71bb27a2251 node-v8.1.2.tar.gz
ac190c1964ee0c28d4c163c0ccbb47435b2e4bd9b4c065b74a93373105c574b3 node-v8.1.2.tar.xz
dcd11d9d7e3c604bad4acc29e40143aa27ef33d957d41bd088545cc0092c9cc1 node-v8.1.2-win-x64.7z
5463c812afeb498ad8ab9c396246e455d9353ab48ae409c82a2a45193e161f66 node-v8.1.2-win-x64.zip
7e20612702d1a45eee9097e0e51858f3c77c31654f42192561c391fa3f744157 node-v8.1.2-win-x86.7z
6ad7c86f751c8e734fee534ab42d9062d5a48d93ea13d10e681c5fbc52ddf94b node-v8.1.2-win-x86.zip
eaae7f6c01e8140e6cc12059383bce3db7379ff88ca40578ba62a86bda45b6e8 node-v8.1.2-x64.msi
7eef456e6a5e5536064456413a1362951d63b674a57e5e43b122749f83e15ea4 node-v8.1.2-x86.msi
2fbbaa9466fb9bcbba7b951fe8cd974be85c2c7cdad37315f94ec507ffbec67a win-x64/node.exe
6d4d80475f05f627509f52bd6bdf54deed2b28591c287e6608d93768abfc7f60 win-x64/node.lib
7cc98592cf08f2c92edad1def4d1e3d267d2248547d307a8ead797f396a12ead win-x64/node_pdb.7z
80db8cce3c97f814db114a97363fc1467c19f68f1d8be2b538d5bd527fd52c35 win-x64/node_pdb.zip
2b18a6b215422fa95acbfd584fdd002ea3bcb6e5aa13049728cb6ecbd353d924 win-x86/node.exe
4570a4d7bbcfac53d0801e95d30c373c9af5f17d369fc073e22fd858f2c3ff84 win-x86/node.lib
4e1a0561609d0ad5ebf6e497fc450c660ab2fb3114662847e12a38bf8124d611 win-x86/node_pdb.7z
589983102a42e65e9db15353669d654f9f885608d4de23f88e2cdcffeec02e1b win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZS3j0AAoJEMJzeS99g1RdAvwIALEhhAiPzZCsbo+RTRyJYI2b
zoDUKuJvp2GYMwn6+68H0ut7Kln6Hv7PKkrA/MxivpNC7j1UBah0boFP1h798Lvr
+IB8EQkXMFwpQI6Oo2bkIovHZghqm9WqYSSlRxTeBMG6VCGDQ+ZRLL4xxU6EbYvU
E5XszCCLv4t4on2jV/mHDA7Nyv+CXga+o8NvGZLIWGtR4fUObpY2d1Z9K3f/gsZa
udxZE2ep9/FfE5QF7Hak37Iqsu/ClFQn3wgSpXOcxsQTBFwXvsh1nqgnmC8ILxxj
F5eBRH4gJoVi3pht6O76HBZxOXiBOpUY4qDBf0VqXh4nHeRa0PToP4KYaxcaeIc=
=ttiX
-----END PGP SIGNATURE-----

Node v8.1.1(현재 버전)

주요 변경사항

  • Child processes

    • child_process.executil.promisify()로 Promise로 바꾸어 호출하다가 실패한 오류 결과에서 stdoutstderr도 사용할 수 있습니다. [d66d4fc94c] #13388
  • HTTP

    • HTTP를 cluster 모듈과 함께 사용할 때 특정 시나리오에서 깨지는 회귀 문제를 수정했습니다. [fff8a56d6f] #13578
  • HTTPS

    • 유닉스 소켓에서 rejectUnauthorized 옵션이 이제 잘 동작합니다. [c4cbd99d37] #13505
  • Readline

    • 동일한 입력 스트림에 readline을 여러 번 사용하는 코드와 npm init을 깨뜨리는 변경사항을 되돌렸습니다. [0df6c0b5f0] #13560

Commits

  • [61c73085ba] - async_hooks: minor refactor to callback invocation (Anna Henningsen) #13419
  • [bf61d97742] - async_hooks: make sure .{en|dis}able() === this (Anna Henningsen) #13418
  • [32c87ac6f3] - benchmark: fix some RegExp nits (Vse Mozhet Byt) #13551
  • [b967b4cbc5] - build: merge test suite groups (Refael Ackermann) #13378
  • [00d2f7c818] - build,windows: check for VS version and arch (Refael Ackermann) #13485
  • [d66d4fc94c] - child_process: promisify includes stdio in error (Gil Tayar) #13388
  • [0ca4bd1e18] - child_process: reduce nextTick() usage (Brian White) #13459
  • [d1fa59fbb7] - child_process: simplify send() result handling (Brian White) #13459
  • [d51b1c2e6f] - cluster, dns, repl, tls, util: fix RegExp nits (Vse Mozhet Byt) #13536
  • [68c0518e48] - doc: fix links and typos in fs.md (Vse Mozhet Byt) #13573
  • [70432f2111] - doc: fix incorrect fs.utimes() link (Justin Beckwith) #13608
  • [26d76307d5] - doc: fs constants for Node < v6.3.0 in fs.md (Anshul Guleria) #12690
  • [52f5e3f804] - doc: use HTTPS URL for suggested upstream remote (Nikolai Vavilov) #13602
  • [2c1133d5fe] - doc: add readline.emitKeypressEvents note (Samuel Reed) #9447
  • [53ec50d971] - doc: fix napi_create_*_error signatures in n-api (Jamen Marzonie) #13544
  • [98d7f25181] - doc: fix out of date sections in n-api doc (Michael Dawson) #13508
  • [85cac4ed53] - doc: update new CTC members (Refael Ackermann) #13534
  • [8c5407d321] - doc: corrects reference to tlsClientError (Tarun) #13533
  • [3d12e1b455] - doc: emphasize Collaborators in GOVERNANCE.md (Rich Trott) #13423
  • [a9be8fff58] - doc: minimal documentation for Emeritus status (Rich Trott) #13421
  • [2778256680] - doc: remove note highlighting in GOVERNANCE doc (Rich Trott) #13420
  • [2cb6f2b281] - http: fix timeout reset after keep-alive timeout (Alexey Orlenko) #13549
  • [fff8a56d6f] - http: handle cases where socket.server is null (Luigi Pinca) #13578
  • [c4cbd99d37] - https: support rejectUnauthorized for unix sockets (cjihrig) #13505
  • [6a696d15ff] - inspector: fix crash on exception (Nikolai Vavilov) #13455
  • [50e1f931a9] - profiler: declare missing printErr (Fedor Indutny) #13590
  • [0df6c0b5f0] - Revert "readline: clean up event listener in onNewListener" (Anna Henningsen) #13560
  • [a5f415fe83] - src: merge fn_name in NODE_SET_PROTOTYPE_METHOD (XadillaX) #13547
  • [4a96ed4896] - src: check whether inspector is doing io (Sam Roberts) #13504
  • [f134c9d147] - src: correct indentation for X509ToObject (Daniel Bevenius) #13543
  • [dd158b096f] - src: make IsConstructCall checks consistent (Daniel Bevenius) #13473
  • [bf065344cf] - stream: ensure that instanceof fast-path is hit. (Benedikt Meurer) #13403
  • [e713482147] - test: fix typo in test-cli-node-options.js (Vse Mozhet Byt) #13558
  • [4c5457fae5] - test: fix flaky test-http-client-get-url (Sebastian Plesciuc) #13516
  • [812e0b0fbf] - test: refactor async-hooks test-callback-error (Rich Trott) #13554
  • [2ea529b797] - test: add regression test for 13557 (Anna Henningsen) #13560
  • [4d27930faf] - test: fix flaky test-tls-socket-close (Rich Trott) #13529
  • [3da56ac9fb] - test: harden test-dgram-bind-shared-ports (Refael Ackermann) #13100
  • [f686f73465] - test: add coverage for AsyncResource constructor (Gergely Nemeth) #13327
  • [12036a1d73] - test: exercise once() with varying arguments (cjihrig) #13524
  • [1f88cbd620] - test: refactor test-http-server-keep-alive-timeout (realwakka) #13448
  • [bdbeb33dcb] - test: add hijackStdout and hijackStderr (XadillaX) #13439
  • [1c7f9171c0] - test: add coverage for napi_property_descriptor (Michael Dawson) #13510
  • [c8db0475e0] - test: refactor test-fs-read-* (Rich Trott) #13501
  • [ad07c46b00] - test: refactor domain tests (Rich Trott) #13480
  • [fe5ea3feb0] - test: check callback not invoked on lookup error (Rich Trott) #13456
  • [216cb3f6e9] - test,benchmark: stabilize child-process (Refael Ackermann) #13457
  • [a0f8faa3a4] - v8: fix debug builds on Windows (Bartosz Sosnowski) #13634
  • [38a1cfb5e6] - v8: add a js class for Serializer/Dserializer (Rajaram Gaunker) #13541

Windows 32-bit Installer: https://nodejs.org/dist/v8.1.1/node-v8.1.1-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v8.1.1/node-v8.1.1-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v8.1.1/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v8.1.1/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v8.1.1/node-v8.1.1.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-ppc64.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-aix-ppc64.tar.gz
SunOS 32-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-sunos-x64.tar.xz
ARMv6 32-bit Binary: Coming soon
ARMv7 32-bit Binary: Coming soon
ARMv8 64-bit Binary: https://nodejs.org/dist/v8.1.1/node-v8.1.1-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v8.1.1/node-v8.1.1.tar.gz
Other release files: https://nodejs.org/dist/v8.1.1/
Documentation: https://nodejs.org/docs/v8.1.1/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
42
43
44
45
46
47
48
49
50
51
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

3f39c72b597a5810e4b5a510feec11a78f943e4c06c73e160558f7e7614362c9 node-v8.1.1-aix-ppc64.tar.gz
2f67890a5a46564672cfd4522cc00c7ac04d307e6a942ae1ad38b6aee94c29e2 node-v8.1.1-darwin-x64.tar.gz
32c741801df7d2b3a3d16b9808c19bb1d1c0c639eea4f4bac64d111a607af5b0 node-v8.1.1-darwin-x64.tar.xz
a1f8cb4dbb6322f684ac802f9b27535f2456bca1a8ccf8f75bf9ba96d73f4556 node-v8.1.1-headers.tar.gz
f72707d83ff64036c96df83f9151b28a09f91994eda41830ad5ed24ab5abd083 node-v8.1.1-headers.tar.xz
69cc375ef84ea79736b491ff779e8ed07359cf27c943dcae41292094e0b0b79f node-v8.1.1-linux-arm64.tar.gz
3971543f9d29f77ddb8f47a54e4b99422a822173599748ab7fcd9c35c8e25124 node-v8.1.1-linux-arm64.tar.xz
48a249314bed9f0c4837464696d171bba47c787eff0bcdb452d2b8e2bdbcfcb2 node-v8.1.1-linux-ppc64le.tar.gz
2986470436c07dd600f87a426e81425bd1c3d8f5ca8865eaf6ff0d844e1606ec node-v8.1.1-linux-ppc64le.tar.xz
4f950720886667976ced945a46b169e8775fd6e108008184567bb648f46823a8 node-v8.1.1-linux-ppc64.tar.gz
f0f148f264427d59058ce57dd76c909ce10c5cf34b65ddad021ed488c5ac27b3 node-v8.1.1-linux-ppc64.tar.xz
4041a25373c5fe68a660800785ab914a6971e1caafd22dfb8869ecd01c338081 node-v8.1.1-linux-s390x.tar.gz
e972942b7b916456ce7339f6b7cbf0a5efffe486bc9a6e6fe853a046b4a3beda node-v8.1.1-linux-s390x.tar.xz
7717495688c8e332b916cfc51fdb4773d468018ccd0b104ae524ae5050426d4d node-v8.1.1-linux-x64.tar.gz
6a735e77bdd21c92fe85ea5f9f567d0d6930fa33e0e111946b17cdb7efefb8d5 node-v8.1.1-linux-x64.tar.xz
a1f6c650b9c2d69a1b4dfec4ea4ead39a62867c413c479cfe70fb3152206bea4 node-v8.1.1-linux-x86.tar.gz
2b912178ab071a7aff7862c0fc3eaafeb7580c15cf163d926cd1bc99990c696e node-v8.1.1-linux-x86.tar.xz
9414408e6dfe230316c7c4ea35aa8ddca652f0165be5624113d9579102ad750c node-v8.1.1.pkg
1f6f9d990ca82920e00ed221391013c87de86b56417d4871dd43424842a64267 node-v8.1.1-sunos-x64.tar.gz
6c649767625069fb6e8db488f33a48efdc568590503f374268b7c09d43df14c4 node-v8.1.1-sunos-x64.tar.xz
5a1ca06a07354bff17c618688ebc2950ed79236bff256d23df2952f181c94ece node-v8.1.1-sunos-x86.tar.gz
de9fff4f6dc221d86cef6a221988e222c56f704b3ee03b30d6d742c6f123f866 node-v8.1.1-sunos-x86.tar.xz
4794bce3da8d94f07febebe0609106c4b50debf65695c4ecb0ad727a0f202cb5 node-v8.1.1.tar.gz
7b0d176dc4a1db37789e009825ba03d2e3f834227e5efd296167e7ef6b287847 node-v8.1.1.tar.xz
bd9b864368c035a90bc386e63a70abcceaaad20bdda568765ee02fa4e1360056 node-v8.1.1-win-x64.7z
459f3b62e58f4fac3b9b5e49694855f338f3dcf2fcf955299ee2a47f7687625a node-v8.1.1-win-x64.zip
74d5b87313195aeee0613d479a6505363b6b31f8fd966fc0157554779460d705 node-v8.1.1-win-x86.7z
36c625dd804580ca0865e1ccb77a3368b9c09213e57c09ed5528534613beed57 node-v8.1.1-win-x86.zip
8f83ab727c26c78b520e80fd53d0bd66cfa35e6770528b05a4885ecee5aef779 node-v8.1.1-x64.msi
1cdb4faf6b06f24ad3be0347027e0b76abac2d36f690506b1ee4e991f1268a51 node-v8.1.1-x86.msi
1421bd1d15c123ed88fd48655307708c391c9a45d5d7e6f98ec196157c7ac0c4 win-x64/node.exe
2206985c8b40db70a49406ff702501fc7b007bfbca0a4c01568a7e5d6bf74ed0 win-x64/node.lib
ce97786fd9ae18e8717275eab6a35110793a538e23b150471c8231928b6b42c0 win-x64/node_pdb.7z
3c280b5c0c991501996c600b37f3add66954f6b8060b8e92383812d55ca5266e win-x64/node_pdb.zip
67c6aea3bd26389df72521677772f83f68e8cb7fe40db04f071a0b6ed55adbca win-x86/node.exe
fb7290712066afb3194820c17aa601c3add4e88515f563e0331ceed05ae4045f win-x86/node.lib
2c7e4f2cb1dfad1171786f80c6417f14ca41e356690ee65bb8594928e89aa657 win-x86/node_pdb.7z
d1c100fb2422284f6c3187634eb60151cc5f0566a78b420e74db8a8e4a27c178 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZQGYtAAoJEHNBsVwHCHesWdcH/AovvxBvdDvWPbiFj3I7SBxa
azZmlK2TJLzctieOStVVfdOasO4o8u7g6E9HnkrrFl0z92HDEsBKQZqpDH/x07BM
qKKkxMlMeXloLtDd0BOdIGwSBK7ClqSe2BYv3zDOwo8et5wnChPKAm0IvJHAySZK
9rymYM/j2fJZRjbHRtvB0WQulSkwYDhxV7xlQylqXl+kQi52wfrbgbuhh+6wqJ4o
zM4xN7jDb4X/wjQ+HDCF9YY7XXVOaEzqJjHotbIS9eIPybvW1Kx9icQ0N7f/u2qu
EptaUUvw9F7OT57O3MravtvzJCQoSQLzXI17cu/PY2ruOqS3R6l9mxt9II2E3Bc=
=xsHI
-----END PGP SIGNATURE-----

Node v8.1.0(현재 버전)

주요 변경사항

  • Async Hooks
    • Promise를 사용하여 새로운 Promise를 생성하게 되면, 생성 시에 사용된 부모 Promise는 트리거로 인식됩니다. [135f4e6643] #13367
  • Dependencies
  • File system
    • 이제 fs.exists() 함수가 util.promisify()와 함께 올바르게 작동합니다. [6e0eccd7a1] #13316
    • 이제 fs.Statstimes는 숫자로도 지정할 수 있습니다. [c756efb25a] #13173
  • Inspector
    • 이제 --inspect=0을 사용하여, 임의의 포트에 할당할 수 있습니다. [cc6ec2fb27] #5025
  • Zlib
    • zlib.Deflate와 기타 Zlib 클래스들을 적절하게 하위 클래스로 만들지 못하게 하는 Zlib 모듈의 회귀를 수정했습니다. [6aeb555cc4] #13374

Commits

Windows 32-bit Installer: https://nodejs.org/dist/v8.1.0/node-v8.1.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v8.1.0/node-v8.1.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v8.1.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v8.1.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v8.1.0/node-v8.1.0.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-ppc64.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-aix-ppc64.tar.gz
SunOS 32-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-arm64.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v8.1.0/node-v8.1.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v8.1.0/node-v8.1.0.tar.gz
Other release files: https://nodejs.org/dist/v8.1.0/
Documentation: https://nodejs.org/docs/v8.1.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

53db5aea2ebea852be456ad5829b5d4bd7894bc40982bce247639b838543d574 node-v8.1.0-aix-ppc64.tar.gz
08af5f1a7441728cabf9b11af25da28ee1725903524968dd9621b885b13303c7 node-v8.1.0-darwin-x64.tar.gz
8c2583f95c223dae996310573611f6cc7212942b32ff653c2a88583c1edd629f node-v8.1.0-darwin-x64.tar.xz
38ce729d4b13d31e74f1ed8dd8b123b1e8aa015611eb6c7b3225a0677e9e38ef node-v8.1.0-headers.tar.gz
18b42870b145ea756e8539a9c27317f3e75d0b7638f3907ab29f67b2f96ca0e5 node-v8.1.0-headers.tar.xz
33c09d04b5e2637feda241e1c727b10249ed7114ad7807f8b70cbd8414747649 node-v8.1.0-linux-arm64.tar.gz
adf2f517c9847cbb5904b282c0819526b5264c256477ed5e4b258584daa1a2ea node-v8.1.0-linux-arm64.tar.xz
9c5ce836cd2a90bd1824620b10c75e4e9ec0e80c04d7b09aade2173f03bf61c7 node-v8.1.0-linux-armv6l.tar.gz
3bbca586b4d44c5458ff48c08d0437a6bad361f3550c801a28c46467e3bbe73f node-v8.1.0-linux-armv6l.tar.xz
12d75aa7d875115e03e62b1e65aba77902d9c810bfb81fe8c379c5667d8fa1e1 node-v8.1.0-linux-armv7l.tar.gz
8a7db124e9f8fb884e777a75410ff63f6247d26a9eb6dab2879f3d1eb67fa958 node-v8.1.0-linux-armv7l.tar.xz
d230f546a8162236bc4272013a53d8bc86b72c40fe94e972b39ac74ed0563eb8 node-v8.1.0-linux-ppc64le.tar.gz
cef948340af5901acc96e3fe35f05490ed171ffd27e6314cd994bc5fa94488b7 node-v8.1.0-linux-ppc64le.tar.xz
84654502cea0228cc427497ab6166b8bf74f368bf61336f1a18ec82ec8dd811a node-v8.1.0-linux-ppc64.tar.gz
fedac55c4e2a94ed117acd3606f44d15a7452fc84a8190163800de9141769d27 node-v8.1.0-linux-ppc64.tar.xz
01068a92c640e929ad6b41bfaa896edab5d774e9994e6dd27b7bdb3684daef78 node-v8.1.0-linux-s390x.tar.gz
8fb1e8335349324048236eafebd3c089791c183ef539fa6a5314ca7c77b5f056 node-v8.1.0-linux-s390x.tar.xz
b53d6ad443f970d62a61d927bd28d63dcd2e19520e6e767bc6cc44f2cd8a4885 node-v8.1.0-linux-x64.tar.gz
1638a0083c6eee122cbbefdf39cb8bcc43cf19fedff331a0317b05fd38dcb6df node-v8.1.0-linux-x64.tar.xz
26dfe0320634254c9e81a6535014a4860bed72c3c1dbd5b040405e4b3a872476 node-v8.1.0-linux-x86.tar.gz
e352251100e571fa179cbdeffefc49d9ff6d943cd3efad83913b6ac61730cfd4 node-v8.1.0-linux-x86.tar.xz
6950b83270e0e45ca7b9a59b66862131d0bdb6d90ec3e5dabb2ef691ac172cb0 node-v8.1.0.pkg
8f430673b416ff32366fcba5a2aad7cd8613d2ff042298da2eaad08ef90a7373 node-v8.1.0-sunos-x64.tar.gz
918c1cbceef1aa2dcd830bd551ecd99ff002d6a62c22f3896f508fbbe759be41 node-v8.1.0-sunos-x64.tar.xz
925cff411b8bce74a0043b7e8a32bcbeb0a29fdbb89426f3e83e15a6f78d032f node-v8.1.0-sunos-x86.tar.gz
edfce3fb335a3c9b374cc34a91986bb655cf1a618813b9b083588400dae6a206 node-v8.1.0-sunos-x86.tar.xz
6886d0891ee1a46c41f1095ffbbd6cb8871a1b18b61712b5bf7d6bf5018d64de node-v8.1.0.tar.gz
f2ff20b69b782dee85e887ad06e830590b2250856f6df325ed15a368bb6777fc node-v8.1.0.tar.xz
a4df11df8856d509e3e0fbea0c001a7f4fc37d51820eedc37c79d961d7d71410 node-v8.1.0-win-x64.7z
cee1fd1c828e8996824a2d9f9056dfae771b77c05b15ad015bc7f8800409215c node-v8.1.0-win-x64.zip
3dfaf8273a431b983d755506fdd387bc8aeff64812e577ee97a2228dd223789d node-v8.1.0-win-x86.7z
cf1f8de8fefa45478a7a238a9b119674e633eae06c1e44c3728dcdb0f47b6c88 node-v8.1.0-win-x86.zip
012a874bfecb470875732264a03aca6760667dbf32d447157ff5669ed862a529 node-v8.1.0-x64.msi
a059b7d0625875beeed10b15a0cf2e7f52c732e38a6e0cba48074ac1f24a5b5d node-v8.1.0-x86.msi
615acc82d274759059096f2549186d57702522208bf6c935cb133b95136c3aa2 win-x64/node.exe
8718284fd9fd2783d22c824884cb8a9f5fe02b35414aad399aeea156b6715f98 win-x64/node.lib
3b64b71d5df8020140dda4924ba45afbed4ddfe7ba63b88318a9e49d99cac326 win-x64/node_pdb.7z
240f35be168f5d89c893087362113ebcb7949f8284e48225e791d0360bceb880 win-x64/node_pdb.zip
7c675903a7f695f2e8b2078ef5805c85ad18f1eeaee30f35ac2ca018cafa1109 win-x86/node.exe
812617c64787287dc953e853466155fdd4d8687b8228af71ac43f6502f7cd9b7 win-x86/node.lib
0ea4fdd7a5b0c856134970cba1a6282ea0a30d2cde5c32bc3df6dc6d13b7baa5 win-x86/node_pdb.7z
1e2528eed30b005ff0cc9fb46596e4ce935ee6103440df44409053eea6e1a532 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZOfasAAoJEMJzeS99g1RdQ5IH/1t+8azgrue+cL/6y7capl1+
LQycAW1NOTB8WzjgTVSSAF03aw5D6sSCuKcrhk2vd3lWzx8tdJjXBPZ+fz1IEQ3q
nrf73cOc0lJV1h94orFBrj2SGcQBm7eRI4gsd/Msmi3cL3lsmWxrhbrfC/pCw/Gt
+uQiGpCv/4huuDAUUDzVaBD/WY1KIw3P6r65CjdKfuf9hpZWEFFNlz8zz//K0eOv
0cKy5fan1cCeb2u8kCKtdEcFV4s9dv0HqXutqQUJhU1p2vP1RfM//rzYey4Etjwq
n5Qm7Lmo2E75pk6B5GfFVEzX1kGVZRn25/LUnfcEk/0ww8axgJexNbnwh4YScuE=
=BysF
-----END PGP SIGNATURE-----

Node v6.11.0(LTS)

주요 변경사항

  • build:
    • mips64el 빌드를 지원합니다. (nanxiongchao) #10991
  • cluster:
    • disconnect()가 이제 연결이 끊긴 워커의 참조를 반환합니다. (Sean Villars) #10019
  • crypto:
    • 런타임에서 인증서 스토어를 선택할 수 있는 기능이 추가되었습니다. (Adam Majer) #8334
    • 내장된 CA 대신 시스템의 CA를 사용합니다. (Adam Majer) #8334
    • DeciphersetAuthTag()setAAD 메서드가 이제 this를 반환합니다. (Kirill Fomichev) #9398
    • OPENSSL_CONF 지원을 다시 추가했습니다. (Sam Roberts) #11006
    • LazyTransform이 Streams1와 호환성을 가집니다. (Matteo Collina) #12380
  • deps:
    • libuv를 1.11.0으로 업그레이드했습니다. (cjihrig) #11094
    • libuv를 1.10.2로 업그레이드했습니다. (cjihrig) #10717
    • libuv를 1.10.1로 업그레이드했습니다. (cjihrig) #9647
    • libuv를 1.10.0으로 업그레이드했습니다. (cjihrig) #9267
  • dns:
    • resolve4()resolve6()를 위해 {ttl: true}를 구현했습니다. (Ben Noordhuis) #9296
  • process:
    • NODE_NO_WARNINGS 환경 변수를 추가했습니다. (cjihrig) #10842
  • readline:
    • 히스토리에서 중복을 막는 옵션을 추가했습니다. (Danny Nemer) #2982
  • src:
    • 옵션이 끝났다는 의미로 "-e" 뒤에 "--"를 지원합니다. (John Barboza) #10651
  • tls:
    • 새로운 tls.TLSSocket()이 sec ctx 옵션을 지원합니다. (Sam Roberts) #11005
    • 명백한 key/passphrase 조합을 허용합니다. (Sam Roberts) #10294

Commits

  • [d38364b062] - deps/v8: add missing #include "unicode/normlzr.h" (Bruno Pagani) #13040
  • [62a8f4774e] - async_wrap: close the destroy_ids_idle_handle_ (René Schünemann) #10385
  • [995423e790] - benchmark: terminate child process on Windows (Rich Trott) #12658
  • [32fa37f3d6] - benchmark: cleanup child_process IPC benchmark (Yuya Tanaka) #10557
  • [dd0b170b58] - build: fix case in lib names (Refael Ackermann) #12522
  • [bc64cf2b5e] - build: make linter targets silent (Sakthipriyan Vairamani (thefourtheye)) #12423
  • [a0973c3c1c] - build: don't create directory for NDK toolchain (TheBeastOfCaerbannog) #11916
  • [0c318a6157] - (SEMVER-MINOR) build: support for mips64el (nanxiongchao) #10991
  • [7c335f6b7c] - build: run cpplint even if jslint failed (Ruslan Bekenev) #12276
  • [32d7981741] - build: use do_not_edit variable where possible (Ruslan Bekenev) #12610
  • [c13429ad8f] - child_process: optimize IPC for large data (Yuya Tanaka) #10557
  • [ae587f3578] - (SEMVER-MINOR) cluster: return worker reference from disconnect() (Sean Villars) #10019
  • [e72749b319] - (SEMVER-MINOR) crypto: ability to select cert store at runtime (Adam Majer) #8334
  • [fd9bb56f9a] - (SEMVER-MINOR) crypto: Use system CAs instead of using bundled ones (Adam Majer) #8334
  • [bbfd2e309b] - (SEMVER-MINOR) crypto: do not use pointers to std::vector (Adam Majer) #8334
  • [875674bb1c] - (SEMVER-MINOR) crypto: return this in setAuthTag/setAAD (Kirill Fomichev) #9398
  • [f8da60fb21] - (SEMVER-MINOR) crypto: support OPENSSL_CONF again (Sam Roberts) #11006
  • [0a79b2da1b] - crypto: make LazyTransform compabile with Streams1 (Matteo Collina) #12380
  • [7678da4c65] - crypto: handle exceptions in hmac/hash.digest (Tobias Nießen) #12164
  • [e714243408] - deps: upgrade libuv to 1.11.0 (cjihrig) #11094
  • [738d830f09] - (SEMVER-MINOR) deps: upgrade libuv to 1.10.2 (cjihrig) #10717
  • [c59370a8fd] - (SEMVER-MINOR) deps: upgrade libuv to 1.10.1 (cjihrig) #9647
  • [3585ffa247] - (SEMVER-MINOR) deps: upgrade libuv to 1.10.0 (cjihrig) #9267
  • [da70161308] - (SEMVER-MINOR) dns: implement {ttl: true} for dns.resolve6() (Ben Noordhuis) #9296
  • [0bc14b6d33] - (SEMVER-MINOR) dns: implement {ttl: true} for dns.resolve4() (Ben Noordhuis) #9296
  • [699e274693] - doc: add link on logo to README (Roman Reiss) #12307
  • [5ce108955d] - doc: fix an unclear wording in readline.md (Vse Mozhet Byt) #12605
  • [18c56df81e] - doc: fix typo in doc/api/process.md (morrme) #12612
  • [2b6e58852f] - doc: make commit guidelines easier to reference (Benjamin Fleischer) #11732
  • [928382d957] - doc: add suggestion to use --3way (Michael Dawson) #12510
  • [278e8cc65f] - doc: update link to Code of Conduct (Alex Autem) #12552
  • [3d526727f9] - doc: add lucamaraschi to collaborators (Luca Maraschi) #12538
  • [e1098a4e9f] - doc: unify spaces in a querystring.md code example (Vse Mozhet Byt) #12465
  • [9881da1585] - doc: run tests before landing changes (Rich Trott) #12416
  • [3556c177a3] - doc: avoid colloquialism (Rich Trott) #12417
  • [5fa417086a] - doc: fix encoding string in buffer example (MapleUncle) #12482
  • [bc401697f0] - doc: correct git fix whitespace command (Mateusz Konieczny) #12445
  • [26fcc7a4df] - doc: s/origin/upstream/ collaborator guide (Anna Henningsen) #12436
  • [e3352bbceb] - doc: update Mac OS X references in releases.md (JR McEntee) #12106
  • [32a6d87a21] - doc: correct markdown file line lengths (JR McEntee) #12106
  • [db4aef4ac6] - doc: change Mac OS X to macOS (JR McEntee) #12106
  • [40f292cacd] - doc: add missing ) in CONTRIBUTING.md (Mateusz Konieczny) #12444
  • [656c30e11d] - doc: add guide for backporting prs (Evan Lucas) #11099
  • [1c1269dfc3] - doc: update link for landing PRs (Rich Trott) #12415
  • [81b53503a7] - doc: add DavidCai1993 to collaborators (David Cai) #12435
  • [c6f3ebd774] - doc: fix typo in streams.md (John Paul Bamberg) #12428
  • [4a18e51c6a] - doc: add jkrems to collaborators (Jan Krems) #12427
  • [a6e06738ef] - doc: path functions ignore trailing slashes (Tobias Nießen) #12181
  • [929ca307d2] - doc: add info about serializable types (Shubheksha Jalan) #12313
  • [945dcde45b] - doc: fix formatting in onboarding-extras (Rich Trott) #12350
  • [3c1bd05a24] - doc: response.write ignores body in some cases (Ruslan Bekenev) #12314
  • [d2afd7c5f7] - doc: add AnnaMag to collaborators (AnnaMag) #12414
  • [dac66d5645] - doc: limit lines to 80 cols in internal README (Evan Lucas) #12358
  • [3ae8d00dd1] - doc: add single arg scenario for util.format (Tarun Batra) #12374
  • [43d3c009a5] - doc: fix formatting of TOC (Refael Ackermann) #12731
  • [9fc695c574] - doc: fixup the collaborators list (Alexey Orlenko) #12750
  • [ad29e295b7] - doc: gcc version is at least 4.8.5 in BUILDING.md (detailyang) #11840
  • [f2230cc0b5] - eslint: remove dead and unused symlink (Sam Roberts)
  • [ae1f6fd03a] - fs: re-enable watch facility in AIX (Gireesh Punathil) #10085
  • [6e6e63a341] - lib: fix typo in comments in module.js (WORMSS) #12528
  • [f20ebf29f6] - meta: update authors list (Aashil Patel) #11533
  • [b7ca74866b] - meta: move the Code of Conduct to TSC repository (James M Snell) #12147
  • [1bd07acbd1] - net: refactor onSlaveClose in Server.close (Claudio Rodriguez) #12334
  • [637d9e3544] - (SEMVER-MINOR) process: add NODE_NO_WARNINGS environment variable (cjihrig) #10842
  • [202f00717b] - process: maintain constructor descriptor (Bryan English) #9306
  • [e9f33e392d] - readline: rename deDupeHistory option (Danny Nemer) #11950
  • [8bd6ab7870] - (SEMVER-MINOR) readline: add option to stop duplicates in history (Danny Nemer) #2982
  • [827411c1c0] - Revert "repl: disable Ctrl+C support on win32 for now" (Anna Henningsen) #8645
  • [ce795ecf2b] - src: remove invalid comment (cjihrig) #12645
  • [b296bd5ccc] - src: remove TODO about uv errno removal (Daniel Bevenius) #12536
  • [aec7ae2e67] - (SEMVER-MINOR) src: add SafeGetenv() to internal API (Sam Roberts) #11006
  • [f2e97f89f0] - src: make copies of startup environment variables (Ben Noordhuis) #11051
  • [c408a3bd63] - (SEMVER-MINOR) src: support "--" after "-e" as end-of-options (John Barboza) #10651
  • [f1ea36733d] - src: use std::list for at_exit_functions (Daniel Bevenius) #12255
  • [331681a3f5] - src: return early if nextTickQueue is empty (Trevor Norris) #10274
  • [b09f73813e] - test: cleanup test-fs-watch.js (RobotMermaid) #12595
  • [a1de1abcdd] - test: remove flaky designation for test on AIX (Rich Trott) #12564
  • [3cce18104d] - test: add mustCall in test-timers-clearImmediate (Zahidul Islam) #12598
  • [33821e42b5] - test: use block scoped variable names (Neehar Venugopal) #12544
  • [12287f1299] - test: dynamic port in cluster eaddrinuse (Sebastian Plesciuc) #12547
  • [53d5aacfe4] - test: dynamic port in cluster ipc throw (Sebastian Plesciuc) #12571
  • [0bd0d52af6] - test: replace assertion error check with regex (thelady) #12603
  • [8044b8307c] - test: refactored context type err message to regex (Muhsin Abdul-Musawwir) #12596
  • [32f905a85d] - test: improve test-process-chdir (vperezma) #12589
  • [51794dd7b0] - test: dynamic port in parallel cluster tests (Sebastian Plesciuc) #12584
  • [daf6535475] - test: dynamic port in cluster worker dgram (Sebastian Plesciuc) #12487
  • [b53d172576] - test: move test-debugger-repeat-last to sequential (kumarrishav) #12470
  • [32425be109] - test: use duplex streams in duplex stream test (cjihrig) #12514
  • [830949c8b0] - test: use JSON.stringify to trigger stack overflow (Yang Guo) #12481
  • [50bfb28960] - test: console.log removed from test-net-localport (Faiz Halde) #12483
  • [768431cac8] - test: dynamic port in cluster worker disconnect (Sebastian Plesciuc) #12457
  • [b1d26d8b55] - test: remove uses of common.PORT in test-tls-client tests (Ahmed Taj elsir) #12461
  • [ce3b544360] - test: dynamic port in cluster worker send (Sebastian Plesciuc) #12472
  • [a755ef0634] - test: increase coverage for buffer.js (Rich Trott) #12476
  • [a4b092c8f3] - test: complete coverage of lib/child_process.js (cjihrig) #12367
  • [4786ad7024] - test: buffer should always be stringified (Luca Maraschi) #12355
  • [04ec97e39a] - test: use dynamic port in test-cluster-bind-twice (Rich Trott) #12418
  • [3244ae36da] - test: remove common.PORT from test-cluster*.js (Tarun Batra) #12441
  • [384fa17ffa] - test: use dynamic port in 3 test-cluster-worker tests (Sebastian Plesciuc) #12443
  • [d54d0c4cdc] - test: add --use-bundled-ca to tls-cnnic-whitelist (Daniel Bevenius) #12394
  • [0caca45434] - test: add crypto check to crypto-lazy-transform (Daniel Bevenius) #12424
  • [861fa65bdf] - (SEMVER-MINOR) test: make tls-socket-default-options tests run (Sam Roberts) #11005
  • [7d47b02794] - test: remove common.PORT from test-cluster-basic (Rich Trott) #12377
  • [9e89edff87] - test: add hasCrypto check to test-debug-usage (Daniel Bevenius) #12357
  • [afac3161a8] - test: improve punycode coverage to check surrogate pair (Nao YONASHIRO) #12354
  • [a714449db3] - test: cleanup test-fs-watch.js (RobotMermaid) #12595
  • [89e76e8e4d] - test: improved type checking with regex (coreybeaumont) #12591
  • [c304414007] - test: improve test-tcp-wrap-listen (alohaglenn) #12599
  • [bea0a6e557] - test: add common.mustNotCall() (cjihrig) #11152
  • [cb63808832] - test: improve test-process-kill-pid (alohaglenn) #12588
  • [ac825fc8bc] - test: use common.js to check platform (Ruslan Bekenev) #12629
  • [64f9adc787] - test: cleanup test-util-inherits.js (RobotMermaid) #12602
  • [c1e4b2f043] - test: move test to sequential for reliability (Rich Trott) #12704
  • [cd1a7ea5e5] - test: add regex to text-crypto-random (Nate) #10020
  • [15226f597a] - test: add hasCrypto check to tls-socket-close (Daniel Bevenius) #11911
  • [7cad5613c7] - (SEMVER-MINOR) tls: new tls.TLSSocket() supports sec ctx options (Sam Roberts) #11005
  • [df9d8ee6cb] - (SEMVER-MINOR) tls: allow obvious key/passphrase combinations (Sam Roberts) #10294
  • [a679e06c29] - tools: use no-useless-concat ESLint rule (Vse Mozhet Byt) #12613
  • [b920c5d44b] - tools: enable no-useless-return eslint rule (cjihrig) #12577
  • [fd126b5866] - tools: add root: true in main .eslintrc.yaml (Vse Mozhet Byt) #12570
  • [d63befac2a] - tools: Add no useless regex char class rule (Prince J Wesley) #9591
  • [87534d6c25] - tools: replace custom ESLint timers rule (Rich Trott) #12504
  • [736a736ed5] - tools: update ESLint to 3.19.0 (Rich Trott) #12162
  • [00b6646f93] - url: improve descriptiveness of identifier (Rich Trott) #12579
  • [a0f9d5964e] - v8: fix stack overflow in recursive method (Ben Noordhuis) #12460
  • [2b3381aec6] - Revert "v8: drop v8::FunctionCallbackInfo<T>::NewTarget()" (Ben Noordhuis)

Windows 32-bit Installer: https://nodejs.org/dist/v6.11.0/node-v6.11.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v6.11.0/node-v6.11.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v6.11.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v6.11.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v6.11.0/node-v6.11.0.pkg
macOS 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-x86.tar.xz
Linux 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-ppc64le.tar.xz
Linux PPC BE 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-ppc64.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-aix-ppc64.tar.gz
SunOS 32-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-sunos-x86.tar.xz
SunOS 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-sunos-x64.tar.xz
ARMv6 32-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-armv6l.tar.xz
ARMv7 32-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v6.11.0/node-v6.11.0.tar.gz
Other release files: https://nodejs.org/dist/v6.11.0/
Documentation: https://nodejs.org/docs/v6.11.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

70e0d8d853f88d5178fba02d8516f58f26c0d52dbcc2bd5c979bc9bb35e38c77 node-v6.11.0-aix-ppc64.tar.gz
87a9a64000a58e46ebc38ea053fa732496e9909110a86440f51f6bc8dd1534da node-v6.11.0-darwin-x64.tar.gz
47803223d23d26937dcc3158c59f7615f86d906cc77532b8b80258ee3e6f60dd node-v6.11.0-darwin-x64.tar.xz
a82caf153b7649656bce64dec40d136008babbef419e35b2a83242049de44b23 node-v6.11.0-headers.tar.gz
b139a80bf85e8a6f50d9761c2c4353695c56e3c964772f1f554b7eeeb586b29b node-v6.11.0-headers.tar.xz
9f843c115fbcb8bb0f9ac4f0f1bd20156e0cd15dcea490b352ca10ddadc75de2 node-v6.11.0-linux-arm64.tar.gz
8f5df1bd8b690cde811d16fb9f5b33d64fad4049144557c9337a9dc6ec51fe6c node-v6.11.0-linux-arm64.tar.xz
db829105774adbde8dd030e7beec13fa5502f9cd75c2eb50ef4c5946649c6b6e node-v6.11.0-linux-armv6l.tar.gz
078b00a51a62267ceb505a260050183a175eed20d133429d2b514d24e67356f4 node-v6.11.0-linux-armv6l.tar.xz
8a81318a4d035469cfc85808cb30f6f644c7e5b4138361fb2c4b2fdb3c893896 node-v6.11.0-linux-armv7l.tar.gz
986a29afd909d2f563c8dca0830bf009529500bd74f2f249f6f62c637c1ce749 node-v6.11.0-linux-armv7l.tar.xz
2ecc4bf12d450e7c3b8d40f97edce457803ee658e6efa13fe2d82bc8b582d89f node-v6.11.0-linux-ppc64le.tar.gz
0ac439c6656da95f364a60933a127135c54bfdd65cdb1120717c19290a30ca2a node-v6.11.0-linux-ppc64le.tar.xz
51cbf250161ce2e07c1bbbd3b0ee05eba424f34d227c64009f161b10a20b3b88 node-v6.11.0-linux-ppc64.tar.gz
dce5a65b60989412f201da61b4bdace1cef056fb289ee4e042867180c80724c9 node-v6.11.0-linux-ppc64.tar.xz
0134c83a74a18c3cb44048cd856241a4a5c92bf4e06bb6026b21bac4c4f0ef61 node-v6.11.0-linux-s390x.tar.gz
571f07bf3d897d912d690b5609fc156aa70c03fbdfb536a4ded16eeed6b6fa49 node-v6.11.0-linux-s390x.tar.xz
2b0e1b06bf8658ce02c16239eb6a74b55ad92d4fb7888608af1d52b383642c3c node-v6.11.0-linux-x64.tar.gz
2f0c0833a1dc0d1d52ef42d275d40125c5163bf92d2a663139beef70896f544d node-v6.11.0-linux-x64.tar.xz
790cae8d5055aa174f2121d2ebb31bc08620d82fb5b7b9707df0859d2b24d869 node-v6.11.0-linux-x86.tar.gz
b409d26f5d4146bd2c0b872168cf85a9774c9a103aa0f78aab7161c745b1ea74 node-v6.11.0-linux-x86.tar.xz
e37386e4bcb20676e706ad21cd3aa86856f095bcd2c3d5acbad8d0dab56685fb node-v6.11.0.pkg
70709408014e5f87fe33426be54762d0b67545ad87a28a692e70617872cefadd node-v6.11.0-sunos-x64.tar.gz
ff194399cbc09a4cb98ef2499d7bc5814b158b61a7c800a1ec717f6067e0c503 node-v6.11.0-sunos-x64.tar.xz
058bc4635494dc40592aa07c2dbcb390fcb3d8daf78b155ac2787055a53cd562 node-v6.11.0-sunos-x86.tar.gz
73c136030edf29fdae3437898c0e0daf05c7a2c0dec6d6228361360c420c2d8e node-v6.11.0-sunos-x86.tar.xz
821f518c9b25b7dc52c4d87fce4dbf6df3227aba92f0d008ec9d1f32e5f603d9 node-v6.11.0.tar.gz
02ba35391edea2b294c736489af01954ce6e6c39d318f4423ae6617c69ef0a51 node-v6.11.0.tar.xz
335f5918cbebaf5a819fe575eee0cb1646625a09709416bc293e837b660d1800 node-v6.11.0-win-x64.7z
cc4c167825fbd0b182b53100e622e518f32fd32b29ce122ab0bf648645dfff34 node-v6.11.0-win-x64.zip
9bed6a3ce1fba503e54ef8f49a109b515f2f872037304edcc4c04eda1fff215b node-v6.11.0-win-x86.7z
61db6cc5a693cc87d51455cb57a323a8d6394c1c81eced72d260ca70dd9393fd node-v6.11.0-win-x86.zip
131786611782ff79acbb070db1fcd6f94b96534b54177baaae3e47f4af81d35d node-v6.11.0-x64.msi
ac945c06df15bccaac79b87f4422a324e06bdc4f629df6f1bdb9903764be3004 node-v6.11.0-x86.msi
3976e6bbcc0e4970517f9967cb986aa2c23f16a62f82f0efe475abfce6e15ddf win-x64/node.exe
3789d6bee43bada6591704a8702bc46dea2a103e8736681e229f45f906895153 win-x64/node.lib
ab2983f1112472fcdd1009a5f813a0e2ba85862ff0a66cd340eadf2cf2dad06f win-x64/node_pdb.7z
07f82eb6cde0e4bf7a1b0ac57adda653df71c8ea9663201ff8332437ad6a9b1c win-x64/node_pdb.zip
4c11c10ef5b74964ee6776cc9ca9cf85a3275761b5a81f1f239a6d91a58b5c95 win-x86/node.exe
2a9d89a648fadd3f11b21dd44ea24b7680e322f2e458b7f6dc9fa1fd24a1a42e win-x86/node.lib
1ebabe0454b56e5ecb21e3ac890e60909bc108da7ad0b03339bc270374427b9f win-x86/node_pdb.7z
13ac5e5aaa8eda7beea2853f3563bd9d98237c27fa8a46d225de18597dc0bbe5 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJZNw/KAAoJEJM7AfQLXKlGnhAIAK2DHD/u1Uh2Z6aNRQQoqj7W
IhBttjVShOL5wnc0XJSVxSQMgaw1DgJCo+zISiw8pfytfRVW7Ea9kgWsw2Uh3f+5
yuZumYhv/wt/cmfnwYKXC85ATXJjyVGyPCl5kTYysdu5XEy004UiDzUl8Apy6tbK
siRlul5dSg2szswag5E4Jb3ZWNXeIIASiC5vM3PZk7K2DXwQZGDYs1RwiL10pyMK
AwGE9Pf10YC8fRK+BNF62R0nFIzpkli7HtggOuBaOuDCLluRmib2inxDZ4BvWdck
T5vX0Bt9pifLqf4PEuKw+LAKwMPKRvXw/lLQucpDyiRXL3D1ae5OwOnr82leEN4=
=6jU8
-----END PGP SIGNATURE-----

Node.js 8: 디버깅과 네이티브 모듈 생태계의 많은 개선점

오늘 Node.js 8.0.0을 발표했습니다. 이번 릴리스의 새로운 개선점과 기능들은 오늘날 Node.js 개발자들에게 최고의 작업흐름을 만들었습니다. 주목할만한 업데이트와 기능은 네이티브 모듈 개발자들을 위한 Node.js API와 async_hooks, 인스펙터를 위한 JS 바인딩, zero-filling 버퍼, util.promisify 등이 포함됩니다.

우리는 이제 Node.js 가지고 꽃길만 갑시다.

Node.js 8 릴리스는 현재 릴리스 라인에서 버전 7을 대체 합니다. 이 Node.js 릴리스 라인은 2017년 10월에 장기 지원(LTS) 릴리스가 될 것입니다. (조금 더 상세히 알고 싶다면 LTS 전략보기). LTS 릴리스 라인은 안정성과 보안에 집중하고 있으므로 기업에서 Node.js를 사용하거나 업그레이드 할 때 안정성을 보장받고자 하는 사람들에게는 가장 적합합니다.

안정성이 필요하고 복잡한 상용 환경들을 가지고 있는 곳들은 (즉 중대형 업체들) 상용에 업그레이드 하기 전에 Node.js 8이 LTS 로 갈 때까지 기다려야 합니다.

지금 우리는 이 PSA 를 제공했으니, 이번 릴리스에서 흥미로운 업데이트를 살펴보겠습니다.

네이티브 모듈러 생태계가 추진력을 얻음

많이 기다려온 Node.js API(N-API)가 이번 릴리스에서 실험적인 기능으로 추가 될 것입니다 - 플래그를 통해 사용할 수 있게 될 겁니다. 이것은 네이티브 모듈들이 있는 주요 릴리스 라인 사이에서 일어나는 손상을 제거할 수 있는 매우 중요한 기술입니다.

비록 네이티브 모듈들은(C나 C++로 작성되고 크롬 V8에 직접 바인딩 되어있음) 대규모의 모듈러 생태계의 일부분이지만 모든 모듈의 30%는 네이티브 모듈에 간접적으로 의존합니다. Node.js가 주요 릴리스를 매번 업데이트 할 때마다, 패키지 소유자는 이 의존성을 업데이트해야만 합니다.

이러한 노력은 Google, IBM, Intel, Microsoft, nearForm, NodeSource와 개인 기여자들의 많은 기여 없이는 불가능했을 것입니다. 이 노력과 기술들에 대해 자세히 알고 싶다면 여기를 읽어보세요.

네이티브 모듈을 구축하거나 사용하는 사람이라면 누구든지 N-API 기능을 테스트해야 합니다.

** V8 5.8을 환영합니다.**

Node.js 8은 성능과 개발자가 주로 보는 API의 주요 개선사항을 포함하고 있는 자바스크립트 런타임의 상당한 업데이트인 V8 5.8과 같이 나왔습니다. V8 5.8은 Node.js의 네이티브 추가 생태계의 안정성을 보증하기 위해 V8 5.9와 곧 나올 V8 6.0의 ABI 호환성을 보장합니다. Node.js 8이 있는 동안 Node.js 프로젝트는 5.9와 가능하면 6.0으로 이동할 계획입니다.

또한 V8 5.8 엔진을 사용하면 Node.js 애플리케이션들을 빠르게 시작하고 메모리 소모량도 적은 새로운 Turbofan과 Ignition 컴파일러 파이프라인으로 전환할 수 있습니다. V8의 이전 버전에서 이러한 기능들이 존재하지만 Turbofan과 Ignition은 V8 5.9에서 처음으로 기본설정이 될 것입니다. 새로운 컴파일러 파이프 라인은 이를 더 잘 수용하기 위해 Node.js 코어 기술 위원회(CTC)에서 Node.js 8 릴리스를 연기하기로 결정할 만큼 중대한 변화입니다.

버퍼 향상

zero-filling 버퍼(num)와 새로운 버퍼(num)가 기본적으로 추가되었습니다. zero-filling 버퍼의 이점은 정보 유출을 방지하기 위한 보안 및 개인 정보 보호에 도움이 됩니다. 그러나 이 버퍼의 단점은 사용하는 사람들이 성능을 발휘할 수 있도록 buffer.allocUnsafe()로 마이그레이션하여 피할 수 있다는 것입니다. Node.js 사용자들은 이러한 위험을 인식하고 그러한 문제들을 피하는 방법을 알고 있는 경우에만 이 기능을 사용하는 것이 좋습니다.

WHATWG URL 구문 분석기가 안정화되었습니다

WHATWG URL 구문 분석기는 실험적인 상태로 이 버전에서 완전하게 지원되며, 사람들이 규격을 준수하고 브라우저와 호환되는 URL 구문 분석기를 사용할 수 있습니다. 이 새로운 URL 구현은 Chrome, Firefox, Edge 및 Safari와 같은 최신 웹 브라우저에서 사용할 수 있는 URL 구현 및 API와 일치하며 URL을 사용하는 코드를 여러 환경에서 공유 할 수 있습니다.

npm5로 인해 성능, 보안과 인터페이스 향상

최근에 5.0.0 버전 릴리스를 발표한 npm 클라이언트의 주식회사 Npm과 우리는 Node.js 8 안에 새로운 버전이 포함돼서 기쁩니다.

패키지 설치와 버전 업데이트 같은 일반적인 패키지 관리 과제들은 지금 5배나 빨라졌습니다. lockfiles는 개발 환경 전반에 걸쳐 일관된 설치를 보장합니다. 그리고 자동 오류 복구 기능을 가진 복구 캐쉬는 손상된 다운로드를 방지합니다. npm 버전 5 또한 SHA-512 코드 검증을 도입하였습니다.

“npm이 2011년 Node.js와 함께 처음 나왔을 때부터, 우리의 목적은 개발자들의 마찰을 줄이고 사람들이 대단한 것들을 만드는 것을 도와 주는 것이었습니다. npm 5버전과 함께한 Node.js 8을 사용하는 것은 모듈러 소프트웨어 개발을 극적으로 빠르고 쉽게 만들어 줄 것입니다 - 최대의 성능 향상을 이룰 수 있습니다.” 라고 npm 주식회사의 CEO Isaac Z. Schlueter가 말했습니다. “우리는 Node.js 커뮤니티에 대한 우리의 헌신적인 노력과 혁신적인 제품을 시장에 나오기 위한 협력을 자랑스럽게 여깁니다. 저는 다음에 무엇이 나올지 기대됩니다.”

도구의 생태계와 디버깅에 대한 통찰력

이 릴리스는 새로운 트레이싱과 비동기 트랙킹 기능 같은 깊은 통찰력을 제공합니다. 실험적으로 ‘async_hooks’ 모듈은 (이전에는 ‘async_wrap’) Node.js 8에서 주요 업데이트를 받습니다. 이 진단 API는 비동기 요청을 트랙킹 하고 그것의 완전한 생명주기를 제어하여 개발자들이 Node.js 이벤트 루프에서의 동작을 모니터링 할 수 있게 하고 더 나은 진단 툴과 다른 유틸리티들을 활성화 할 수 있습니다.

이러한 추가 기능은 레거시 디버거를 제거하는 것(v7에 새로 추가된 최신 CLI 디버거로 대체)과 더불어 디버그를 손쉽게 할 수 있도록 하고 상업용 및 오픈 소스 툴 벤더가 성능 저하를 일으키는 애플리케이션의 성능 저하를 찾아낼 수 있도록 하기 위해 Node.js 내의 변경 사항을 추적합니다.

인스펙터를 위한 JS 바인딩과 같은 다른 실험적인 기능들도 이번 릴리스에 포함됩니다. 새로운 인스펙터 핵심 모듈은 개발자가 현재 실행 중인 자바스크립트 코드를 검사하기 위해 Chrome 인스펙터에서 사용하는 디버그 프로토콜을 활용할 수 있게 해 줍니다.

Promises를 위한 향상된 지원

Node.js는 API를 사용하여 콜백 API를 반환할 수 있도록 개발자가 콜백 API를 래핑 할 수 있는 새로운 util.promisify() API를 포함하고 있습니다.

주요 업데이트를 모두 보려면 기술 블로그를 보거나 여기를 읽어보시기 바랍니다.

N-API: 네이티브 모듈을 위한 다음 세대의 Node.js API

이 글은 마이크로소프트 Chakra의 시니어 프로그램 매니저 Arunesh Chandra와 IBM의 Node.js 테크 리드 Michael Dawson이 작성했습니다.

Node.js는 활발한 모듈 생태계를 가지고 있고 이는 계속 성장하고 인기를 얻는 주요 원인입니다. 이 생태계는 자바스크립트와 네이티브 애드온 모듈을 포함하고 있습니다. 네이티브 모듈은 C/C++로 작성되었고 V8 또는 NAN API에 직접 의존합니다. 이 의존의 결과는 API/ABI의 안전성 보장의 결여와 모든 Node.js의 주요 릴리스의 재컴파일 또는 네이티브 애드온의 업데이트를 해야 합니다. 이 효과는 직/간접적으로 모듈 생태계의 약 30%에 영향을 미친다는 의견이 있습니다. 이는 네이티브 모듈 관리자의 유지보수 수고뿐만 아니라 제품에 아주 중요한 네이티브 코드 의존성을 가지고 있어 Node.js 버전을 업그레이드해야 하는 모듈 사용자에게도 주요 걸림돌이 됩니다. 다음 세대에는 네이티브 모듈을 위한 ABI-stable Node.js API 또는 N-API에 자바스크립트 VM 내의 네이티브 API를 위한 ABI-stable 추상 계층을 제공해 이 문제를 해결하는 것을 목표로 하고 있습니다. 이는 네이티브 모듈 작성자가 플랫폼마다 모듈을 컴파일하거나 설계하거나 N-API를 구현한 모든 버전의 Node.js에 모듈 사용이 가능하게 하도록 할 것입니다. 이를테면 Node-ChakraCore 같은 다른 VM과 함께 빌드된 버전의 Node.js에서도 마찬가지입니다.

오늘은 N-API가 Node.js 8.0내에서 사용 가능하다는 것을 알리게 되어 기쁘고, 전체 ABI의 안정화를 얻기 위한 Node.js의 여정의 중요한 이정표로 만들 것입니다. 이것은 긴 여정의 첫걸음이고 심화를 위해 더 많은 커뮤니티 참가자들을 초대할 것입니다. 이 시기는 네이티브 모듈 관리자가 N-API를 사용해보고 API와의 차이, 성능, 애드온 배포 작업 흐름 등의 피드백을 제공하기 매우 좋은 시기입니다.

데모 코드:

API는 어떤 모습인가요?

코어 API는 C API의 컬렉션처럼 사용 가능합니다. 아래 짤막한 코드는 API 모양과 에러 핸들링 조합을 보여줍니다. 모든 ABI는 성공 또는 장애를 나타내는 상태 코드를 반환하고, 반환 결과에 기타 파라미터를 선택적으로 제공하는 안정적인 API 패턴을 따릅니다.

1
NAPI_EXTERN napi_status napi_create_array(napi_env env, napi_value* result);

0이 아닌 상태 코드를 위해 추가적인 세부 사항은 아래 API 함수를 사용함으로써 얻을 수 있습니다.

1
NAPI_EXTERN napi_status napi_get_last_error_info(napi_env e, const napi_extended_error_info** result);

API 함수의 반환 값으로 상태 코드를 추가할 수 있고 VM이 던진 자바스크립트 예외를 다룰 수 있는 API가 있습니다.

1
2
3
NODE_EXTERN napi_status napi_is_exception_pending(napi_env e, bool* result);
NODE_EXTERN napi_status napi_get_and_clear_last_exception(napi_env e, napi_value* result);
NODE_EXTERN napi_status napi_throw(napi_env e, napi_value error);

N-API 함수의 세부 사항은 N-API 문서에서 확인하세요.

C-기반의 API는 N-API가 제공하는 표면 계층을 쉽게 이해하거나 ABI의 안전성의 유지를 쉽게 해주지만, 종종 C++ API를 이용하는 것이 간단할 때가 있습니다. 이런 경우를 지원하기 위해 그리고 NAN에서의 변경은 가능한 쉽게 하기 위해서 옵션으로 C API를 C로 감싸는 npm 모듈을 이용하는 것이 가능합니다. 이것은 N-API의 고려 대상이 아니고 전체적으로 내부에 삽입하기 위해 설계돼 N-API 외부의 추가적인 링크-타임 의존성이 전혀 없고 모듈 작성자는 동시에 ABI 안전성을 유지할 수 있습니다. 아래는 C와 C를 이용한 N-API 비교입니다.

C API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define CHECK_STATUS  
if (status != napi_ok) {
napi_throw_error(env, "N-API call failed");
return;
}
napi_value Shutdown(napi_env env, napi_callback_info info) {
napi_status status;
int s;
int how;
napi_value ret;
napi_value args[2];
size_t argc = 2;
status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
CHECK_STATUS;
status = napi_get_value_int32(env, args[0], &s);
CHECK_STATUS;
status = napi_get_value_int32(env, args[1], &how)
CHECK_STATUS;
status = napi_create_number(env, nn_shutdown(s, how), &ret);
CHECK_STATUS;
status = napi_set_return_value(env, info, ret);
CHECK_STATUS;
}

C++ Wrapper

1
2
3
4
5
Napi::Value Shutdown(const Napi::CallbackInfo& info) {  
int s = info[0]->As<Napi::Number>();
int how = info[1]->As<Napi::Number>();
return Napi::Number::New(info.Env(), nn_shutdown(s, how));
}

현재 상태: 실험적

Node.js 8.0버전 내의 N-API의 현재 상태는 실험적입니다. 그러나, 아래 차트를 보면 N-API는 V8 API를 사용한 상위 30개의 의존이 있는 모듈 중 5개 이상에서 100% 커버리지를 제공합니다. 커버리지에는 조금의 차이가 남아있지만 우리는 사람들이 사용해볼 만한 기반을 다졌다고 믿고 있습니다. 우리는 지금까지 N-API를 사용하기 위해 5개의 모듈(Node-Sass, Canvas, LevelDown, Nanomsg, IoTivity)을 이식했습니다. 이를 사용하려는 개발자들이 이식하려는 프로젝트를 위해 예제를 제공할 수 있습니다.

이전 버전의 Node 지원

N-API의 가치는 네이티브 모듈이 Node.js 버전을 교차 지원할 필요가 있을 때 빛납니다. 우리는 Node.js 8.0내에서 N-API가 안정된 후 오래된 Node.js LTS 라인으로 이식할 계획이 있습니다. 한편으로 node-addon-api 모듈은 구버전의 Node.js와 소스 호환성을 제공합니다. 자세한 사항은 저장소 내의 지침을 확인해주세요.

시작 방법

처음은 N-API의 상세 설명과 사용 예제 등이 있는 N-API 문서를 추천합니다. N-API를 대신 사용하는 NAN 애드온 예제를 보는 것이 도움이 될 것입니다. 덧붙여서 시작할 때 유용한 몇 가지 도구가 있습니다.

  • 당신의 기존 NAN-기반의 네이티브 애드온을 N-API로 전환해주는 이식 유틸리티가 있습니다. 100% 전환을 제공해주지는 않지만 쉽게 기존 프로젝트의 전환을 시작할 수 있도록 도와줍니다.

  • 만약 N-API와 네이티브 Node.js 애드온 프로젝트를 깨끗하게 새로 시작하고 싶다면 N-API 모듈을 위한 yeoman 생성자를 확인하세요. 프로젝트를 위해 필요한 발판을 생성해줄 것입니다.

  • N-API 모듈을 생성하거나 이전한 후에는 @n-api 태그와 함께 npm 저장소에 당신의 모듈을 공개하기 위한 과정을 추천합니다. 태그를 사용하면 당신의 N-API가 아닌 릴리스 순번에 영향을 미치지 않고 N-API 버전을 공개할 수 있습니다.

참여 방법

만약 여기까지 읽고 "오! 좋은데, 참여해 볼까?"라고 생각한다면 우리는 기쁠 것입니다. 아래를 포함한 여러 가지 방법으로 참여할 수 있습니다.

  • 문서 개선: 문서를 읽고 의견을 제공하세요. 우리는 문서를 깔끔하고 읽기 쉽게 만들려고 노력하고 있지만 모든 사람은 다른 견해를 가지고 있고 당신의 견해를 추가하는 것은 더 많은 독자에게 문서가 명확해지도록 만듭니다.

  • 이식된 모듈 사용하기: abi-stable-node 저장소에는 이미 언급된 N-API 검증 완료 이식 모듈을 포크할 수 있는 링크가 있습니다. 만약 우리가 제공한 N-API로 이식된 버전의 모듈 중 하나를 사용한 애플리케이션이 있다면 한번 사용해 보세요. 그리고 어떤 문제가 있든지 우리에게 알려주세요.

  • 테스트 커버리지 증진: 테스트 커버리지를 채우는 것은 N-API 함수의 세부 사항을 배우고 기여하기 좋은 방법입니다. coverage.node.org의 주 N-API 구현 파일(node_api.cc)코드 커버리지 결과와 커버리지가 좋지 않은 함수를 보는 것으로 시작하세요. 덧붙여, C++ 래퍼를 위한 테스트 커버리지를 추가하는 것으로도 도울 수 있습니다. N-API 팀은 전 영역의 커버리지를 증진하기 위해 노력하고 있지만, 커버리지 추가는 참여하기에 좋은 시작점입니다.

  • 모듈 이식: 좋아하는 모듈이나 유지하고 있는 하나 이상의 네이티브 모듈이 있나요? N-API로 이식하고 실험 버전으로 공개하는 것을 고려해주세요. 우리는 당신의 의견이 필요합니다. 더 다양한 이식된 모듈 세트와 사용할 준비가 되었다는 것은 우리가 옳은 API 표면 계층을 가졌다는 것을 확신하게 해줍니다. 이식에 관한 도움이 필요하다면 관리자가 함께 도울 수 있도록 우리에게 알려주세요.

  • N-API 작업 그룹 가입: N-API 나 C++ 래퍼를 구성하는 데 도움을 주세요. 큰 전진을 이뤄냈지만, 코드는 항상 더 많은 눈과 기여자들로부터 이익을 얻습니다. N-API와 함께한 경험이나 팀이 어떻게 일하고 있는지 듣고 싶다면 주간 회의에 참여하세요.

작업 중 어떤 문제를 발견한다면 [nodejs 저장소]에 n-api:란 머리말로 이슈를 열어주세요.

이 작업은 큰 커뮤니티 협력의 예입니다. 각각의 Node.js 기여자나 Google, IBM, Intel, Microsoft, nearForm, NodeSource의 참가자를 포함한 CTC 멤버의 참여가 없이는 가능하지 않았을 것입니다. 우리는 커뮤니티가 이 작업의 가치를 찾길 바라고 가까운 미래에 Node.js 생태계를 새로운 성장과 더 나은 플랫폼을 만들기를 기대합니다.

Node.js 8: 디버깅과 네이티브 모듈 생태계의 많은 개선점

오늘 Node.js 8.0.0을 발표했습니다. 이번 릴리스의 새로운 개선점과 기능들은 오늘날 Node.js 개발자들에게 최고의 작업흐름을 만들었습니다. 주목할만한 업데이트와 기능은 네이티브 모듈 개발자들을 위한 Node.js API와 async_hooks, 인스펙터를 위한 JS 바인딩, zero-filling 버퍼, util.promisify 등이 포함됩니다.

우리는 이제 Node.js 가지고 꽃길만 갑시다.

Node.js 8 릴리스는 현재 릴리스 라인에서 버전 7을 대체 합니다. 이 Node.js 릴리스 라인은 2017년 10월에 장기 지원(LTS) 릴리스가 될 것입니다. (조금 더 상세히 알고 싶다면 LTS 전략보기). LTS 릴리스 라인은 안정성과 보안에 집중하고 있으므로 기업에서 Node.js를 사용하거나 업그레이드 할 때 안정성을 보장받고자 하는 사람들에게는 가장 적합합니다.

안정성이 필요하고 복잡한 상용 환경들을 가지고 있는 곳들은 (즉 중대형 업체들) 상용에 업그레이드 하기 전에 Node.js 8이 LTS 로 갈 때까지 기다려야 합니다.

지금 우리는 이 PSA 를 제공했으니, 이번 릴리스에서 흥미로운 업데이트를 살펴보겠습니다.

네이티브 모듈러 생태계가 추진력을 얻음

많이 기다려온 Node.js API(N-API)가 이번 릴리스에서 실험적인 기능으로 추가 될 것입니다 - 플래그를 통해 사용할 수 있게 될 겁니다. 이것은 네이티브 모듈들이 있는 주요 릴리스 라인 사이에서 일어나는 손상을 제거할 수 있는 매우 중요한 기술입니다.

비록 네이티브 모듈들은(C나 C++로 작성되고 크롬 V8에 직접 바인딩 되어있음) 대규모의 모듈러 생태계의 일부분이지만 모든 모듈의 30%는 네이티브 모듈에 간접적으로 의존합니다. Node.js가 주요 릴리스를 매번 업데이트 할 때마다, 패키지 소유자는 이 의존성을 업데이트해야만 합니다.

이러한 노력은 Google, IBM, Intel, Microsoft, nearForm, NodeSource와 개인 기여자들의 많은 기여 없이는 불가능했을 것입니다. 이 노력과 기술들에 대해 자세히 알고 싶다면 여기를 읽어보세요.

네이티브 모듈을 구축하거나 사용하는 사람이라면 누구든지 N-API 기능을 테스트해야 합니다.

** V8 5.8을 환영합니다.**

Node.js 8은 성능과 개발자가 주로 보는 API의 주요 개선사항을 포함하고 있는 자바스크립트 런타임의 상당한 업데이트인 V8 5.8과 같이 나왔습니다. V8 5.8은 Node.js의 네이티브 추가 생태계의 안정성을 보증하기 위해 V8 5.9와 곧 나올 V8 6.0의 ABI 호환성을 보장합니다. Node.js 8이 있는 동안 Node.js 프로젝트는 5.9와 가능하면 6.0으로 이동할 계획입니다.

또한 V8 5.8 엔진을 사용하면 Node.js 애플리케이션들을 빠르게 시작하고 메모리 소모량도 적은 새로운 Turbofan과 Ignition 컴파일러 파이프라인으로 전환할 수 있습니다. V8의 이전 버전에서 이러한 기능들이 존재하지만 Turbofan과 Ignition은 V8 5.9에서 처음으로 기본설정이 될 것입니다. 새로운 컴파일러 파이프 라인은 이를 더 잘 수용하기 위해 Node.js 코어 기술 위원회(CTC)에서 Node.js 8 릴리스를 연기하기로 결정할 만큼 중대한 변화입니다.

버퍼 향상

zero-filling 버퍼(num)와 새로운 버퍼(num)가 기본적으로 추가되었습니다. zero-filling 버퍼의 이점은 정보 유출을 방지하기 위한 보안 및 개인 정보 보호에 도움이 됩니다. 그러나 이 버퍼의 단점은 사용하는 사람들이 성능을 발휘할 수 있도록 buffer.allocUnsafe()로 마이그레이션하여 피할 수 있다는 것입니다. Node.js 사용자들은 이러한 위험을 인식하고 그러한 문제들을 피하는 방법을 알고 있는 경우에만 이 기능을 사용하는 것이 좋습니다.

WHATWG URL 구문 분석기가 안정화되었습니다

WHATWG URL 구문 분석기는 실험적인 상태로 이 버전에서 완전하게 지원되며, 사람들이 규격을 준수하고 브라우저와 호환되는 URL 구문 분석기를 사용할 수 있습니다. 이 새로운 URL 구현은 Chrome, Firefox, Edge 및 Safari와 같은 최신 웹 브라우저에서 사용할 수 있는 URL 구현 및 API와 일치하며 URL을 사용하는 코드를 여러 환경에서 공유 할 수 있습니다.

npm5로 인해 성능, 보안과 인터페이스 향상

최근에 5.0.0 버전 릴리스를 발표한 npm 클라이언트의 주식회사 Npm과 우리는 Node.js 8 안에 새로운 버전이 포함돼서 기쁩니다.

패키지 설치와 버전 업데이트 같은 일반적인 패키지 관리 과제들은 지금 5배나 빨라졌습니다. lockfiles는 개발 환경 전반에 걸쳐 일관된 설치를 보장합니다. 그리고 자동 오류 복구 기능을 가진 복구 캐쉬는 손상된 다운로드를 방지합니다. npm 버전 5 또한 SHA-512 코드 검증을 도입하였습니다.

“npm이 2011년 Node.js와 함께 처음 나왔을 때부터, 우리의 목적은 개발자들의 마찰을 줄이고 사람들이 대단한 것들을 만드는 것을 도와 주는 것이었습니다. npm 5버전과 함께한 Node.js 8을 사용하는 것은 모듈러 소프트웨어 개발을 극적으로 빠르고 쉽게 만들어 줄 것입니다 - 최대의 성능 향상을 이룰 수 있습니다.” 라고 npm 주식회사의 CEO Isaac Z. Schlueter가 말했습니다. “우리는 Node.js 커뮤니티에 대한 우리의 헌신적인 노력과 혁신적인 제품을 시장에 나오기 위한 협력을 자랑스럽게 여깁니다. 저는 다음에 무엇이 나올지 기대됩니다.”

도구의 생태계와 디버깅에 대한 통찰력

이 릴리스는 새로운 트레이싱과 비동기 트랙킹 기능 같은 깊은 통찰력을 제공합니다. 실험적으로 ‘async_hooks’ 모듈은 (이전에는 ‘async_wrap’) Node.js 8에서 주요 업데이트를 받습니다. 이 진단 API는 비동기 요청을 트랙킹 하고 그것의 완전한 생명주기를 제어하여 개발자들이 Node.js 이벤트 루프에서의 동작을 모니터링 할 수 있게 하고 더 나은 진단 툴과 다른 유틸리티들을 활성화 할 수 있습니다.

이러한 추가 기능은 레거시 디버거를 제거하는 것(v7에 새로 추가된 최신 CLI 디버거로 대체)과 더불어 디버그를 손쉽게 할 수 있도록 하고 상업용 및 오픈 소스 툴 벤더가 성능 저하를 일으키는 애플리케이션의 성능 저하를 찾아낼 수 있도록 하기 위해 Node.js 내의 변경 사항을 추적합니다.

인스펙터를 위한 JS 바인딩과 같은 다른 실험적인 기능들도 이번 릴리스에 포함됩니다. 새로운 인스펙터 핵심 모듈은 개발자가 현재 실행 중인 자바스크립트 코드를 검사하기 위해 Chrome 인스펙터에서 사용하는 디버그 프로토콜을 활용할 수 있게 해 줍니다.

Promises를 위한 향상된 지원

Node.js는 API를 사용하여 콜백 API를 반환할 수 있도록 개발자가 콜백 API를 래핑 할 수 있는 새로운 util.promisify() API를 포함하고 있습니다.

주요 업데이트를 모두 보려면 기술 블로그를 보거나 여기를 읽어보시기 바랍니다.