Skip to content

fs: make FSWatcher.start private #29905

New issue

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

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

Already on GitHub? # to your account

Closed

Conversation

lholmquist
Copy link
Contributor

@lholmquist lholmquist commented Oct 9, 2019

  • This is a semver-major change to rename the FSWatcher.start
    function to FSWatcher._start to make it private

Also see #29872

The motivation here is that it serves no purpose to the end user.
An instance of FSWatcher is returned when a user calls fs.watch,
which will call the start method. A user can't create an instance
of a FSWatcher directly. If the start method is called by a user
it is a noop since the watcher has already started. Calling start
after a watcher has closed is also a noop

@addaleax @cjihrig I went straight for changing the function to private, do we need an entry or anything in the deprecations.md?

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

* This is a semver-major change to rename the FSWatcher.start
function to FSWatcher._start to make it private

The motivation here is that it serves no purpose to the end user.
An instance of FSWatcher is returned when a user calls fs.watch,
which will call the start method.  A user can't create an instance
of a FSWatcher directly.  If the start method is called by a user
it is a noop since the watcher has already started.  Calling start
after a watcher has closed is also a noop
@nodejs-github-bot nodejs-github-bot added the fs Issues and PRs related to the fs subsystem / file system. label Oct 9, 2019
Copy link
Member

@addaleax addaleax left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can also use a symbol instead of an underscore prefix (we’ve been doing that a lot more since symbols became available), and the tests for .start() can also be dropped completely imo

@lholmquist
Copy link
Contributor Author

@addaleax good to know about the symbols. I don't suppose you have a link to that usage handy :)

@addaleax
Copy link
Member

addaleax commented Oct 9, 2019

@lholmquist There is some info in https://github.com/nodejs/node/blob/master/doc/guides/using-symbols.md – a basic usage example would be:

const kStart = Symbol('kStart');

FSWatcher.prototype[kStart] = function() { ... };

const watcher = new FSWatcher();
watcher[kStart]();

Copy link
Contributor

@cjihrig cjihrig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with the suggested switch to a symbol.

@lholmquist
Copy link
Contributor Author

I like the idea of using the Symbols, but i don't think it can be done in this case. The function that we are making private and the place where the call to start is made are in separate files.

I did try moving that call to the start function to be inside the FSWatcher function, so when new FSWatcher() is called, it would call start, but that didn't actually work

@addaleax
Copy link
Member

addaleax commented Oct 9, 2019

@lholmquist You could add the symbol to the exports of lib/internal/fs/watchers.fs and use that in lib/fs.js – it’s an internal module, so it’s still hard to access the symbol from userland code.

@lholmquist
Copy link
Contributor Author

@addaleax ok, i'll do that. wasn't sure if it was ok to add another export, but like you said, it is an internal module

@lholmquist
Copy link
Contributor Author

I added a commit that is using a Symbol. The reason for naming it the way i did was becuase i think something similar will probably happen with the StatWatcher.start method, so i wanted to make sure there was that differentiation

I also removed the tests for FSWatcher.start

@BridgeAR
Copy link
Member

BridgeAR commented Oct 9, 2019

What's the semverness here?

@lholmquist
Copy link
Contributor Author

@BridgeAR semver-major because it is removing a public non-documented api #29872 (comment)

@BridgeAR BridgeAR added the semver-major PRs that contain breaking changes and should be released in the next major version. label Oct 9, 2019
@nodejs-github-bot
Copy link
Collaborator

@Trott
Copy link
Member

Trott commented Oct 12, 2019

@Trott Trott added this to the 13.0.0 milestone Oct 12, 2019
@Trott
Copy link
Member

Trott commented Oct 12, 2019

Added to the 13.0.0 milestone, but if CITGM reveals issues, we can take it off.

@Trott Trott added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Oct 12, 2019
@Trott
Copy link
Member

Trott commented Oct 13, 2019

CITGM: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/2053/

Results look good.

@Trott
Copy link
Member

Trott commented Oct 13, 2019

Landed in 7eacb74

@Trott Trott closed this Oct 13, 2019
Trott pushed a commit to Trott/io.js that referenced this pull request Oct 13, 2019
* This is a semver-major change to rename the FSWatcher.start
function to FSWatcher._start to make it private

The motivation here is that it serves no purpose to the end user.
An instance of FSWatcher is returned when a user calls fs.watch,
which will call the start method.  A user can't create an instance
of a FSWatcher directly.  If the start method is called by a user
it is a noop since the watcher has already started.  Calling start
after a watcher has closed is also a noop

