New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

module: prioritize current directory for local lookup #5689

Closed
wants to merge 2 commits into
base: master
from

Conversation

Projects
None yet
10 participants
@phillipj
Member

phillipj commented Mar 13, 2016

  • Does make -j8 test (UNIX) or vcbuild test nosign (Windows) pass with
    this change (including linting)?
  • Is the commit message formatted according to CONTRIBUTING.md?
  • If this change fixes a bug (or a performance problem), is a regression
    test (or a benchmark) included?
  • Is a documentation update included (if this change modifies
    existing APIs, or introduces new ones)?

Affected core subsystem(s)

module, test

Description of change

This fixes an issue reported in #5684 about module in node_modules being preferred over a local file with the same name, when resolved in repl (or --eval mode). The bug originates from the fact that Module._resolveLookupPaths() puts node_modules before the current directory when run from repl or --eval.

Previous results from Module._resolveLookupPaths('./lodash'):

[ './lodash',
  [ '/Users/phillipj/Dev/repl-lookup-test/node_modules',
    '/Users/phillipj/Dev/node_modules',
    '/Users/phillipj/node_modules',
    '/Users/node_modules',
    '/node_modules',
    '.',
    '/Users/phillipj/.node_modules',
    '/Users/phillipj/.node_libraries',
    '/Users/phillipj/Dev/node/out/lib/node' ] ]

Fixed results from Module._resolveLookupPaths('./lodash'):

[ './lodash',
  [ '.',
    '/Users/phillipj/Dev/repl-lookup-test/node_modules',
    '/Users/phillipj/Dev/node_modules',
    '/Users/phillipj/node_modules',
    '/Users/node_modules',
    '/node_modules',
    '/Users/phillipj/.node_modules',
    '/Users/phillipj/.node_libraries',
    '/Users/phillipj/Dev/node/out/lib/node' ] ]
@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

@phillipj thanks for getting this in! I think it might make sense for you to include an extra test that I have written that can be found in MylesBorins@7f2f0cb

To quickly add that commit to your branch you can run the command

$ curl https://github.com/TheAlphaNerd/node/commit/7f2f0cb946d7889fcdef7aff9d895574da9c14b3.patch | git am --whitespace=fix

@phillipj phillipj force-pushed the phillipj:module-relative-lookup-fix branch Mar 13, 2016

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

@phillipj it looks like your test is failing the linter

/Users/thealphanerd/code/node/test/parallel/test-module-relative-lookup.js
   3:5  error  'common' is defined but never used             no-unused-vars
  11:1  error  Line 11 exceeds the maximum line length of 80  max-len
@phillipj

This comment has been minimized.

Member

phillipj commented Mar 13, 2016

Thanks for the protip cherry-picking that with ease @thealphanerd! Would you prefer two commits or should I squash your test into my initial commit?

@phillipj

This comment has been minimized.

Member

phillipj commented Mar 13, 2016

it looks like your test is failing the linter

Yupp, sorry about that. Just pushed an updated.

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

@phillipj I would keep them separate as you didn't write the code. Better to keep the blames on who wrote it 😄

@phillipj

This comment has been minimized.

Member

phillipj commented Mar 13, 2016

@thealphanerd haha good point :)

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

once you push the update I'll run CI + citgm... this is one of those fixes that could be argued to be either patch / major... let's see what we break 😄

@phillipj

This comment has been minimized.

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

citgm: https://ci.nodejs.org/job/thealphanerd-smoker/112/

It looks like things in smoker land might be weird... the results might not be useful until I have more time to dig into infra problems tomorrow

@phillipj

This comment has been minimized.

Member

phillipj commented Mar 13, 2016

Alright, fingers crossed CI will pass at least.

@mscdex mscdex added the semver-major label Mar 13, 2016

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

CI looks good... only failure was infra related

@benjamingr

This comment has been minimized.

Member

benjamingr commented Mar 13, 2016

LGTM. Thanks for the quick fix.

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 13, 2016

citgm has some failures, but they all seems to be unrelated. I would like to try and get another run going tomorrow though to confirm

@evanlucas

This comment has been minimized.

Member

evanlucas commented Mar 14, 2016

Was this a regression or has this always been the behavior?

@mscdex

This comment has been minimized.

Contributor

mscdex commented Mar 14, 2016

@evanlucas The behavior before this PR has existed at least since v0.10.

@jasnell

This comment has been minimized.

Member

jasnell commented Mar 14, 2016

/cc @nodejs/ctc

@phillipj

This comment has been minimized.

Member

phillipj commented Mar 18, 2016

I'm assuming @nodejs/ctc got pinged for a patch/major decision.

Although I fully acknowledge the fact we have to be a little too careful at times about what's decided to be a breaking change, I see this as a bug and therefore a patch.

FWIW I can't imagine someone out there relying on not being able to require their own local .js-file because it's over shadowed by a 3rd party module. That's very confusing at best and could potentially be a debugging nightmare.

@cjihrig

View changes

test/parallel/test-repl-require.js Outdated
});
process.on('exit', function() {
assert.strictEqual(false, /Cannot find module/.test(answer));
assert.strictEqual(false, /Error/.test(answer));
assert.strictEqual(true, /eye catcher/.test(answer));
assert.equal(answer, '\'eye catcher\'\n\'perhaps I work\'\n');

This comment has been minimized.

@cjihrig

cjihrig Mar 18, 2016

Contributor

Please use strictEqual() here.

@cjihrig

View changes

test/parallel/test-module-relative-lookup.js Outdated
require('../common');
var assert = require('assert');

This comment has been minimized.

@cjihrig

cjihrig Mar 18, 2016

Contributor

Can you remove this blank line.

@cjihrig

View changes

test/parallel/test-module-relative-lookup.js Outdated
var assert = require('assert');
var module = require('module');

This comment has been minimized.

@cjihrig

cjihrig Mar 18, 2016

Contributor

This one too.

@cjihrig

View changes

test/parallel/test-module-relative-lookup.js Outdated
'use strict';
require('../common');
var assert = require('assert');

This comment has been minimized.

@cjihrig

cjihrig Mar 18, 2016

Contributor

Instead of var, please make these const.

This comment has been minimized.

@phillipj

phillipj Mar 18, 2016

Member

As a side effect of using const, I had to add a prefix to avoid name collision with global.module. Settled for _module instead, if you'd rather see another name for it, don't hesitate to say so.

@cjihrig

View changes

test/parallel/test-module-relative-lookup.js Outdated
var lookupResults = module._resolveLookupPaths('./lodash');
var paths = lookupResults[1];
assert.equal(paths[0], '.',

This comment has been minimized.

@cjihrig

cjihrig Mar 18, 2016

Contributor

strictEqual() here please.

@cjihrig

This comment has been minimized.

Contributor

cjihrig commented Mar 18, 2016

Some comments, but LGTM pending CI.

@phillipj phillipj force-pushed the phillipj:module-relative-lookup-fix branch Mar 18, 2016

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 29, 2016

@Fishrock123 that stylus bug is unrelated

@phillipj

This comment has been minimized.

Member

phillipj commented Mar 29, 2016

@thealphanerd which means this is ready to land as is, right?

@MylesBorins

This comment has been minimized.

Member

MylesBorins commented Mar 29, 2016

none of the citgm results are a problem.

@Fishrock123

This comment has been minimized.

Member

Fishrock123 commented Mar 29, 2016

@phillipj I believe so. LGTM 🚢

phillipj and others added some commits Mar 13, 2016

module: prioritize current dir for local lookups
This fixes a bug where a 3rd party module found in node_modules,
would be preferred over a ./local module with the same name.

Fixes: #5684
PR-URL: #5689
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
test: update test-repl-require for local paths
Currently we are not testing that resolution of local paths is
resolved first in the repl. This addition to `test-repl-require`
adds an additional fixture an ensures we won't regress in the future

PR-URL: #5689
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>

@phillipj phillipj force-pushed the phillipj:module-relative-lookup-fix branch to fc19540 Mar 29, 2016

phillipj added a commit that referenced this pull request Mar 29, 2016

module: prioritize current dir for local lookups
This fixes a bug where a 3rd party module found in node_modules,
would be preferred over a ./local module with the same name.

Fixes: #5684
PR-URL: #5689
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>

phillipj added a commit that referenced this pull request Mar 29, 2016

test: update test-repl-require for local paths
Currently we are not testing that resolution of local paths is
resolved first in the repl. This addition to `test-repl-require`
adds an additional fixture an ensures we won't regress in the future

PR-URL: #5689
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
@phillipj

This comment has been minimized.

Member

phillipj commented Mar 29, 2016

Landed in d38503a and 652782d

@phillipj phillipj closed this Mar 29, 2016

@phillipj phillipj deleted the phillipj:module-relative-lookup-fix branch Mar 29, 2016

@jasnell jasnell referenced this pull request Apr 19, 2016

Closed

What is new in v6? #6264

jasnell added a commit that referenced this pull request Apr 26, 2016

2016-04-26, Version 6.0.0 (Current) Release
The following significant (semver-major) changes have been made since the
previous Node v5.0.0 release.

* Buffer
  * New Buffer constructors have been added
    [#4682](#4682)
  * Previously deprecated Buffer APIs are removed
    [#5048](#5048),
    [#4594](#4594)
  * Improved error handling [#4514](#4514)
* Cluster
  * Worker emitted as first argument in 'message' event
    [#5361](#5361).
* Crypto
  * Improved error handling [#3100](#3100),
    [#5611](#5611)
  * Simplified Certificate class bindings
    [#5382](#5382)
  * Improved control over FIPS mode
    [#5181](#5181)
  * pbkdf2 digest overloading is deprecated
    [#4047](#4047)
* Dependencies
  * Reintroduce shared c-ares build support
    [#5775](#5775).
  * V8 updated to 5.0.71.31 [#6111](#6111).
* DNS
  * Add resolvePtr API to query plain DNS PTR records
    [#4921](#4921).
* Domains
  * Clear stack when no error handler
  [#4659](#4659).
* File System
  * The `fs.realpath()` and `fs.realpathSync()` methods have been updated
    to use a more efficient libuv implementation. This change includes the
    removal of the `cache` argument and the method can throw new errors
    [#3594](#3594)
  * FS apis can now accept and return paths as Buffers
    [#5616](#5616).
  * Error handling and type checking improvements
    [#5616](#5616),
    [#5590](#5590),
    [#4518](#4518),
    [#3917](#3917).
  * fs.read's string interface is deprecated
    [#4525](#4525)
* HTTP
  * 'clientError' can now be used to return custom errors from an
    HTTP server [#4557](#4557).
* Modules
  * Current directory is now prioritized for local lookups
    [#5689](#5689)
  * Symbolic links are preserved when requiring modules
    [#5950](#5950)
* Net
  * DNS hints no longer implicitly set
    [#6021](#6021).
  * Improved error handling and type checking
    [#5981](#5981),
    [#5733](#5733),
    [#2904](#2904)
* Path
  * Improved type checking [#5348](#5348).
* Process
  * Introduce process warnings API
    [#4782](#4782).
  * Throw exception when non-function passed to nextTick
    [#3860](#3860).
* Readline
  * Emit key info unconditionally
    [#6024](#6024)
* REPL
  * Assignment to `_` will emit a warning.
    [#5535](#5535)
* Timers
  * Fail early when callback is not a function
    [#4362](#4362)
* TLS
  * Rename 'clientError' to 'tlsClientError'
    [#4557](#4557)
  * SHA1 used for sessionIdContext
    [#3866](#3866)
* TTY
  * Previously deprecated setRawMode wrapper is removed
    [#2528](#2528).
* Util
  * Changes to Error object formatting
    [#4582](#4582).
* Windows
  * Windows XP and Vista are no longer supported
    [#5167](#5167),
    [#5167](#5167).

jasnell added a commit that referenced this pull request Apr 26, 2016

2016-04-26, Version 6.0.0 (Current) Release
The following significant (semver-major) changes have been made since the
previous Node v5.0.0 release.

* Buffer
  * New Buffer constructors have been added
    [#4682](#4682)
  * Previously deprecated Buffer APIs are removed
    [#5048](#5048),
    [#4594](#4594)
  * Improved error handling [#4514](#4514)
* Cluster
  * Worker emitted as first argument in 'message' event
    [#5361](#5361).
* Crypto
  * Improved error handling [#3100](#3100),
    [#5611](#5611)
  * Simplified Certificate class bindings
    [#5382](#5382)
  * Improved control over FIPS mode
    [#5181](#5181)
  * pbkdf2 digest overloading is deprecated
    [#4047](#4047)
* Dependencies
  * Reintroduce shared c-ares build support
    [#5775](#5775).
  * V8 updated to 5.0.71.31 [#6111](#6111).
* DNS
  * Add resolvePtr API to query plain DNS PTR records
    [#4921](#4921).
* Domains
  * Clear stack when no error handler
  [#4659](#4659).
* File System
  * The `fs.realpath()` and `fs.realpathSync()` methods have been updated
    to use a more efficient libuv implementation. This change includes the
    removal of the `cache` argument and the method can throw new errors
    [#3594](#3594)
  * FS apis can now accept and return paths as Buffers
    [#5616](#5616).
  * Error handling and type checking improvements
    [#5616](#5616),
    [#5590](#5590),
    [#4518](#4518),
    [#3917](#3917).
  * fs.read's string interface is deprecated
    [#4525](#4525)
* HTTP
  * 'clientError' can now be used to return custom errors from an
    HTTP server [#4557](#4557).
* Modules
  * Current directory is now prioritized for local lookups
    [#5689](#5689)
  * Symbolic links are preserved when requiring modules
    [#5950](#5950)
* Net
  * DNS hints no longer implicitly set
    [#6021](#6021).
  * Improved error handling and type checking
    [#5981](#5981),
    [#5733](#5733),
    [#2904](#2904)
* Path
  * Improved type checking [#5348](#5348).
* Process
  * Introduce process warnings API
    [#4782](#4782).
  * Throw exception when non-function passed to nextTick
    [#3860](#3860).
* Readline
  * Emit key info unconditionally
    [#6024](#6024)
* REPL
  * Assignment to `_` will emit a warning.
    [#5535](#5535)
* Timers
  * Fail early when callback is not a function
    [#4362](#4362)
* TLS
  * Rename 'clientError' to 'tlsClientError'
    [#4557](#4557)
  * SHA1 used for sessionIdContext
    [#3866](#3866)
* TTY
  * Previously deprecated setRawMode wrapper is removed
    [#2528](#2528).
* Util
  * Changes to Error object formatting
    [#4582](#4582).
* Windows
  * Windows XP and Vista are no longer supported
    [#5167](#5167),
    [#5167](#5167).

jasnell added a commit that referenced this pull request Apr 26, 2016

2016-04-26, Version 6.0.0 (Current) Release
The following significant (semver-major) changes have been made since the
previous Node v5.0.0 release.

* Buffer
  * New Buffer constructors have been added
    [#4682](#4682)
  * Previously deprecated Buffer APIs are removed
    [#5048](#5048),
    [#4594](#4594)
  * Improved error handling [#4514](#4514)
* Cluster
  * Worker emitted as first argument in 'message' event
    [#5361](#5361).
* Crypto
  * Improved error handling [#3100](#3100),
    [#5611](#5611)
  * Simplified Certificate class bindings
    [#5382](#5382)
  * Improved control over FIPS mode
    [#5181](#5181)
  * pbkdf2 digest overloading is deprecated
    [#4047](#4047)
* Dependencies
  * Reintroduce shared c-ares build support
    [#5775](#5775).
  * V8 updated to 5.0.71.31 [#6111](#6111).
* DNS
  * Add resolvePtr API to query plain DNS PTR records
    [#4921](#4921).
* Domains
  * Clear stack when no error handler
  [#4659](#4659).
* File System
  * The `fs.realpath()` and `fs.realpathSync()` methods have been updated
    to use a more efficient libuv implementation. This change includes the
    removal of the `cache` argument and the method can throw new errors
    [#3594](#3594)
  * FS apis can now accept and return paths as Buffers
    [#5616](#5616).
  * Error handling and type checking improvements
    [#5616](#5616),
    [#5590](#5590),
    [#4518](#4518),
    [#3917](#3917).
  * fs.read's string interface is deprecated
    [#4525](#4525)
* HTTP
  * 'clientError' can now be used to return custom errors from an
    HTTP server [#4557](#4557).
* Modules
  * Current directory is now prioritized for local lookups
    [#5689](#5689)
  * Symbolic links are preserved when requiring modules
    [#5950](#5950)
* Net
  * DNS hints no longer implicitly set
    [#6021](#6021).
  * Improved error handling and type checking
    [#5981](#5981),
    [#5733](#5733),
    [#2904](#2904)
* OS X
  * MACOSX_DEPLOYMENT_TARGET has been bumped up to 10.7
    [#6402](#6402).
* Path
  * Improved type checking [#5348](#5348).
* Process
  * Introduce process warnings API
    [#4782](#4782).
  * Throw exception when non-function passed to nextTick
    [#3860](#3860).
* Readline
  * Emit key info unconditionally
    [#6024](#6024)
* REPL
  * Assignment to `_` will emit a warning.
    [#5535](#5535)
* Timers
  * Fail early when callback is not a function
    [#4362](#4362)
* TLS
  * Rename 'clientError' to 'tlsClientError'
    [#4557](#4557)
  * SHA1 used for sessionIdContext
    [#3866](#3866)
* TTY
  * Previously deprecated setRawMode wrapper is removed
    [#2528](#2528).
* Util
  * Changes to Error object formatting
    [#4582](#4582).
* Windows
  * Windows XP and Vista are no longer supported
    [#5167](#5167),
    [#5167](#5167).

jasnell added a commit that referenced this pull request Apr 26, 2016

2016-04-26, Version 6.0.0 (Current) Release
The following significant (semver-major) changes have been made since the
previous Node v5.0.0 release.

* Buffer
  * New Buffer constructors have been added
    [#4682](#4682)
  * Previously deprecated Buffer APIs are removed
    [#5048](#5048),
    [#4594](#4594)
  * Improved error handling [#4514](#4514)
* Cluster
  * Worker emitted as first argument in 'message' event
    [#5361](#5361).
* Crypto
  * Improved error handling [#3100](#3100),
    [#5611](#5611)
  * Simplified Certificate class bindings
    [#5382](#5382)
  * Improved control over FIPS mode
    [#5181](#5181)
  * pbkdf2 digest overloading is deprecated
    [#4047](#4047)
* Dependencies
  * Reintroduce shared c-ares build support
    [#5775](#5775).
  * V8 updated to 5.0.71.31 [#6111](#6111).
* DNS
  * Add resolvePtr API to query plain DNS PTR records
    [#4921](#4921).
* Domains
  * Clear stack when no error handler
  [#4659](#4659).
* File System
  * The `fs.realpath()` and `fs.realpathSync()` methods have been updated
    to use a more efficient libuv implementation. This change includes the
    removal of the `cache` argument and the method can throw new errors
    [#3594](#3594)
  * FS apis can now accept and return paths as Buffers
    [#5616](#5616).
  * Error handling and type checking improvements
    [#5616](#5616),
    [#5590](#5590),
    [#4518](#4518),
    [#3917](#3917).
  * fs.read's string interface is deprecated
    [#4525](#4525)
* HTTP
  * 'clientError' can now be used to return custom errors from an
    HTTP server [#4557](#4557).
* Modules
  * Current directory is now prioritized for local lookups
    [#5689](#5689)
  * Symbolic links are preserved when requiring modules
    [#5950](#5950)
* Net
  * DNS hints no longer implicitly set
    [#6021](#6021).
  * Improved error handling and type checking
    [#5981](#5981),
    [#5733](#5733),
    [#2904](#2904)
* OS X
  * MACOSX_DEPLOYMENT_TARGET has been bumped up to 10.7
    [#6402](#6402).
* Path
  * Improved type checking [#5348](#5348).
* Process
  * Introduce process warnings API
    [#4782](#4782).
  * Throw exception when non-function passed to nextTick
    [#3860](#3860).
* Readline
  * Emit key info unconditionally
    [#6024](#6024)
* REPL
  * Assignment to `_` will emit a warning.
    [#5535](#5535)
* Timers
  * Fail early when callback is not a function
    [#4362](#4362)
* TLS
  * Rename 'clientError' to 'tlsClientError'
    [#4557](#4557)
  * SHA1 used for sessionIdContext
    [#3866](#3866)
* TTY
  * Previously deprecated setRawMode wrapper is removed
    [#2528](#2528).
* Util
  * Changes to Error object formatting
    [#4582](#4582).
* Windows
  * Windows XP and Vista are no longer supported
    [#5167](#5167),
    [#5167](#5167).

jasnell added a commit that referenced this pull request Apr 26, 2016

2016-04-26, Version 6.0.0 (Current) Release
The following significant (semver-major) changes have been made since the
previous Node v5.0.0 release.

* Buffer
  * New Buffer constructors have been added
    [#4682](#4682)
  * Previously deprecated Buffer APIs are removed
    [#5048](#5048),
    [#4594](#4594)
  * Improved error handling [#4514](#4514)
* Cluster
  * Worker emitted as first argument in 'message' event
    [#5361](#5361).
* Crypto
  * Improved error handling [#3100](#3100),
    [#5611](#5611)
  * Simplified Certificate class bindings
    [#5382](#5382)
  * Improved control over FIPS mode
    [#5181](#5181)
  * pbkdf2 digest overloading is deprecated
    [#4047](#4047)
* Dependencies
  * Reintroduce shared c-ares build support
    [#5775](#5775).
  * V8 updated to 5.0.71.31 [#6111](#6111).
* DNS
  * Add resolvePtr API to query plain DNS PTR records
    [#4921](#4921).
* Domains
  * Clear stack when no error handler
  [#4659](#4659).
* File System
  * The `fs.realpath()` and `fs.realpathSync()` methods have been updated
    to use a more efficient libuv implementation. This change includes the
    removal of the `cache` argument and the method can throw new errors
    [#3594](#3594)
  * FS apis can now accept and return paths as Buffers
    [#5616](#5616).
  * Error handling and type checking improvements
    [#5616](#5616),
    [#5590](#5590),
    [#4518](#4518),
    [#3917](#3917).
  * fs.read's string interface is deprecated
    [#4525](#4525)
* HTTP
  * 'clientError' can now be used to return custom errors from an
    HTTP server [#4557](#4557).
* Modules
  * Current directory is now prioritized for local lookups
    [#5689](#5689)
  * Symbolic links are preserved when requiring modules
    [#5950](#5950)
* Net
  * DNS hints no longer implicitly set
    [#6021](#6021).
  * Improved error handling and type checking
    [#5981](#5981),
    [#5733](#5733),
    [#2904](#2904)
* OS X
  * MACOSX_DEPLOYMENT_TARGET has been bumped up to 10.7
    [#6402](#6402).
* Path
  * Improved type checking [#5348](#5348).
* Process
  * Introduce process warnings API
    [#4782](#4782).
  * Throw exception when non-function passed to nextTick
    [#3860](#3860).
* Readline
  * Emit key info unconditionally
    [#6024](#6024)
* REPL
  * Assignment to `_` will emit a warning.
    [#5535](#5535)
* Timers
  * Fail early when callback is not a function
    [#4362](#4362)
* TLS
  * Rename 'clientError' to 'tlsClientError'
    [#4557](#4557)
  * SHA1 used for sessionIdContext
    [#3866](#3866)
* TTY
  * Previously deprecated setRawMode wrapper is removed
    [#2528](#2528).
* Util
  * Changes to Error object formatting
    [#4582](#4582).
* Windows
  * Windows XP and Vista are no longer supported
    [#5167](#5167),
    [#5167](#5167).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment