- win,node-gyp: the delay-load hook for windows addons has now been correctly enabled by default, it had wrongly defaulted to off in the release version of 2.0.0 (Bert Belder) #1433
- os:
tmpdir()
's trailing slash stripping has been refined to fix an issue when the temp directory is at '/'. Also considers which slash is used by the operating system. (cjihrig) #1673 - tls: default ciphers have been updated to use gcm and aes128 (Mike MacCana) #1660
- build: v8 snapshots have been re-enabled by default as suggested by the v8 team, since prior security issues have been resolved. This should give some perf improvements to both startup and vm context creation. (Trevor Norris) #1663
- src: fixed preload modules not working when other flags were used before
--require
(Yosuke Furukawa) #1694 - dgram: fixed
send()
's callback not being asynchronous (Yosuke Furukawa) #1313 - readline: emitKeys now keeps buffering data until it has enough to parse. This fixes an issue with parsing split escapes. (Alex Kocharin) #1601
- cluster: works now properly emit 'disconnect' to
cluser.worker
(Oleg Elifantiev) #1386 - events: uncaught errors now provide some context (Evan Lucas) #1654
See https://github.com/iojs/io.js/labels/confirmed-bug for complete and current list of known issues.
- Some problems with unreferenced timers running during
beforeExit
are still to be resolved. See #1264. - Surrogate pair in REPL can freeze terminal #690
process.send()
is not synchronous as the docs suggest, a regression introduced in 1.0.2, see #760 and fix in #774- Calling
dns.setServers()
while a DNS query is in progress can cause the process to crash on a failed assertion #894 url.resolve
may transfer the auth portion of the url when resolving between two full hosts, see #1435.
- [
8a0e5295b4
] - build: use backslashes for paths on windows (Johan Bergström) #1698 - [
20c9a52227
] - build: move --with-intl to intl optgroup (Johan Bergström) #1680 - [
36cdc7c8ac
] - build: re-enable V8 snapshots (Trevor Norris) #1663 - [
5883a59b21
] - cluster: disconnect event not emitted correctly (Oleg Elifantiev) #1386 - [
0f850f7ae7
] - deps: provide TXT chunk info in c-ares (Fedor Indutny) - [
7e1c0e75ed
] - deps: sync with upstream bagder/c-ares@bba4dc5 (Ben Noordhuis) #1678 - [
18d457bd34
] - dgram: call send callback asynchronously (Yosuke Furukawa) #1313 - [
8b9a1537ad
] - events: provide better error message for unhandled error (Evan Lucas) #1654 - [
19ffb5cf1c
] - lib: fix eslint styles (Yosuke Furukawa) #1539 - [
76937051f8
] - os: refine tmpdir() trailing slash stripping (cjihrig) #1673 - [
aed6bce906
] - readline: turn emitKeys into a streaming parser (Alex Kocharin) #1601 - [
0a461e5360
] - src: fix preload when used with prior flags (Yosuke Furukawa) #1694 - [
931a0d4634
] - src: add type check to v8.setFlagsFromString() (Roman Klauke) #1652 - [
08d08668c9
] - src,deps: replace LoadLibrary by LoadLibraryW (Cheng Zhao) #226 - [
4e2f999a62
] - test: fix infinite loop detection (Yosuke Furukawa) #1681 - [
5755fc099f
] - tls: update default ciphers to use gcm and aes128 (Mike MacCana) #1660 - [
966acb9916
] - tools: remove closure_linter to eslint on windows (Yosuke Furukawa) #1685 - [
c58264e58b
] - tools: make eslint work on subdirectories (Roman Reiss) #1686 - [
0b21ab13b7
] - tools: refactormake test-npm
into test-npm.sh (Jeremiah Senkpiel) #1662 - [
f07b3b600b
] - tools: set eslint comma-spacing to 'warn' (Roman Reiss) #1672 - [
f9dd34d301
] - tools: replace closure-linter with eslint (Yosuke Furukawa) #1539 - [
64d3210c98
] - win,node-gyp: enable delay-load hook by default (Bert Belder) #1667
- async_wrap: (Trevor Norris) #1614
- it is now possible to filter by providers
- bit flags have been removed and replaced with method calls on the binding object
- note that this is an unstable API so feature additions and breaking changes won't change io.js semver
- libuv: resolves numerous io.js issues:
- addons: the
NODE_DEPRECATED
macro was causing problems when compiling addons with older compilers, this should now be resolved (Ben Noordhuis) #1626 - V8: upgrade V8 from 4.2.77.18 to 4.2.77.20 with minor fixes, including a bug preventing builds on FreeBSD
See https://github.com/iojs/io.js/labels/confirmed-bug for complete and current list of known issues.
- Some problems with unreferenced timers running during
beforeExit
are still to be resolved. See #1264. - Surrogate pair in REPL can freeze terminal #690
process.send()
is not synchronous as the docs suggest, a regression introduced in 1.0.2, see #760 and fix in #774- Calling
dns.setServers()
while a DNS query is in progress can cause the process to crash on a failed assertion #894 url.resolve
may transfer the auth portion of the url when resolving between two full hosts, see #1435.- readline: split escapes are processed incorrectly, see #1403
- [
7dde95a8bd
] - async-wrap: remove before/after calls in init (Trevor Norris) #1614 - [
bd42ba056a
] - async-wrap: set flags using functions (Trevor Norris) #1614 - [
4b2c786449
] - async-wrap: pass PROVIDER as first arg to init (Trevor Norris) #1614 - [
84bf609fd2
] - async-wrap: don't call init callback unnecessarily (Trevor Norris) #1614 - [
04cc03b029
] - deps: update libuv to 1.5.0 (Saúl Ibarra Corretgé) #1646 - [
b16d9c28e8
] - deps: upgrade v8 to 4.2.77.20 (Ben Noordhuis) #1639 - [
9ec3109272
] - doc: add TC meeting 2015-04-29 minutes (Rod Vagg) #1585 - [
2c7206254c
] - doc: fix typo in readme.md (AQNOUCH Mohammed) #1643 - [
71dc7152ee
] - doc: fix PR link in CHANGELOG (Brian White) #1624 - [
b97b96d05a
] - install: fix NameError (thefourtheye) #1628 - [
6ccbe75384
] - js_stream: fix buffer index in DoWrite (Shigeki Ohtsu) #1635 - [
c43855c49c
] - src: export the ParseEncoding function on Windows (Ivan Kozik) #1596 - [
8315b22390
] - src: fix pedantic cpplint whitespace warnings (Ben Noordhuis) #1640 - [
b712af79a7
] - src: fix NODE_DEPRECATED macro with old compilers (Ben Noordhuis) #1626 - [
2ed10f1349
] - src: fix minor inefficiency in Buffer::New() call (Ben Noordhuis) #1577 - [
f696c9efab
] - src: fix deprecated use of Buffer::New() (Ben Noordhuis) #1577 - [
0c8f13df8f
] - tools: remove unused GuessWordSize function (thefourtheye) #1638
Full details at https://github.com/iojs/io.js/wiki/Breaking-Changes#200-from-1x
- V8 upgrade to 4.2, minor changes to C++ API
os.tmpdir()
is now cross-platform consistent and will no longer returns a path with a trailling slash on any platform- While not a breaking change the 'smalloc' module has been deprecated in anticipation of it becoming unsupportable with a future upgrade to V8 4.4. See #1451 for further information.
Note: a new version of the 'url' module was reverted prior to release as it was decided the potential for breakage across the npm ecosystem was too great and that more compatibility work needed to be done before releasing it. See #1602 for further information.
- crypto: significantly reduced memory usage for TLS (Fedor Indutny & Сковорода Никита Андреевич) #1529
- net:
socket.connect()
now accepts a'lookup'
option for a custom DNS resolution mechanism, defaults todns.lookup()
(Evan Lucas) #1505 - npm: Upgrade npm to 2.9.0. See the v2.8.4 and v2.9.0 release notes for details. Notable items:
- Add support for default author field to make
npm init -y
work without user-input (@othiym23) npm/npm/d8eee6cf9d - Include local modules in
npm outdated
andnpm update
(@ArnaudRinquin) npm/npm#7426 - The prefix used before the version number on
npm version
is now configurable viatag-version-prefix
(@kkragenbrink) npm/npm#8014
- Add support for default author field to make
- os:
os.tmpdir()
is now cross-platform consistent and will no longer returns a path with a trailling slash on any platform (Christian Tellnes) #747 - process:
process.nextTick()
performance has been improved by between 2-42% across the benchmark suite, notable because this is heavily used across core (Brian White) #1571- New
process.geteuid()
,process.seteuid(id)
,process.getegid()
andprocess.setegid(id)
methods allow you to get and set effective UID and GID of the process (Evan Lucas) #1536
- repl:
- REPL history can be persisted across sessions if the
NODE_REPL_HISTORY_FILE
environment variable is set to a user accessible file,NODE_REPL_HISTORY_SIZE
can set the maximum history size and defaults to1000
(Chris Dickinson) #1513 - The REPL can be placed in to one of three modes using the
NODE_REPL_MODE
environment variable:sloppy
,strict
ormagic
(default); the newmagic
mode will automatically run "strict mode only" statements in strict mode (Chris Dickinson) #1513
- REPL history can be persisted across sessions if the
- smalloc: the 'smalloc' module has been deprecated due to changes coming in V8 4.4 that will render it unusable
- util: add Promise, Map and Set inspection support (Christopher Monsanto) #1471
- V8: upgrade to 4.2.77.18, see the ChangeLog for full details. Notable items:
- Classes have moved out of staging; the
class
keyword is now usable in strict mode without flags - Object literal enhancements have moved out of staging; shorthand method and property syntax is now usable (
{ method() { }, property }
) - Rest parameters (
function(...args) {}
) are implemented in staging behind the--harmony-rest-parameters
flag - Computed property names (
{['foo'+'bar']:'bam'}
) are implemented in staging behind the--harmony-computed-property-names
flag - Unicode escapes (
'\u{xxxx}'
) are implemented in staging behind the--harmony_unicode
flag and the--harmony_unicode_regexps
flag for use in regular expressions
- Classes have moved out of staging; the
- Windows:
- Random process termination on Windows fixed (Fedor Indutny) #1512 / #1563
- The delay-load hook introduced to fix issues with process naming (iojs.exe / node.exe) has been made opt-out for native add-ons. Native add-ons should include
'win_delay_load_hook': 'false'
in their binding.gyp to disable this feature if they experience problems . (Bert Belder) #1433
- Governance:
- Rod Vagg (@rvagg) was added to the Technical Committee (TC)
- Jeremiah Senkpiel (@Fishrock123) was added to the Technical Committee (TC)
See https://github.com/iojs/io.js/labels/confirmed-bug for complete and current list of known issues.
- Some problems with unreferenced timers running during
beforeExit
are still to be resolved. See #1264. - Surrogate pair in REPL can freeze terminal #690
process.send()
is not synchronous as the docs suggest, a regression introduced in 1.0.2, see #760 and fix in #774- Calling
dns.setServers()
while a DNS query is in progress can cause the process to crash on a failed assertion #894 url.resolve
may transfer the auth portion of the url when resolving between two full hosts, see #1435.- readline: split escapes are processed incorrectly, see #1403
- [
5404cbc745
] - buffer: fix copy() segfault with zero arguments (Trevor Norris) #1520 - [
3d3083b91f
] - buffer: little improve for Buffer.concat method (Jackson Tian) #1437 - [
e67542ae17
] - build: disable -Og when building with clang (Ben Noordhuis) #1609 - [
78f4b038f8
] - build: turn on debug-safe optimizations with -Og (Ben Noordhuis) #1569 - [
a5dcff827a
] - build: Use option groups in configure output (Johan Bergström) #1533 - [
2a3c8c187e
] - build: remove -J from test-ci (Rod Vagg) #1544 - [
e6874dd0f9
] - crypto: track external memory for SSL structures (Fedor Indutny) #1529 - [
935c9d3fa7
] - deps: make node-gyp work with io.js (cjihrig) #990 - [
56e4255382
] - deps: upgrade npm to 2.9.0 (Forrest L Norvell) #1573 - [
509b59ea7c
] - deps: enable v8 postmortem debugging again (Ben Noordhuis) #1232 - [
01652c7709
] - deps: upgrade v8 to 4.2.77.18 (Chris Dickinson) #1506 - [
01e6632d70
] - deps: upgrade v8 to 4.2.77.15 (Ben Noordhuis) #1399 - [
db4ded5903
] - deps: enable v8 postmortem debugging again (Ben Noordhuis) #1232 - [
36cd5fb9d2
] - (SEMVER-MAJOR) deps: upgrade v8 to 4.2.77.13 (Ben Noordhuis) #1232 - [
b3a7da1091
] - deps: update http_parser to 2.5.0 (Fedor Indutny) #1517 - [
ac1fb39ce8
] - doc: add rvagg to the TC (Rod Vagg) #1613 - [
dacc1fa35c
] - doc: update AUTHORS list (Rod Vagg) #1586 - [
2a3a1909ab
] - doc: add require() lines to child.stdio example (Nick Raienko) #1504 - [
02388dbf40
] - doc: fix some cross-references (Alexander Gromnitsky) #1584 - [
57c4cc26e2
] - doc: add TC meeting 2015-04-22 minutes (Rod Vagg) #1556 - [
b4ad5d7050
] - doc: improve http.request and https.request opts (Roman Reiss) #1551 - [
7dc8eec0a6
] - doc: deprecate smalloc module (Ben Noordhuis) #1566 - [
1bcdf46ca7
] - doc: add TC meeting 2015-04-15 minutes (Rod Vagg) #1498 - [
391cae3595
] - doc: Add Known issues to v1.7.0/1.7.1 CHANGELOG (Yosuke Furukawa) #1473 - [
e55fdc47a7
] - doc: fix util.deprecate example (Nick Raienko) #1535 - [
5178f93bc0
] - doc: Add Addon API (NAN) to working group list (Julian Duque) #1523 - [
f3cc50f811
] - doc: add TC meeting 2015-04-08 minutes (Rod Vagg) #1497 - [
bb254b533b
] - doc: update branch to master (Roman Reiss) #1511 - [
22aafa5597
] - doc: add Fishrock123 to the TC (Jeremiah Senkpiel) #1507 - [
b16a328ede
] - doc: add spaces to child.kill example (Nick Raienko) #1503 - [
26327757f8
] - doc: update AUTHORS list (Rod Vagg) #1476 - [
f9c681cf62
] - fs: validate fd on fs.write (Julian Duque) #1553 - [
801b47acc5
] - gitignore: ignore xcode workspaces and projects (Roman Klauke) #1562 - [
d5ce47e433
] - (SEMVER-MINOR) lib: deprecate the smalloc module (Ben Noordhuis) #1564 - [
7384ca83f9
] - module: remove '' from Module.globalPaths (Chris Yip) #1488 - [
b4f5898395
] - net: ensure Write/ShutdownWrap references handle (Fedor Indutny) #1590 - [
4abe2fa1cf
] - (SEMVER-MINOR) net: add lookup option to Socket.prototype.connect (Evan Lucas) #1505 - [
1bef717476
] - (SEMVER-MINOR) net: cleanup connect logic (Evan Lucas) #1505 - [
c7782c0af8
] - node: improve nextTick performance (Brian White) #1571 - [
b57cc51d8d
] - (SEMVER-MAJOR) os: remove trailing slash from os.tmpdir() (Christian Tellnes) #747 - [
ca219b00d1
] - repl: fix for a+ fd clearing the file on read (Chris Dickinson) #1605 - [
051d482b15
] - repl: fix _debugger by properly proxying repl (Chris Dickinson) #1605 - [
2e2fce0502
] - repl: fix persistent history and env variable name (Roman Reiss) #1593 - [
ea5195ccaf
] - repl: do not save history for non-terminal repl (Fedor Indutny) #1575 - [
0450ce7db2
] - repl: add mode detection, cli persistent history (Chris Dickinson) #1513 - [
af9fe3bbc7
] - (SEMVER-MAJOR) src: bump NODE_MODULE_VERSION due to V8 API (Rod Vagg) #1532 - [
279f6116aa
] - src: fix -Wmissing-field-initializers warning (Ben Noordhuis) #1606 - [
73062521a4
] - src: deprecate smalloc public functions (Ben Noordhuis) #1565 - [
ccb199af17
] - src: fix deprecation warnings (Ben Noordhuis) #1565 - [
609fa0de03
] - src: fix NODE_DEPRECATED macro (Ben Noordhuis) #1565 - [
3c92ca2b5c
] - (SEMVER-MINOR) src: add ability to get/set effective uid/gid (Evan Lucas) #1536 - [
30b7349176
] - stream_base: dispatch reqs in the stream impl (Fedor Indutny) #1563 - [
0fa6c4a6fc
] - string_decoder: don't cache Buffer.isEncoding (Brian White) #1548 - [
f9b226c1c1
] - test: extend timeouts for ARMv6 (Rod Vagg) #1554 - [
bfae8236b1
] - test: fix test-net-dns-custom-lookup test assertion (Evan Lucas) #1531 - [
547213913b
] - test: adjust Makefile/test-ci, add to vcbuild.bat (Rod Vagg) #1530 - [
550c2638c0
] - tls: useSSL_set_cert_cb
for async SNI/OCSP (Fedor Indutny) #1464 - [
1787416376
] - tls: destroy singleUse context immediately (Fedor Indutny) #1529 - [
2684c902c4
] - tls: zero SSL_CTX freelist for a singleUse socket (Fedor Indutny) #1529 - [
2d241b3b82
] - tls: destroy SSL once it is out of use (Fedor Indutny) #1529 - [
f7620fb96d
] - tls_wrap: Unlink TLSWrap and SecureContext objects (Сковорода Никита Андреевич) #1580 - [
a7d74633f2
] - tls_wrap: use localhost if options.host is empty (Guilherme Souza) #1493 - [
702997c1f0
] - Revert "url: significantly improve the performance of the url module" (Rod Vagg) #1602 - [
0daed24883
] - Revert "url: delete href cache on all setter code paths" (Rod Vagg) #1602 - [
0f39ef4ca1
] - Revert "url: fix treatment of some values as non-empty" (Rod Vagg) #1602 - [
66877216bd
] - url: fix treatment of some values as non-empty (Petka Antonov) #1589 - [
dbdd81a91b
] - url: delete href cache on all setter code paths (Petka Antonov) #1589 - [
3fd7fc429c
] - url: significantly improve the performance of the url module (Petka Antonov) #1561 - [
bf7ac08dd0
] - util: add Map and Set inspection support (Christopher Monsanto) #1471 - [
30e83d2e84
] - win,node-gyp: optionally allow node.exe/iojs.exe to be renamed (Bert Belder) #1266 - [
3bda6cbfa4
] - (SEMVER-MAJOR) win,node-gyp: enable delay-load hook by default (Bert Belder) #1433
- NOTICE: Skipped v1.8.0 due to problems with release tooling. See #1436 for details.
- build: Support for building io.js as a static library (Marat Abdullin) #1341
- deps: Upgrade openssl to 1.0.2a (Shigeki Ohtsu) #1389
- Users should see performance improvements when using the crypto API. See here for details.
- npm: Upgrade npm to 2.8.3. See the release notes for details. Includes improved git support. Summary:
387f889
#7961 Ensure that hosted git SSH URLs always have a valid protocol when stored inresolved
fields innpm-shrinkwrap.json
. (@othiym23)394c2f5
Switch the order in which hosted Git providers are checked togit:
,git+https:
, thengit+ssh:
(fromgit:
,git+ssh:
, thengit+https:
) in an effort to go from most to least likely to succeed, to make for less confusing error message. (@othiym23)431c3bf
#7699[email protected]
: Don't send body with HTTP GET requests when logging in. (@smikes)15efe12
#7872 Use the new version ofhosted-git-info
to pass along credentials embedded in git URLs. Test it. Test it a lot. (@othiym23)b027319
#7920 Scoped packages withpeerDependencies
were installing thepeerDependencies
into the wrong directory. (@ewie)6b0f588
#7867 Use git shorthand and git URLs as presented by user. Support newhosted-git-info
shortcut syntax. Save shorthand inpackage.json
. Try cloning viagit:
,git+ssh:
, andgit+https:
, in that order, when supported by the underlying hosting provider. (@othiym23)
- src: Allow multiple arguments to be passed to process.nextTick (Trevor Norris) #1077
- module: The interaction of
require('.')
withNODE_PATH
has been restored and deprecated. This functionality will be removed at a later point. (Roman Reiss) #1363
- Some problems with unreferenced timers running during
beforeExit
are still to be resolved. See #1264. - Surrogate pair in REPL can freeze terminal #690
process.send()
is not synchronous as the docs suggest, a regression introduced in 1.0.2, see #760 and fix in #774- Calling
dns.setServers()
while a DNS query is in progress can cause the process to crash on a failed assertion #894 url.resolve
may transfer the auth portion of the url when resolving between two full hosts, see #1435.- readline: split escapes are processed incorrectly, see #1403
- [
53ed89d927
] - Revert "build: use %PYTHON% instead of python" (Rod Vagg) #1475 - [
2b744b0ab7
] - src: revert NODE_MODULE_VERSION to 43 (Chris Dickinson) #1460 - [
431673ebd1
] - buffer: fast-case for empty string in byteLength (Jackson Tian) #1441 - [
1b22bad35f
] - build: fix logic for shared library flags (Jeremiah Senkpiel) #1454 - [
91943a99d5
] - build: use %PYTHON% instead of python (Rod Vagg) #1444 - [
c7769d417b
] - build: Expose xz compression level (Johan Bergström) #1428 - [
a530b2baf1
] - build: fix error message in configure (Shigeki Ohtsu) #1389 - [
92dfb794f9
] - build: enable ssl support on arm64 (Shigeki Ohtsu) #1389 - [
7de0dcde83
] - deps: make node-gyp work with io.js (cjihrig) #990 - [
4870213f9e
] - deps: upgrade npm to 2.8.3 (Forrest L Norvell) - [
49bb7ded2c
] - deps: fix git case sensitivity issue in npm (Chris Dickinson) #1456 - [
4830b4bce8
] - deps: add docs to upgrade openssl (Shigeki Ohtsu) #1389 - [
11bec72c87
] - deps: update asm files for openssl-1.0.2a (Shigeki Ohtsu) #1389 - [
53924d8ebe
] - deps: update asm Makefile for openssl-1.0.2a (Shigeki Ohtsu) #1389 - [
418e839456
] - deps: update openssl.gyp/gypi for openssl-1.0.2a (Shigeki Ohtsu) #1389 - [
02f12ab666
] - deps: update opensslconf.h for 1.0.2a (Shigeki Ohtsu) #1389 - [
eb7a23595f
] - deps: add x32 and arm64 support for opensslconf.h (Shigeki Ohtsu) #1389 - [
033a663127
] - deps: replace all headers in openssl (Shigeki Ohtsu) #1389 - [
ae8831f240
] - deps: backport openssl patch of alt cert chains 1 (Shigeki Ohtsu) #1389 - [
71316c46d9
] - deps: fix asm build error of openssl in x86_win32 (Shigeki Ohtsu) #1389 - [
d293a4f096
] - deps: fix openssl assembly error on ia32 win32 (Fedor Indutny) #1389 - [
e4872d7405
] - deps: upgrade openssl to 1.0.2a (Shigeki Ohtsu) #1389 - [
a1c9ef3142
] - deps, build: add support older assembler (Shigeki Ohtsu) #1389 - [
76f219c128
] - doc: Document forced pushing with git (Johan Bergström) #1420 - [
12e51d56c1
] - doc: add Addon API WG (Rod Vagg) #1226 - [
7956a13dad
] - http: logically respect maxSockets (fengmk2) #1242 - [
5b844e140b
] - module: fix style (Roman Reiss) #1453 - [
3ad82c335d
] - (SEMVER-MINOR) module: handle NODE_PATH in require('.') (Roman Reiss) #1363 - [
cd60ff0328
] - net: add fd into listen2 debug info (Jackson Tian) #1442 - [
10e31ba56c
] - (SEMVER-MINOR) node: allow multiple arguments passed to nextTick (Trevor Norris) #1077 - [
116c54692a
] - openssl: fix keypress requirement in apps on win32 (Shigeki Ohtsu) #1389 - [
62f5f4cec9
] - src: remove duplicate byteLength from Buffer (Jackson Tian) #1438 - [
51d0808c90
] - stream: remove duplicated expression (Yazhong Liu) #1444 - [
deb9d23d7b
] - test: fix error message check for openssl-1.0.2a (Shigeki Ohtsu) #1389 - [
ca8c9ec2c8
] - win,node-gyp: optionally allow node.exe/iojs.exe to be renamed (Bert Belder) #1266
- build: 发布脚本中的一个语法错误导致了 1.7.0 版本被 DOA 和未发布。(Rod Vagg) #1421.
- C++ API: Fedor Indutny 向 V8 贡献了一个功能,已经被移植到和 io.js 捆绑的 V8 中。
SealHandleScope
允许 C++ 附件组建开发者_密封_一个HandleScope
来防止更多的和意想不到的内存分配。目前只在测试版本的 io.js 中启用。这个功能帮助检测 #1075 中的内存泄漏,现在已经在 io.js 根HandleScope
被激活。(Fedor Indutny) #1395 - ARM: 这个发布包含显著的工作,改善了 ARM 平台上构建和测试状况。io.js CI 集群的 ARMv6,ARMv7 和 ARMv8 构建服务器现在全都(大部分)报告通过构建和测试。
- ARMv8 64-bit (AARCH64) 现在被正确的支持,包括向后移植了一个修复到 libuv 中,解决了错误地检测到
epoll_wait()
存在的问题。(Ben Noordhuis) #1365 - ARMv6: #1376 报告了一个 ARMv6 上关于
Math.exp()
的问题(包括 Raspberry Pi)。罪魁祸首是 ARMv6 上使用 V8 的 “fast math” 造成错误的代码生成。为了避免这个问题所有的 ARMv6 变种已经默认开启了--nofast_math
,fast math 可以使用--fast_math
重新打开。(Ben Noordhuis) #1398 - Tests: 专门为较慢的平台调整了超时,被检测到有 ARMv6 and ARMv7。(Roman Reiss) #1366
- ARMv8 64-bit (AARCH64) 现在被正确的支持,包括向后移植了一个修复到 libuv 中,解决了错误地检测到
- npm: 升级 npm 到 2.7.6. 查看详情 release notes。概要:
b747593
#7630 不自动的将所有 git 失败输出为错误日志。也许Github
需要能够在失败时不输出日志来支持这个回退逻辑。(@othiym23)78005eb
#7743npm run-script
的参数总是需要引号. 这个改动允许构建系统能够安全地编码使用npm run-script <script> -- <arguments>
传递给run-scripts
的 glod 模式的参数。这是一个针对测试做出的棘手的改变, 如果它被证实会破坏用户的东西也许会被还原或者移动到npm@3
(@mantoni)da015ee
#7074[email protected]
:read-package-json
不再缓存package.json
文件, 这造成了微小的性能损失却消除了一大类烦人的竞争条件。在 #7074 查看这个可怕的问题。(@othiym23)
- npm: 更新 npm 到 2.7.5 版本。查看详情 npm CHANGELOG.md。包括修复两个重要的安全问题,概要:
300834e
[email protected]
: 标准化软链接,这些链接会指向在根目录之外的目标。防止那些含有软链接的包覆盖在期望路径以外的目录。非常感谢 Tim Cuthbertson 和 Lift Security 团队与 npm 团队一起识别出这个问题。(@othiym23)0dc6875
[email protected]
: 包版本号不能大于 256 个字符,为了防止解析一个版本时所消耗的时间和内存指数级的增长,会导致阻断服务攻击。感谢 Lift Security 的 Adam Baldwin 给我们的提醒 (@isaacs)eab6184
#7766 进行微调使 Github 的快捷方式也支持私库。 (@iarna)a840a13
#7746 只有当 git URL 存在时处理 (@othiym23)
- openssl: 将 OpenSSL 升级到 1.0.2a #1325 (Shigeki Ohtsu),为即将到来的升级做了准备工作,查看附加信息 #589。
- timers: 修复了一个小的内存泄漏问题,在 timers 未被引用时发生,还有一些相关的 timers 问题 #1330 (Fedor Indutny)。这也似乎修复了 #1075 中提交的内存问题。
- android: 现在已经可以在 Android 和相关设备上编译 io.js #1307 (Giovanny Andres Gongora Granada).
- 需要解决当
beforeExit
时未引用的 timers 还会运行的问题,查看 #1264. - REPL 中的 Surrogate pair 会导致终端僵死,查看 #690
- 无法将 io.js 编译成静态库,查看 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- fs:
fs.writeFileSync()
以及特定情况下处于追加模式的fs.writeFile()
和fs.writeFileSync()
会造成文件损坏,查看 #1058,已在 #1063 中修复。(Olov Lassus) - iojs: 引入了一个 "internal modules" API,允许核心代码共享 JavaScript 模块而不需要将它们暴露成公共的 API,这个特性是 core-only 的,查看 #848。(Vladimir Kurchatkin)
- timers: 修复了两个关于定时器的小问题:
- Windows: 为 Windows 平台上编译过的附加组件增加了一个 "delay-load hook",这应该能减少一些 Windows 用户使用 io.js 附加组件的问题,查看 #1251。(Bert Belder)
- V8: V8 升级至 4.1.0.27,修复了一些小 bug。
- npm: 升级 npm 到 2.7.4。查看详情 npm CHANGELOG.md。主要变更:
1549106
#7641 因为 448efd0,执行npm shrinkwrap --dev
不会再将 production 依赖包含到npm-shrinkwrap.json
中。Whoopsie! (@othiym23)fb0ac26
#7579 只有在我们确信 npm 不对它们负责时才阻止删除文件和链接。这个改变很难总结,因为如果一切正常你应该永远不会看到它,如果你想了解更多的情况,可以看一看 commit 信息,这里做了详细的说明。(@othiym23)051c473
#7552bundledDependencies
现在被正确的包含在安装上下文中了。这是另一个非常难以总结的 bug,再次,如果你对细节好奇我鼓励你看一看 commit 信息。好的总结是它修补了很多ember-cli
的用例。(@othiym23)fe1bc38
#7672[email protected]
: 通过纠正属性名修复了客户端证书处理。(@atamon)89ce829
#7630[email protected]
: 确保 GitHub 简写被一致的处理,第三部分。(@othiym23)63313eb
#7630[email protected]
: 确保 GitHub 简写被一致的处理,第二部分。(@othiym23)3ed41bf
#7630[email protected]
: 确保 GitHub 简写被一致的处理,第一部分。(@othiym23)
- 依然存在一些定时器和
unref()
待被解决。查看 #1152 - 可能还存在一些小的内存泄露,但是依然没有确定,查看 #1075
- REPL 中的 Surrogate pair 会导致终端僵死,查看 #690
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- Windows: 正在进行的改善 Windows 支持状况的工作让完整的测试用例再次通过。正如 v1.4.2 的发布说明指出的,CI 系统和它的配置问题导致无法正确报告 Windows 下的测试问题,现在 CI 和代码库的问题似乎被完全解决了。
- FreeBSD: 发现了一个影响 io.js/Node.js 的[内核bug](](https://lists.freebsd.org/pipermail/freebsd-current/2015-March/055043.html),io.js 已经引入了一个补丁来阻止它引发问题。(Fedor Indutny) #1218
- module: 你现在可以使用
require('.')
代替require('./')
,这被认定为一个 bug 修复。(Michaël Zasso) #1185 - v8: 升级到 4.1.0.25,包括了
--max_old_space_size
值超过4096
和 Solaris 支持的补丁,两个已经被包含在 io.js 中。
- 可能还存在一些小的内存泄露,但是依然没有确定,查看 #1075
- REPL 中的 Surrogate pair 会导致终端僵死,查看 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- path: path.resolve() 使用了新的类型检查, #1153 发现了一些边缘案例依赖它,最显著的是 path.dirname(undefined)。放宽了对 path.dirname(),path.basename(),path.extname() 的类型检查。(Colin Ihrig) #1216
- querystring: querystring.parse() 和 querystring.stringify() 方法进行了内部优化,查看 #847,querystring.escape() 阻止了数字字面量被正确的转化,查看 #1208,暴露了一个测试盲点。这个 bug 和测试现在已被修复。(Jeremiah Senkpiel) #1213
- 可能依然存在与 TLS 相关内存泄露问题,查看 #1075
- REPL 中的 Surrogate pair 会导致终端僵死,查看 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- node: 新增一个命令行参数 -r 或者 --require,可以用来在启动的时候预加载模块。(Ali Ijaz Sheikh) #881
- querystring: parse() and stringify() 现在更快了。(Brian White) #847
- http: http.ClientRequest#flush() 方法已经被弃用并且替换为 http.ClientRequest#flushHeaders(),为了匹配 joyent/node#9048 中相同的改变。(Yosuke Furukawa) #1156
- net: 允许 server.listen() 的 port 参数接受 String 类型的选项,例如:{ port: "1234" },为了匹配 joyent/node#9268 中 net.connect() 可以接受相同的选项。(Ben Noordhuis) #1116
- tls: 已报告的内存泄露有了进一步工作,虽然在一些尚未明确的使用情况下还有轻微的泄露,在 #1075 跟踪进度。
- v8: Backport 了一个补丁,当 --max_old_space_size 超过 4096 时会发生整数溢出。(Ben Noordhuis) #1166
- platforms: io.js CI 系统在 FreeBSD 和 SmartOS (Solaris) 报告通过。
- npm: 升级 npm 到 2.7.1。查看详情 npm CHANGELOG.md。主要变更:
6823807
#7121 npm install --save 的 Git 依赖保存传递进来的 URL 而不是用来缓存远程仓库的目录。修复在 shrinkwwapping 中使用 Git 依赖。正在重写缓存 Git 依赖的代码。重申。不会再有 single-letter 变量名字,工作流程更清晰了。(@othiym23)abdd040
[email protected]: 当解析 JSON 出错时,使用更宽容的 JSON 解析器替代 JSON.parse 提供更有用的出错信息。(@smikes)c56cfcd
#7525 npm dedupe 能够处理 scoped packages。 (@KidkArolis)4ef1412
#7075 当尝试使用一个无效的 semver 范围标记 release 时,npm publish 和 npm tag 将会在处理之前报错。(@smikes)
- 可能依然存在与 TLS 相关内存泄露问题,查看 #1075
- REPL 中的 Surrogate pair 会导致终端僵死,查看 #690
- 无法将 io.js 编译成静态库,查看 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- tls: 被报的 TLS 内存泄漏问题至少已被部分解决,在这次发布中有不少提交。现在的测试表明_可能_依然存在泄漏问题。可在 #1075 跟进整个过程。
- http: 修复了 joyent/node#9348 和 npm/npm#7349 所报的错误。当触发
error
事件,pending 的数据并未被完全读取,导致socket.destroy()
有一个断言错误。(Fedor Indutny) #1103
- 可能与 TLS 相关的内存溢出问题,查看详情 #1075.
- Windows 支持有一些明显的错误并未被 io.js 持续集成系统识别,由人为、程序和 Jenkins 错误等一系列原因造成。查看 #1005 的详情和讨论,希望这些错误能被尽快解决。
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- buffer: 新增
Buffer#indexOf()
方法, 模仿Array#indexOf()
。接受一个字符串,Buffer 或数值。字符串会使用 UTF8 解析。(Trevor Norris) #561 - fs:
’fs’
的方法中的options
对象属性将不会做hasOwnProperty()
检测,因此 options 对象允许原型链上的属性。(Jonathan Ong) #635 - tls: PayPal 上报了一个疑似 TLS 内存溢出的问题,可能问题在最近 stream_wrap 中的一些修改上。最初修复在 #1078, 你可以关注整个关闭溢出的过程 #1075 (Fedor Indutny).
- npm: 升级 npm 到 2.7.0,查看详情 npm CHANGELOG.md,从中可以看出为什么这只升级了 minor 而不是 major。以下为摘要:
145af65
#4887 通过传入—node-gyp=/path/to/node-gyp
参数给 npm,可替换 npm 自带的node-gyp
脚本。不用修改 npm 的代码就可使用pangyp
或 一个修改过的node-gyp
版本来支持 io.js!(@ackalker)2f6a1df
#1999 当没有定义 restart 脚本,只运行stop
和start
(包括 pre- 和 post- 脚本),这样可更简单的让 npm 所管理的服务支持优雅的重启。(@watilde / @scien)448efd0
#2853npm ls
新增支持--dev
和--prod
,使得只显示生产或开发时的依赖。 (@watilde)a0a8777
#7463 将npm run-script
打印的日志拆分成生命周期的脚本和npm run-script
直接调用的脚本。 (@watilde)a5edc17
#6749[email protected]
: 支持传递作用域给npm init
,所以包可以被初始化成 scope / organization / team 的一部分。 (@watilde)
- TC: Colin Ihrig (@cjihrig) 离开 TC,因为想更多的贡献代码,而少参加会议。
- 可能与 TLS 相关的内存溢出问题,查看详情 #1075.
- Windows 支持有一些明显的错误并未被 io.js 持续集成系统识别,由人为、程序和 Jenkins 错误等一系列原因造成。查看 #1005 的详情和讨论,希望这些错误能被尽快解决。
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- stream: 修复在不支持
writev()
的平台(尤其是 Windows)的一些问题。在 1.4.1 中有修改 #926,造成这些平台的一些功能无法使用,现在已经被解决 #1008 (Fedor Indutny) - arm: 我们已经初步支持 ARMv8 / ARM64 / AARCH64。如果要完全支持需要将 OpenSSL 升级到 1.0.2。#1028 (Ben Noordhuis)
- 新增合作开发者: Julian Duque (@julianduque)
- Windows 支持有一些明显的错误并未被 io.js 持续集成系统识别,由人为、程序和 Jenkins 错误等一系列原因造成。查看 #1005 的详情和讨论,希望这些错误能被尽快解决。
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- tls: 在 #840 中修改 TLSWrap 时引入了一个拼写错误导致报错,这个错误只会在 Windows 上出现。并没有在 io.js 的持续集成系统发现,因为 Windows 编译脚本和 slave 配置有问题,见「已知问题」。已在 #994 和 #1004 修复. (Fedor Indutny)
- npm: 更新 npm 到 2.6.1。查看详情 npm CHANGELOG.md,主要变更:
- 新增合作开发者:
- Robert Kowalski (@robertkowalski)
- Christian Vaagland Tellnes (@tellnes)
- Brian White (@mscdex)
- Windows 支持有一些明显的错误并未被 io.js 持续集成系统识别,由人为、程序和 Jenkins 错误等一系列原因造成。查看 #1005 的详情和讨论,希望这些错误能被尽快解决。
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
注意:版本 1.4.0 原本进行了标记和构建,但在发布过程中发现一个 libuv bug 所以被中止了,没有发布。该 tag 在a558cd0a61
之后,但是被删除了。为了避免困惑,直接把版本升到了 1.4.1 。
- process / promises:如果一个
Promise
被 reject 了,并且在一次事件循环之内没有添加错误处理 handler,process
会触发一个'unhandledRejection'
事件。如果一个Promise
被 reject 了,并且在一次事件循环之后添加了错误处理 handler,process
会触发一个'rejectionHandled'
事件。详情参看文档 process #758 (Petka Antonov) - streams:在
tls.connect()
时可以将普通 streams 当做 socket 使用 #926 (Fedor Indutny) - http:在客户端中止一个
http.ClientRequest
时会触发一个新的'abort'
事件。 #945 (Evan Lucas) - V8:V8 更新到 4.1.0.21,包含一个修复(但被禁止访问),详情参看 https://code.google.com/p/chromium/issues/detail?id=430201。此次更新因一个非兼容的 ABI 更新受阻,可能会在合并 v8 4.2 时支持。参看讨论 #952。
- npm:更新 npm 到 2.6.0. 包含用以支持新 registry 的一些特性,并为
npm@3
做准备。详情参看 npm CHANGELOG.md: - libuv: 更新到 1.4.2 。修复详情参看 libuv ChangeLog。
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- url:
url.resolve('/path/to/file', '.')
现在的返回值会以斜杠结尾(如/path/to/
),url.resolve('/', '.')
会返回/
。#278 (Amir Saboury) - tls:
tls
和https
所使用的默认密码套件被修改成所有现代浏览器已经实现的Perfect Forward Secrecy
。除此以外,去除了不安全的 RC4 密码,如果你直接使用了 RC4,请指定你自己的密码套件。 #826 (Roman Reiss)
- REPL 中的代理对会冻结终端 #690
- 无法将 io.js 编译成静态库 #686
process.send()
并非如文档所述是同步的,1.0.2 引入的问题,查看 #760,解决 #774- 当 DNS 查询正在进行中时调用
dns.setServers()
会造成 process 崩溃,原因是断言错误 #894
- stream:
- 简化 stream 构造方法,详情参看 readable-stream/issues#102。并且扩展了streams 的基础对象,来让他们的构造方法接受默认的实现方法,减少创建自定义stream 所需的模板(通用)代码。一个更新版的 readable-stream 最终也会发布来匹配 core 的该变化。(@sonewman)
- dns:
lookup()
增加支持'all'
布尔选项,默认为false
,如果设为 true,方法会返回一个 all 地址解析过的域名数组,参看#744 (@silverwind)
- assert:
- tracing:
- docs:
- 大量文档更新,具体查看相应提交
- 新 Errors 文档描述了 JavaScript 错误,V8 特定的 和 io.js 特定的错误详情。(@chrisdickinson)
- npm 更新到 2.5.1, 简要更新日志:
- npm/0e8d473 #7281
[email protected]
: 清理 API,设置connection: close
,从而使测试在 io.js 1.1.x 通过。 (@robertkowalski) - npm/f9313a0 #7226 确保所有的请求设置被复制到 agent 中。 (@othiym23)
- npm/fec4c96
在环境中允许
--no-proxy
覆盖HTTP_PROXY
设置。 (@othiym23) - npm/9d61e96
npm outdated --long
添加一列显示依赖的类型。 (@watilde)
- npm/0e8d473 #7281
- libuv 升级到 1.4.0,详情参看 libuv 更新日志
- 添加贡献者:
- Aleksey Smolenchuk (@lxe)
- Shigeki Ohtsu (@shigeki)
- REPL 中的 Surrogate pair 会导致终端僵死 #690
- io.js 无法作为静态库编译 #686
process.send()
行为并非如文档所说的同步,该问题是在 1.0.2 引入的,参看 #760 和 修复 #774 将会在下个版本发布。
- debug: 修复 v8 post-mortem 调试 bug.
- crypto: publicEncrypt 开始支持受密码保护的私钥.
- crypto: 哈希方法提速 ~30%.
- crypto: 新增 privateEncrypt/publicDecrypt 方法.
- errors
- 优化 util.inspect 格式化结果
- fs 抛出的错误, 新增更详细的描述. 这需要一个
NODE_MODULE_VERSION
bump. - http.setHeader 抛出的错误, 新增更详细的描述
- 依赖更新:
- npm: 更新到 2.4.1
- http-parser: 回滚到 2.3.0
- libuv: 更新到 1.3.0
- v8: 更新到 4.1.0.14
- http.request: 从选项中继承属性
- buffers 新增了可迭代接口 (
for (let byte of buffer.values()) { }
) - fs: 修复
fs.createReadStream
的 fd 泄露. 详情参看 497fd72. - installer: Windows 平台完成安装后, 触发 WM_SETTINGCHANGE 事件, 用以让其他运行中进程知晓 PATH 的变化
- 新增贡献者:
- Vladimir Kurchatkin (@vkurchatkin)
- Micleușanu Nicu (@micnic)
- REPL 中的 Surrogate pair 会导致终端僵死 (nodejs/node#690)
- io.js 无法作为静态库编译 (nodejs/node#686)
- npm 更新到 2.3.0 修复 Windows "uid is undefined" 错误
- crypto.pseudoRandomBytes() 现在是 crypto.randomBytes() 的别名方法, 如果没有足够的 entropy 用以产生安全的值则会阻塞. 详情参看 https://github.com/iojs/io.js/commit/e5e5980.
- 给 V8 打补丁, 用于检测 ARMv6; 使程序又能在 ARMv6 上运行 (Raspberry Pi 等.)
- V8 小幅更新 4.1.0.7 to 4.1.0.12
- 'punycode' 核心模块状态, 从不稳定变为稳定
- 新增贡献者:
- Thorsten Lorenz (@thlorenz)
- Stephen Belanger (@qard)
- Jeremiah Senkpiel (@fishrock123)
- Evan Lucas (@evanlucas)
- Brendan Ashworth (@brendanashworth)
- V8 从 3.31 升级到 4.1, 这并不是一个大版本升级, 版本号 "4.1" 表示 与 Chrome 41 保持同步. 3.31 分支 没有与稳定版本保持同步.
- 重新支持 Windows XP / 2003
- npm 更新 2.2.0
- 提高 FreeBSD 支持
- ARMv6 平台仍然无法编译, V8 的 this 有一个停顿(hold-up), 问题 #283
- Template strings 在 V8 4.1 会导致segfaults, https://codereview.chromium.org/857433004, 问题 #333
- Windows 安装包问题修复
- windows 安装包的 node-gyp 问题修复
- http_parser v2.4.1 升级
- libuv v1.2.1 升级
因为 1.0.0 版的旧的编译 slave git reflogs 重新编译
- doc: 提高书写一致性 (Rui Marinho)
- win,msi: 修复文档网址链接 (Bert Belder)
以下是当前_稳定版_的 Node.js(v0.10.35) 到 io.js(v1.0.0) 的变更概要。v1.0.0 发布时 Node.js 最新的_非稳定版_为 v0.11.14,并正在准备发布 v0.11.15。io.js 的代码是源于 joyent/node v0.11 分支,包括其中的大部分变更,因此可视为 v0.11 的扩充。
- io.js 内置的 V8 引擎升级幅度很大,从 Node.js v0.10.35 的 3.14.5.9 和 Node.js v0.11.14 升级到 io.js v1.0.0 的 3.31.74.1。他修复了很多 bug 且提升了性能,而且额外增加了新的 ES6 特性。获取更多信息请查看 io.js ES6 页面
- 其他内置的模块也相应升级了:
- c-ares: 1.9.0-DEV 升级到 1.10.0-DEV
- http_parser: 1.0 升级到 2.3
- libuv: 0.10.30 升级到 1.2.0
- npm: 1.4.28 升级到 2.1.18
- openssl: 1.0.1j 升级到 1.0.1k
- punycode: 1.2.0 升级到 1.3.2.
- 所有平台优化了性能和稳定性
https://iojs.org/api/buffer.html
- 新增
buf.writeUIntLE
,buf.writeUIntBE
,buf.writeIntLE
,buf.writeIntBE
,buf.readUIntLE
,buf.readUIntBE
,buf.readIntLE
andbuf.readIntBE
方法,支持6个字节读写。 - 新增
Buffer.compare()
方法,使用memcmp()
对比两个 Buffer 实例的内存区域,实例也有一个compare()
方法。 - 新增
buffer.equals()
方法,对比 Buffer 的内容是否一致。 - 新增
new Buffer(otherBuffer)
构造函数。 - 调整
SlowBuffer
的语义 - 更新
buffer.toJSON()
的输出,不再输出数组而是输出一个对象。此对象可被标记为一个 buffer 并且可以传入到 Buffer 构建函数中重新实例化。
https://iojs.org/api/child_process.html
child_process.exec
新增了一个shell
的参数。- 新增一系列同步的方法:
child_process.spawnSync
,child_process.execSync
, andchild_process.execFileSync
。 - 给
ENOENT
错误新增了路径,方便调试。
https://iojs.org/api/console.html
console.dir
新增了一个options
参数。
https://iojs.org/api/cluster.html
- 更新了 cluster 模块,在非 Windows 平台默认使用 round-robin 负载均衡算法,该项可以配置。
- 支持了
--debug
调试 - 修复了很多 bug
https://iojs.org/api/crypto.html
- Added support for custom generator values to
DiffieHellman
(defaulting to 2 for backwards compatibility). - Added support for custom pbkdf2 digest methods.
- Added support for elliptic curve-based Diffie-Hellman.
- Added support for loading and setting the engine for some/all OpenSSL functions.
- Added support for passing in a passphrase for decrypting the signing key to
Sign.sign()
. - Added support for private key passphrase in every method that accepts it.
- Added support for RSA public/private encryption/decryption functionality.
- Added support for setting and getting of authentication tags and setting additional authentication data when using ciphers such as AES-GCM.
https://iojs.org/api/dgram.html
- 新增支持接受 UDP 空包。
- 新增
dns.resolveSoa
,dns.getServers
, anddns.setServers
方法。 - 在错误信息上添加
hostname
- 优化错误处理的一致性
https://iojs.org/api/events.html
- 新增
EventEmitter.setMaxListeners
的链式调用 require('events')
直接返回EventEmitter
构造函数,可直接使用这个模块,如var EventEmitter = require('events')
而不是var EventEmitter = require('events').EventEmitter
。
- 新增
fs.access
,弃用fs.exists
,请仔细阅读文档。 - NODE_DEBUG 的值非空时显示更多的错误信息以及方法调用的具体位置来优化调试。
- 新增
fs.watch
的参数支持子目录递归(只支持 OS X)。 - 修复 callback 不存在会异常的情况,只打印错误。
https://iojs.org/api/http.html
- 新增支持
response.write
和response.end
接受一个 callback,当操作完成后被执行。 - 新增 308 状态码的支持(详见 RFC 7238)。
- 新增
http.METHODS
数组,列出所有解析器支持的 HTTP 方法。 - 新增
request.flush
方法。 - 新增
response.getHeader('header')
方法,可以在发送响应头之前调用。 - 新增
response.statusMessage
属性。 - 新增客户端 Keep-Alive 行为,在 request 的 options 设置
keepAlive:true
可无限重用连接。 - 在 incoming message 新增
rawHeaders
和rawTrailers
属性。 - 删除
DELETE
和OPTIONS
默认的分块编码。
net.Server.listen
变更,当绑定的地址被忽略后,先尝试 IPv6,如果失败再尝试 IPv4。
os.networkInterfaces
方法新增 IPv6 的 MAC 地址,网络掩码和范围 ID。- 更新 Windows 平台的
os.tmpdir
,当定义临时目录的时候,使用%SystemRoot%
或%WINDIR%
环境变量,而不是硬编码的c:\windows
。
https://iojs.org/api/path.html
- 增加了
path.isAbsolute
和path.parse
方法。 - 增加了
path.win32
和path.posix
对象,他们分别包含了对应平台的path
的实现。 - 提升了
path.join
的性能。
https://iojs.org/api/process.html
- 增加了
beforeExit
事件。 - 增加了
process.mainModule
和process.exitCode
。
https://iojs.org/api/querystring.html
- stringifying 或者 parsing 一个 query string 的时候可传入自定义的
encodeURIComponent
和decodeURIComponent
方法。 - 修复了几个格式化 query string 边缘场景下的问题。
https://iojs.org/api/smalloc.html
smalloc
是一个新的核心模块, 用于在 javascript 中 分配、释放和复制(外部的)内存空间。
https://iojs.org/api/stream.html
streams 的变化没有从 stream1 到 stream2 那样剧烈:它们是对现有想法的改进,让 API 更加友好,同时运行速度更快。所有的这些变更也称为 "stream3",但是这些变更对大多数使用者来说是透明的,大都不需要太关心。
The distinction between "flowing" and "non-flowing" modes has been refined. Entering "flowing" mode is
no longer an irreversible operation—it is possible to return to "non-flowing" mode from "flowing" mode.
Additionally, the two modes now flow through the same machinery instead of replacing methods. Any time
data is returned as a result of a .read
call that data will also be emitted on the "data"
event.
As before, adding a listener for the "readable"
or "data"
event will start flowing the stream; as
will piping to another stream.
The ability to "bulk write" to underlying resources has been added to Writable
streams. For stream
implementers, one can signal that a stream is bulk-writable by specifying a _writev method.
Bulk writes will occur in two situations:
- When a bulk-writable stream is clearing its backlog of buffered write requests,
- or if an end user has made use of the new
.cork()
and.uncork()
API methods.
.cork
and .uncork
allow the end user to control the buffering behavior of writable streams separate
from exerting backpressure. .cork
indicates that the stream should accept new writes (up to highWaterMark
),
while .uncork
resets that behavior and attempts to bulk-write all buffered writes to the underlying resource.
The only core stream API that currently implements _writev
is net.Socket
.
In addition to the bulk-write changes, the performance of repeated small writes to non-bulk-writable streams
(such as fs.WriteStream
) has been drastically improved. Users piping high volume log streams to disk should
see an improvement.
For a detailed overview of how streams3 interact, see this diagram.
https://iojs.org/api/timers.html
- 移除
process.maxTickDepth
, 允许process.nextTick
被无限迭代调用 - 更新
setImmediate
允许在一次事件循环处理完整队列, 而不是每次一个.
- 新增
detailed
布尔标志到getPeerCertificate
来返回详细的认证信息 (带有原始 DER 字节). - 新增
renegotiate(options, callback)
方法用于回话 renegotiation. - 新增
setMaxSendFragment
方法用以调整 TLS 碎片大小. - 新增
dhparam
选项 到 DH 密码. - 新增
ticketKeys
选项到 TLS ticket AES 加密钥匙设置. - 新增异步 OCSP-stapling 回调.
- 新增异步会话存储事件
- 新增异步 SNI 回调.
- 新增多 key 服务器支持 (例如, ECDSA+RSA 服务器).
- 新增可选回调到
checkServerIdentity
来让用户手动认证验证 - 新增对 ECDSA/ECDHE 密码支持.
- 用 C++ 实现 TLS 流, 从而提升性能.
- 把
createCredentials
移到tls
并重命名为createSecureContext
. - 移除对 SSLv2 和 SSLv3 的支持.
- 优化特殊字符的转义.
- 提升解析速度
https://iojs.org/api/util.html
- 新增
util.debuglog
. - 新增多个类型检测方法. 查看文档.
- 对
util.format
进行了几处更新:-0
原样打印, 而不是0
.- 所有 error 实例
instanceof Error
都会被格式化成 error. - JavaScript 中的循环引用, 现在被处理为
%j
说明符. (TO REVIEW) - 允许自定义
inspect
方法返回一个对象. - 自定义
inspect
方法现在会接受所有传给util.inspect
的参数.
v8
是一个全新的核心模块, 用于直接同 V8 引擎交互.
vm
被基于卓越的Contextify native 模块完全重写, 从而工作的更好,
Contextify 所有的功能被加入到了核心模块中, 并进行了优化.
- 新增
vm.isContext(object)
方法来确定一个object
是否被 contextified. - 新增
vm.runInDebugContext(code)
方法用以在 V8 调试环境编译和执行code
. - 更新
vm.createContext(sandbox)
来 "contextify" 沙盒, 使它能够作为vm
脚本的全局环境, 然后返回它. 它不会创建单独的 context 对象 - 更新
vm
和vm.Script
的大部分方法, 能接受一个options
对象, 允许用户为脚本自定义 timeout, 错误的展示方式, 以及文件名 (用户栈追踪). - 修改提供的沙盒对象, 从而可直接用做全局环境, 去除提供的沙盒对象和通过运行
vm
模块出现在脚本内部的全局对象之间的错误试探性属性拷贝 关于详细信息, 参看上面的文档链接
https://iojs.org/api/zlib.html
- 新增支持
zlib.flush
指定特殊的 flush 方法 (默认为Z_FULL_FLUSH
). - 新增支持
zlib.params
来在压缩时动态更新压缩级别和策略. - 新增同步版本的 zlib 方法.
https://iojs.org/api/addons.html
通常情况下, 建议使用 NAN 作为 addons 的兼容层, 未来他也会帮助处理 V8, 以及 Node/io.js C++ API 的变化. 下面的大部分修改 NAN 都有对应的 wrapper 进行处理.
- Exposed method signature has changed from
Handle<Value> Method(const Arguments& args)
tovoid Method(const v8::FunctionCallbackInfo<Value>& args)
with the newly introducedFunctionCallbackInfo
also taking the return value viaargs.GetReturnValue().Set(value)
instead ofscope.Close(value)
,Arguments
has been removed. - Exposed setter signature has changed from
void Setter(Local<String> property, Local<Value> value, const v8::AccessorInfo& args)
void Setter(Local<String> property, Local<Value> value, const v8::PropertyCallbackInfo<void>& args)
. - Exposed getter signature has changed from
void Getter(Local<String> property, Local<Value> value, const v8::AccessorInfo& args)
void Setter(Local<String> property, Local<Value> value, const v8::PropertyCallbackInfo<Value>& args)
. - Exposed property setter signature has changed from
Handle<Value> Setter(Local<String> property, Local<Value> value, const v8::AccessorInfo& args)
void Setter(Local<String> property, Local<Value> value, const v8::PropertyCallbackInfo<Value>& args)
. - Exposed property getter signature has changed from
Handle<Value> Getter(Local<String> property, Local<Value> value, const v8::AccessorInfo& args)
void Setter(Local<String> property, Local<Value> value, const v8::PropertyCallbackInfo<Value>& args)
. - Similar changes have been made to property enumerators, property deleters, property query, index getter, index setter, index enumerator, index deleter, index query.
- V8 objects instantiated in C++ now require an
Isolate*
argument as the first argument. In most cases it is OK to simply passv8::Isolate::GetCurrent()
, e.g.Date::New(Isolate::GetCurrent(), time)
, orString::NewFromUtf8(Isolate::GetCurrent(), "foobar")
. HandleScope scope
now requires anIsolate*
argument, i.e.HandleScope scope(isolate)
, in most casesv8::Isolate::GetCurrent()
is OK.- Similar changes have been made to
Locker
andUnlocker
. - V8 objects that need to "escape" a scope should be enclosed in a
EscapableHandleScope
rather than aHandleScope
and should be returned withscope.Escape(value)
. - Exceptions are now thrown from isolates with
isolate->ThrowException(ExceptionObject)
. Context::GetCurrent()
must now be done on an isolate, e.g.Isolate::GetCurrent()->GetCurrentContext()
.String::NewSymbol()
has been removed, use plain strings instead.String::New()
has been removed, useString::NewFromUtf8()
instead.Persistent
objects no longer inherit fromHandle
and cannot be instantiated with another object. Instead, thePersistent
should simply be declared, e.g.Persistent<Type> handle
and then have aLocal
assigned to it withhandle.Reset(isolate, value)
. To get aLocal
from aPersistent
you must instantiate it as the argument, i.e.Local::New(Isolate*, Persistent)
.
- 更新
node::Buffer::New()
来直接返回一个Handle
, 这样就没有必要再去获取handle_
属性. - 更新
node::MakeCallback()
它需要Isolate*
作为第一个参数. 通常情况Isolate::GetCurrent()
就已经够用.