PR-URL: nodejs#29905
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
@jasnell
Copy link
Member

jasnell commented Oct 15, 2019

This really should have been a deprecation for the existing API

@Trott
Copy link
Member

Trott commented Oct 15, 2019

This really should have been a deprecation for the existing API

Not too late to revert and go that route if you feel strongly about it (and no opposition from @addaleax, @cjihrig, @BridgeAR...). This hasn't gone out in a release yet.

@jasnell
Copy link
Member

jasnell commented Oct 16, 2019

A new pr that adds a deprecated alias is good.... I'll be opening one in a few minutes see: #29989

jasnell added a commit to jasnell/node that referenced this pull request Oct 16, 2019
BethGriggs added a commit that referenced this pull request Oct 21, 2019
Notable changes:

- **assert**:
    - do not repeat .throws() code (Ruben Bridgewater)
        [#28263](#28263)
    - wrap validation function errors (Ruben Bridgewater)
        [#28263](#28263)
    - fix generatedMessage property (Ruben Bridgewater)
        [#28263](#28263)
    - improve class instance errors (Ruben Bridgewater)
        [#28263](#28263)
- **benchmark**:
    - use test/common/tmpdir consistently (João Reis)
        [#28858](#28858)
- **build**:
    - make full-icu the default for releases (Richard Lau)
        [#29887](#29887)
    - update minimum Xcode version for macOS (Michael Dawson)
        [#29622](#29622)
- **child_process**:
    - runtime deprecate \_channel (cjihrig)
        [#27949](#27949)
    - simplify spawn argument parsing (cjihrig)
        [#27854](#27854)
- **console**:
    - display timeEnd with suitable time unit (Xavier Stouder)
        [#29251](#29251)
- **deps**:
    - patch V8 to 7.8.279.14 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.12 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.10 (Myles Borins)
        [#29694](#29694)
    - update V8's postmortem script (cjihrig)
        [#29694](#29694)
    - V8: cherry-pick 716875d (Myles Borins)
        [#29694](#29694)
    - update V8 to 7.8.279.9 (Myles Borins)
        [#29694](#29694)
    - V8: cherry-pick b33af60 (Michaël Zasso)
        [#28016](#28016)
    - update V8 to 7.6.303.28 (Michaël Zasso)
        [#28016](#28016)
- **domain**:
    - error handler runs outside of its domain (Julien Gilli)
        [#26211](#26211)
- **fs**:
    - make FSWatcher.start private (Lucas Holmquist)
        [#29905](#29905)
    - add runtime deprecate for file stream open() (Robert Nagy)
    [#29061](#29061)
    - allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
    [#26572](#26572)
    - use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
    [#26572](#26572)
    - allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
    [#26572](#26572)
    - close file descriptor of promisified truncate (João Reis)
    [#28858](#28858)
- **http**:
    - do not emit end after aborted (Robert Nagy)
        [#27984](#27984)
    - don't emit 'data' after 'error' (Robert Nagy)
        [#28711](#28711)
    - remove legacy parser (Anna Henningsen)
        [#29589](#29589)
    - throw if 'host' agent header is not a string value
        (Giorgos Ntemiris)
        [#29568](#29568)
    - replace superfluous connection property with getter/setter
        (Robert Nagy)
        [#29015](#29015)
    - fix test where aborted should not be emitted (Robert Nagy)
        [#20077](#20077)
    - remove default 'timeout' listener on upgrade (Luigi Pinca)
        [#26030](#26030)
- **http, http2**:
    - remove default server timeout (Ali Ijaz Sheikh)
        [#27558](#27558)
- **http2**:
    - remove security revert flags (Anna Henningsen)
        [#29141](#29141)
    - remove callback-based padding (Anna Henningsen)
        [#29144](#29144)
- **lib**:
    - rename validateInteger to validateSafeInteger (Zach Bjornson)
        [#26572](#26572)
    - correct error.errno to always be numeric (Joyee Cheung)
        [#28140](#28140)
    - no need to strip BOM or shebang for scripts (Refael Ackermann)
        [#27375](#27375)
    - rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
        [#27768](#27768)
- **module**:
    - runtime deprecate createRequireFromPath() (cjihrig)
        [#27951](#27951)
- **readline**:
    - error on falsy values for callback (Sam Roberts)
        [#28109](#28109)
- **repl**:
    - close file descriptor of history file (João Reis)
        [#28858](#28858)
- **src**:
    - bring 425 status code name into accordance with RFC 8470
        (Sergei Osipov)
        [#29880](#29880)
    - update NODE\_MODULE\_VERSION to 79 (Myles Borins)
        [#29694](#29694)
    - update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
        [#28918](#28918)
    - add error codes to errors thrown in C++ (Yaniv Friedensohn)
        [#27700](#27700)
    - use non-deprecated overload of V8::SetFlagsFromString
        (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
        [#27375](#27375)
    - make process.env.TZ setter clear tz cache (Ben Noordhuis)
        [#20026](#20026)
    - enable V8's WASM trap handlers (Gus Caplan)
        [#27246](#27246)
- **stream**:
    - throw unhandled error for readable with autoDestroy (Robert Nagy)
        [#29806](#29806)
    - always invoke callback before emitting error (Robert Nagy)
        [#29293](#29293)
    - invoke callback before emitting error always (Robert Nagy)
        [#29293](#29293)
    - do not flush destroyed writable (Robert Nagy)
        [#29028](#29028)
    - don't emit finish on error (Robert Nagy)
        [#28979](#28979)
    - disallow stream methods on finished stream (Robert Nagy)
        [#28687](#28687)
    - do not emit after 'error' (Robert Nagy)
        [#28708](#28708)
    - fix destroy() behavior (Robert Nagy)
        [#29058](#29058)
    - simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
        [#28583](#28583)
- **tools**:
    - patch V8 to run on older XCode versions (Ujjwal Sharma)
        [#29694](#29694)
    - update V8 gypfiles (Michaël Zasso)
        [#29694](#29694)
    - support full-icu by default (Steven R. Loomis)
        [#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
    (Ruben Bridgewater)
    [#29824](#29824)

PR-URL: #29504
BethGriggs added a commit that referenced this pull request Oct 21, 2019
Notable changes:

- **assert**:
    - do not repeat .throws() code (Ruben Bridgewater)
        [#28263](#28263)
    - wrap validation function errors (Ruben Bridgewater)
        [#28263](#28263)
    - fix generatedMessage property (Ruben Bridgewater)
        [#28263](#28263)
    - improve class instance errors (Ruben Bridgewater)
        [#28263](#28263)
- **benchmark**:
    - use test/common/tmpdir consistently (João Reis)
        [#28858](#28858)
- **build**:
    - make full-icu the default for releases (Richard Lau)
        [#29887](#29887)
    - update minimum Xcode version for macOS (Michael Dawson)
        [#29622](#29622)
- **child_process**:
    - runtime deprecate \_channel (cjihrig)
        [#27949](#27949)
    - simplify spawn argument parsing (cjihrig)
        [#27854](#27854)
- **console**:
    - display timeEnd with suitable time unit (Xavier Stouder)
        [#29251](#29251)
- **deps**:
    - patch V8 to 7.8.279.14 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.12 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.10 (Myles Borins)
        [#29694](#29694)
    - update V8's postmortem script (cjihrig)
        [#29694](#29694)
    - V8: cherry-pick 716875d (Myles Borins)
        [#29694](#29694)
    - update V8 to 7.8.279.9 (Myles Borins)
        [#29694](#29694)
    - V8: cherry-pick b33af60 (Michaël Zasso)
        [#28016](#28016)
    - update V8 to 7.6.303.28 (Michaël Zasso)
        [#28016](#28016)
- **domain**:
    - error handler runs outside of its domain (Julien Gilli)
        [#26211](#26211)
- **fs**:
    - make FSWatcher.start private (Lucas Holmquist)
        [#29905](#29905)
    - add runtime deprecate for file stream open() (Robert Nagy)
    [#29061](#29061)
    - allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
    [#26572](#26572)
    - use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
    [#26572](#26572)
    - allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
    [#26572](#26572)
    - close file descriptor of promisified truncate (João Reis)
    [#28858](#28858)
- **http**:
    - do not emit end after aborted (Robert Nagy)
        [#27984](#27984)
    - don't emit 'data' after 'error' (Robert Nagy)
        [#28711](#28711)
    - remove legacy parser (Anna Henningsen)
        [#29589](#29589)
    - throw if 'host' agent header is not a string value
        (Giorgos Ntemiris)
        [#29568](#29568)
    - replace superfluous connection property with getter/setter
        (Robert Nagy)
        [#29015](#29015)
    - fix test where aborted should not be emitted (Robert Nagy)
        [#20077](#20077)
    - remove default 'timeout' listener on upgrade (Luigi Pinca)
        [#26030](#26030)
- **http, http2**:
    - remove default server timeout (Ali Ijaz Sheikh)
        [#27558](#27558)
- **http2**:
    - remove security revert flags (Anna Henningsen)
        [#29141](#29141)
    - remove callback-based padding (Anna Henningsen)
        [#29144](#29144)
- **lib**:
    - rename validateInteger to validateSafeInteger (Zach Bjornson)
        [#26572](#26572)
    - correct error.errno to always be numeric (Joyee Cheung)
        [#28140](#28140)
    - no need to strip BOM or shebang for scripts (Refael Ackermann)
        [#27375](#27375)
    - rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
        [#27768](#27768)
- **module**:
    - runtime deprecate createRequireFromPath() (cjihrig)
        [#27951](#27951)
- **readline**:
    - error on falsy values for callback (Sam Roberts)
        [#28109](#28109)
- **repl**:
    - close file descriptor of history file (João Reis)
        [#28858](#28858)
- **src**:
    - bring 425 status code name into accordance with RFC 8470
        (Sergei Osipov)
        [#29880](#29880)
    - update NODE\_MODULE\_VERSION to 79 (Myles Borins)
        [#29694](#29694)
    - update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
        [#28918](#28918)
    - add error codes to errors thrown in C++ (Yaniv Friedensohn)
        [#27700](#27700)
    - use non-deprecated overload of V8::SetFlagsFromString
        (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
        [#27375](#27375)
    - make process.env.TZ setter clear tz cache (Ben Noordhuis)
        [#20026](#20026)
    - enable V8's WASM trap handlers (Gus Caplan)
        [#27246](#27246)
- **stream**:
    - throw unhandled error for readable with autoDestroy (Robert Nagy)
        [#29806](#29806)
    - always invoke callback before emitting error (Robert Nagy)
        [#29293](#29293)
    - invoke callback before emitting error always (Robert Nagy)
        [#29293](#29293)
    - do not flush destroyed writable (Robert Nagy)
        [#29028](#29028)
    - don't emit finish on error (Robert Nagy)
        [#28979](#28979)
    - disallow stream methods on finished stream (Robert Nagy)
        [#28687](#28687)
    - do not emit after 'error' (Robert Nagy)
        [#28708](#28708)
    - fix destroy() behavior (Robert Nagy)
        [#29058](#29058)
    - simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
        [#28583](#28583)
- **tools**:
    - patch V8 to run on older XCode versions (Ujjwal Sharma)
        [#29694](#29694)
    - update V8 gypfiles (Michaël Zasso)
        [#29694](#29694)
    - support full-icu by default (Steven R. Loomis)
        [#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
    (Ruben Bridgewater)
    [#29824](#29824)

PR-URL: #29504
BethGriggs added a commit that referenced this pull request Oct 21, 2019
Notable changes:

- **assert**:
    - do not repeat .throws() code (Ruben Bridgewater)
        [#28263](#28263)
    - wrap validation function errors (Ruben Bridgewater)
        [#28263](#28263)
    - fix generatedMessage property (Ruben Bridgewater)
        [#28263](#28263)
    - improve class instance errors (Ruben Bridgewater)
        [#28263](#28263)
- **benchmark**:
    - use test/common/tmpdir consistently (João Reis)
        [#28858](#28858)
- **build**:
    - make full-icu the default for releases (Richard Lau)
        [#29887](#29887)
    - update minimum Xcode version for macOS (Michael Dawson)
        [#29622](#29622)
- **child_process**:
    - runtime deprecate \_channel (cjihrig)
        [#27949](#27949)
    - simplify spawn argument parsing (cjihrig)
        [#27854](#27854)
- **console**:
    - display timeEnd with suitable time unit (Xavier Stouder)
        [#29251](#29251)
- **deps**:
    - patch V8 to 7.8.279.14 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.12 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.10 (Myles Borins)
        [#29694](#29694)
    - update V8's postmortem script (cjihrig)
        [#29694](#29694)
    - V8: cherry-pick 716875d (Myles Borins)
        [#29694](#29694)
    - update V8 to 7.8.279.9 (Myles Borins)
        [#29694](#29694)
    - V8: cherry-pick b33af60 (Michaël Zasso)
        [#28016](#28016)
    - update V8 to 7.6.303.28 (Michaël Zasso)
        [#28016](#28016)
- **domain**:
    - error handler runs outside of its domain (Julien Gilli)
        [#26211](#26211)
- **fs**:
    - make FSWatcher.start private (Lucas Holmquist)
        [#29905](#29905)
    - add runtime deprecate for file stream open() (Robert Nagy)
    [#29061](#29061)
    - allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
    [#26572](#26572)
    - use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
    [#26572](#26572)
    - allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
    [#26572](#26572)
    - close file descriptor of promisified truncate (João Reis)
    [#28858](#28858)
- **http**:
    - do not emit end after aborted (Robert Nagy)
        [#27984](#27984)
    - don't emit 'data' after 'error' (Robert Nagy)
        [#28711](#28711)
    - remove legacy parser (Anna Henningsen)
        [#29589](#29589)
    - throw if 'host' agent header is not a string value
        (Giorgos Ntemiris)
        [#29568](#29568)
    - replace superfluous connection property with getter/setter
        (Robert Nagy)
        [#29015](#29015)
    - fix test where aborted should not be emitted (Robert Nagy)
        [#20077](#20077)
    - remove default 'timeout' listener on upgrade (Luigi Pinca)
        [#26030](#26030)
- **http, http2**:
    - remove default server timeout (Ali Ijaz Sheikh)
        [#27558](#27558)
- **http2**:
    - remove security revert flags (Anna Henningsen)
        [#29141](#29141)
    - remove callback-based padding (Anna Henningsen)
        [#29144](#29144)
- **lib**:
    - rename validateInteger to validateSafeInteger (Zach Bjornson)
        [#26572](#26572)
    - correct error.errno to always be numeric (Joyee Cheung)
        [#28140](#28140)
    - no need to strip BOM or shebang for scripts (Refael Ackermann)
        [#27375](#27375)
    - rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
        [#27768](#27768)
- **module**:
    - runtime deprecate createRequireFromPath() (cjihrig)
        [#27951](#27951)
- **readline**:
    - error on falsy values for callback (Sam Roberts)
        [#28109](#28109)
- **repl**:
    - close file descriptor of history file (João Reis)
        [#28858](#28858)
- **src**:
    - bring 425 status code name into accordance with RFC 8470
        (Sergei Osipov)
        [#29880](#29880)
    - update NODE\_MODULE\_VERSION to 79 (Myles Borins)
        [#29694](#29694)
    - update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
        [#28918](#28918)
    - add error codes to errors thrown in C++ (Yaniv Friedensohn)
        [#27700](#27700)
    - use non-deprecated overload of V8::SetFlagsFromString
        (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
        [#27375](#27375)
    - make process.env.TZ setter clear tz cache (Ben Noordhuis)
        [#20026](#20026)
    - enable V8's WASM trap handlers (Gus Caplan)
        [#27246](#27246)
- **stream**:
    - throw unhandled error for readable with autoDestroy (Robert Nagy)
        [#29806](#29806)
    - always invoke callback before emitting error (Robert Nagy)
        [#29293](#29293)
    - invoke callback before emitting error always (Robert Nagy)
        [#29293](#29293)
    - do not flush destroyed writable (Robert Nagy)
        [#29028](#29028)
    - don't emit finish on error (Robert Nagy)
        [#28979](#28979)
    - disallow stream methods on finished stream (Robert Nagy)
        [#28687](#28687)
    - do not emit after 'error' (Robert Nagy)
        [#28708](#28708)
    - fix destroy() behavior (Robert Nagy)
        [#29058](#29058)
    - simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
        [#28583](#28583)
- **tools**:
    - patch V8 to run on older XCode versions (Ujjwal Sharma)
        [#29694](#29694)
    - update V8 gypfiles (Michaël Zasso)
        [#29694](#29694)
    - support full-icu by default (Steven R. Loomis)
        [#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
    (Ruben Bridgewater)
    [#29824](#29824)

PR-URL: #29504
BethGriggs added a commit that referenced this pull request Oct 22, 2019
Notable changes:

- **assert**:
    - do not repeat .throws() code (Ruben Bridgewater)
        [#28263](#28263)
    - wrap validation function errors (Ruben Bridgewater)
        [#28263](#28263)
    - fix generatedMessage property (Ruben Bridgewater)
        [#28263](#28263)
    - improve class instance errors (Ruben Bridgewater)
        [#28263](#28263)
- **benchmark**:
    - use test/common/tmpdir consistently (João Reis)
        [#28858](#28858)
- **build**:
    - make full-icu the default for releases (Richard Lau)
        [#29887](#29887)
    - update minimum Xcode version for macOS (Michael Dawson)
        [#29622](#29622)
- **child_process**:
    - runtime deprecate \_channel (cjihrig)
        [#27949](#27949)
    - simplify spawn argument parsing (cjihrig)
        [#27854](#27854)
- **console**:
    - display timeEnd with suitable time unit (Xavier Stouder)
        [#29251](#29251)
- **deps**:
    - patch V8 to 7.8.279.14 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.12 (Myles Borins)
        [#29694](#29694)
    - patch V8 to 7.8.279.10 (Myles Borins)
        [#29694](#29694)
    - update V8's postmortem script (cjihrig)
        [#29694](#29694)
    - V8: cherry-pick 716875d (Myles Borins)
        [#29694](#29694)
    - update V8 to 7.8.279.9 (Myles Borins)
        [#29694](#29694)
    - V8: cherry-pick b33af60 (Michaël Zasso)
        [#28016](#28016)
    - update V8 to 7.6.303.28 (Michaël Zasso)
        [#28016](#28016)
- **domain**:
    - error handler runs outside of its domain (Julien Gilli)
        [#26211](#26211)
- **fs**:
    - make FSWatcher.start private (Lucas Holmquist)
        [#29905](#29905)
    - add runtime deprecate for file stream open() (Robert Nagy)
    [#29061](#29061)
    - allow int64 offset in fs.write/writeSync/fd.write (Zach Bjornson)
    [#26572](#26572)
    - use IsSafeJsInt instead of IsNumber for ftruncate (Zach Bjornson)
    [#26572](#26572)
    - allow int64 offset in fs.read/readSync/fd.read (Zach Bjornson)
    [#26572](#26572)
    - close file descriptor of promisified truncate (João Reis)
    [#28858](#28858)
- **http**:
    - do not emit end after aborted (Robert Nagy)
        [#27984](#27984)
    - don't emit 'data' after 'error' (Robert Nagy)
        [#28711](#28711)
    - remove legacy parser (Anna Henningsen)
        [#29589](#29589)
    - throw if 'host' agent header is not a string value
        (Giorgos Ntemiris)
        [#29568](#29568)
    - replace superfluous connection property with getter/setter
        (Robert Nagy)
        [#29015](#29015)
    - fix test where aborted should not be emitted (Robert Nagy)
        [#20077](#20077)
    - remove default 'timeout' listener on upgrade (Luigi Pinca)
        [#26030](#26030)
- **http, http2**:
    - remove default server timeout (Ali Ijaz Sheikh)
        [#27558](#27558)
- **http2**:
    - remove security revert flags (Anna Henningsen)
        [#29141](#29141)
    - remove callback-based padding (Anna Henningsen)
        [#29144](#29144)
- **lib**:
    - rename validateInteger to validateSafeInteger (Zach Bjornson)
        [#26572](#26572)
    - correct error.errno to always be numeric (Joyee Cheung)
        [#28140](#28140)
    - no need to strip BOM or shebang for scripts (Refael Ackermann)
        [#27375](#27375)
    - rework logic of stripping BOM+Shebang from commonjs (Gus Caplan)
        [#27768](#27768)
- **module**:
    - runtime deprecate createRequireFromPath() (cjihrig)
        [#27951](#27951)
- **readline**:
    - error on falsy values for callback (Sam Roberts)
        [#28109](#28109)
- **repl**:
    - close file descriptor of history file (João Reis)
        [#28858](#28858)
- **src**:
    - bring 425 status code name into accordance with RFC 8470
        (Sergei Osipov)
        [#29880](#29880)
    - update NODE\_MODULE\_VERSION to 79 (Myles Borins)
        [#29694](#29694)
    - update NODE\_MODULE\_VERSION to 78 (Michaël Zasso)
        [#28918](#28918)
    - add error codes to errors thrown in C++ (Yaniv Friedensohn)
        [#27700](#27700)
    - use non-deprecated overload of V8::SetFlagsFromString
        (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 77 (Michaël Zasso)
        [#28016](#28016)
    - update NODE\_MODULE\_VERSION to 74 (Refael Ackermann)
        [#27375](#27375)
    - make process.env.TZ setter clear tz cache (Ben Noordhuis)
        [#20026](#20026)
    - enable V8's WASM trap handlers (Gus Caplan)
        [#27246](#27246)
- **stream**:
    - throw unhandled error for readable with autoDestroy (Robert Nagy)
        [#29806](#29806)
    - always invoke callback before emitting error (Robert Nagy)
        [#29293](#29293)
    - invoke callback before emitting error always (Robert Nagy)
        [#29293](#29293)
    - do not flush destroyed writable (Robert Nagy)
        [#29028](#29028)
    - don't emit finish on error (Robert Nagy)
        [#28979](#28979)
    - disallow stream methods on finished stream (Robert Nagy)
        [#28687](#28687)
    - do not emit after 'error' (Robert Nagy)
        [#28708](#28708)
    - fix destroy() behavior (Robert Nagy)
        [#29058](#29058)
    - simplify `.pipe()` and `.unpipe()` in Readable (Weijia Wang)
        [#28583](#28583)
- **tools**:
    - patch V8 to run on older XCode versions (Ujjwal Sharma)
        [#29694](#29694)
    - update V8 gypfiles (Michaël Zasso)
        [#29694](#29694)
    - support full-icu by default (Steven R. Loomis)
        [#29522](#29522)
- **util**: validate formatWithOptions inspectOptions
    (Ruben Bridgewater)
    [#29824](#29824)

PR-URL: #29504
BethGriggs added a commit that referenced this pull request Oct 22, 2019
Notable changes:

* assert:
  * If the validation function passed to `assert.throws()` or
    `assert.rejects()` returns a value other than `true`, an assertion
    error will be thrown instead of the original error to highlight the
    programming mistake (Ruben Bridgewater).
    #28263
  * If a constructor function is passed to validate the instance of
    errors thrown in `assert.throws()` or `assert.reject()`, an
    assertion error will be thrown instead of the original error
    (Ruben Bridgewater).
    #28263
* build:
  * Node.js releases are now built with default full-icu support. This
    means that all locales supported by ICU are now included and
    Intl-related APIs may return different values than before
    (Richard Lau).
    #29887
  * The minimum Xcode version supported for macOS was increased to 10.
    It is still possible to build Node.js with Xcode 8 but this may no
    longer be the case in a future v13.x release (Michael Dawson).
    #29622
* child_process:
  * `ChildProcess._channel` (DEP0129) is now a Runtime deprecation
    (cjihrig).
    #27949
* console:
  * The output `console.timeEnd()` and `console.timeLog()` will now
    automatically select a suitable time unit instead of always using
    milliseconds (Xavier Stouder).
    #29251
* deps:
  * The V8 engine was updated to version 7.8. This includes performance
    improvements to object destructuring, memory usage and WebAssembly
    startup time (Myles Borins).
    #29694)
* domain:
  * The domain's error handler is now executed with the active domain
    set to the domain's parent to prevent inner recursion
    (Julien Gilli).
    #26211
* fs:
  * The undocumented method `FSWatcher.prototype.start()` was removed
    (Lucas Holmquist).
    #29905
  * Calling the `open()` method on a `ReadStream` or `WriteStream` now
    emits a runtime deprecation warning. The methods are supposed to be
    internal and should not be called by user code (Robert Nagy).
    #29061
  * `fs.read/write`, `fs.readSync/writeSync` and `fd.read/write` now
    accept any safe integer as their `offset` parameter. The value of
    `offset` is also no longer coerced, so a valid type must be passed
    to the functions (Zach Bjornson).
    #26572
* http:
  * Aborted requests no longer emit the `end` or `error` events after
    `aborted` (Robert Nagy).
    #27984
    #20077
  * Data will no longer be emitted after a socket error (Robert Nagy).
    #28711
  * The legacy HTTP parser (previously available under the
    `--http-parser=legacy` flag) was removed (Anna Henningsen).
    #29589
  * The `host` option for HTTP requests is now validated to be a string
    value (Giorgos Ntemiris).
    #29568
  * The `request.connection` and `response.connection` properties are now
    runtime deprecated. The equivalent `request.socket` and `response.socket`
    should be used instead (Robert Nagy).
    #29015
* http, http2:
  * The default server timeout was removed (Ali Ijaz Sheikh).
    #27558
  * Brought 425 status code name into accordance with RFC 8470. The name
    changed from "Unordered Collection" to "Too Early" (Sergei Osipov).
    #29880
* lib:
  * The `error.errno` property will now always be a number. To get the
    string value, use `error.code` instead (Joyee Cheung).
    #28140
* module:
  * `module.createRequireFromPath()` is deprecated. Use
    `module.createRequire()` instead (cjihrig).
    #27951
* src:
  * Changing the value of `process.env.TZ` will now clear the tz cache.
    This affects the default time zone used by methods such as
    `Date.prototype.toString` (Ben Noordhuis).
    #20026
* stream:
  * The timing and behavior of streams was consolidated for a number of
    edge cases. Please look at the individual commits below for more
    information.

PR-URL: #29504
BethGriggs added a commit that referenced this pull request Oct 22, 2019
Notable changes:

* assert:
  * If the validation function passed to `assert.throws()` or
    `assert.rejects()` returns a value other than `true`, an assertion
    error will be thrown instead of the original error to highlight the
    programming mistake (Ruben Bridgewater).
    #28263
  * If a constructor function is passed to validate the instance of
    errors thrown in `assert.throws()` or `assert.reject()`, an
    assertion error will be thrown instead of the original error
    (Ruben Bridgewater).
    #28263
* build:
  * Node.js releases are now built with default full-icu support. This
    means that all locales supported by ICU are now included and
    Intl-related APIs may return different values than before
    (Richard Lau).
    #29887
  * The minimum Xcode version supported for macOS was increased to 10.
    It is still possible to build Node.js with Xcode 8 but this may no
    longer be the case in a future v13.x release (Michael Dawson).
    #29622
* child_process:
  * `ChildProcess._channel` (DEP0129) is now a Runtime deprecation
    (cjihrig).
    #27949
* console:
  * The output `console.timeEnd()` and `console.timeLog()` will now
    automatically select a suitable time unit instead of always using
    milliseconds (Xavier Stouder).
    #29251
* deps:
  * The V8 engine was updated to version 7.8. This includes performance
    improvements to object destructuring, memory usage and WebAssembly
    startup time (Myles Borins).
    #29694)
* domain:
  * The domain's error handler is now executed with the active domain
    set to the domain's parent to prevent inner recursion
    (Julien Gilli).
    #26211
* fs:
  * The undocumented method `FSWatcher.prototype.start()` was removed
    (Lucas Holmquist).
    #29905
  * Calling the `open()` method on a `ReadStream` or `WriteStream` now
    emits a runtime deprecation warning. The methods are supposed to be
    internal and should not be called by user code (Robert Nagy).
    #29061
  * `fs.read/write`, `fs.readSync/writeSync` and `fd.read/write` now
    accept any safe integer as their `offset` parameter. The value of
    `offset` is also no longer coerced, so a valid type must be passed
    to the functions (Zach Bjornson).
    #26572
* http:
  * Aborted requests no longer emit the `end` or `error` events after
    `aborted` (Robert Nagy).
    #27984
    #20077
  * Data will no longer be emitted after a socket error (Robert Nagy).
    #28711
  * The legacy HTTP parser (previously available under the
    `--http-parser=legacy` flag) was removed (Anna Henningsen).
    #29589
  * The `host` option for HTTP requests is now validated to be a string
    value (Giorgos Ntemiris).
    #29568
  * The `request.connection` and `response.connection` properties are now
    runtime deprecated. The equivalent `request.socket` and `response.socket`
    should be used instead (Robert Nagy).
    #29015
* http, http2:
  * The default server timeout was removed (Ali Ijaz Sheikh).
    #27558
  * Brought 425 status code name into accordance with RFC 8470. The name
    changed from "Unordered Collection" to "Too Early" (Sergei Osipov).
    #29880
* lib:
  * The `error.errno` property will now always be a number. To get the
    string value, use `error.code` instead (Joyee Cheung).
    #28140
* module:
  * `module.createRequireFromPath()` is deprecated. Use
    `module.createRequire()` instead (cjihrig).
    #27951
* src:
  * Changing the value of `process.env.TZ` will now clear the tz cache.
    This affects the default time zone used by methods such as
    `Date.prototype.toString` (Ben Noordhuis).
    #20026
* stream:
  * The timing and behavior of streams was consolidated for a number of
    edge cases. Please look at the individual commits below for more
    information.

PR-URL: #29504
lholmquist added a commit to lholmquist/node that referenced this pull request Oct 29, 2019
* Motivation: In a previous PR, nodejs#29905, I made this method a private
method since it had no value to the user.

There was discussion that maybe it should have been a runtime deprecation
first, but was ultimatley decided that for this type of method, a
noop stub was a better option.

This Adds back in the method, but as a noop stub, while also keeping
the real implementation private
addaleax pushed a commit that referenced this pull request Nov 5, 2019
* Motivation: In a previous PR, #29905, I made this method a private
method since it had no value to the user.

There was discussion that maybe it should have been a runtime
deprecation first, but was ultimatley decided that for this
type of method, a noop stub was a better option.

This Adds back in the method, but as a noop stub, while also keeping
the real implementation private

PR-URL: #30160
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
MylesBorins pushed a commit that referenced this pull request Nov 17, 2019
* Motivation: In a previous PR, #29905, I made this method a private
method since it had no value to the user.

There was discussion that maybe it should have been a runtime
deprecation first, but was ultimatley decided that for this
type of method, a noop stub was a better option.

This Adds back in the method, but as a noop stub, while also keeping
the real implementation private

PR-URL: #30160
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. fs Issues and PRs related to the fs subsystem / file system. semver-major PRs that contain breaking changes and should be released in the next major version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants