diff --git a/doc/api/cli.md b/doc/api/cli.md
index b5b31aac2b8e9c..4d3df97df530e6 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -172,7 +172,7 @@ Silence all process warnings (including deprecations).
### `--expose-http2`
Enable the experimental `'http2'` module.
diff --git a/doc/api/http2.md b/doc/api/http2.md
index 78e2fad23a884b..eaf88483cd0bd4 100755
--- a/doc/api/http2.md
+++ b/doc/api/http2.md
@@ -69,7 +69,7 @@ req.end();
### Class: Http2Session
* Extends: {EventEmitter}
@@ -103,14 +103,14 @@ solely on the API of the `Http2Session`.
#### Event: 'close'
The `'close'` event is emitted once the `Http2Session` has been terminated.
#### Event: 'connect'
The `'connect'` event is emitted once the `Http2Session` has been successfully
@@ -120,7 +120,7 @@ connected to the remote peer and communication may begin.
#### Event: 'error'
The `'error'` event is emitted when an error occurs during the processing of
@@ -128,7 +128,7 @@ an `Http2Session`.
#### Event: 'frameError'
The `'frameError'` event is emitted when an error occurs while attempting to
@@ -150,7 +150,7 @@ immediately following the `'frameError'` event.
#### Event: 'goaway'
The `'goaway'` event is emitted when a GOAWAY frame is received. When invoked,
@@ -167,7 +167,7 @@ the handler function will receive three arguments:
#### Event: 'localSettings'
The `'localSettings'` event is emitted when an acknowledgement SETTINGS frame
@@ -188,7 +188,7 @@ session.on('localSettings', (settings) => {
#### Event: 'remoteSettings'
The `'remoteSettings'` event is emitted when a new SETTINGS frame is received
@@ -203,7 +203,7 @@ session.on('remoteSettings', (settings) => {
#### Event: 'stream'
The `'stream'` event is emitted when a new `Http2Stream` is created. When
@@ -256,7 +256,7 @@ server.listen(80);
#### Event: 'socketError'
The `'socketError'` event is emitted when an `'error'` is emitted on the
@@ -269,7 +269,7 @@ registered that will, by default, forward the event on to the owning
#### Event: 'timeout'
After the `http2session.setTimeout()` method is used to set the timeout period
@@ -283,7 +283,7 @@ session.on('timeout', () => { /** .. **/ });
#### http2session.destroy()
* Returns: {undefined}
@@ -293,7 +293,7 @@ Immediately terminates the `Http2Session` and the associated `net.Socket` or
#### http2session.destroyed
* Value: {boolean}
@@ -303,7 +303,7 @@ longer be used, otherwise `false`.
#### http2session.localSettings
* Value: {[Settings Object][]}
@@ -313,7 +313,7 @@ A prototype-less object describing the current local settings of this
#### http2session.pendingSettingsAck
* Value: {boolean}
@@ -325,7 +325,7 @@ frames have been acknowledged.
#### http2session.remoteSettings
* Value: {[Settings Object][]}
@@ -335,7 +335,7 @@ A prototype-less object describing the current remote settings of this
#### http2session.request(headers[, options])
* `headers` {[Headers Object][]}
@@ -392,7 +392,7 @@ fields.
#### http2session.rstStream(stream, code)
* stream {Http2Stream}
@@ -405,7 +405,7 @@ Sends an `RST_STREAM` frame to the connected HTTP/2 peer, causing the given
#### http2session.setTimeout(msecs, callback)
* `msecs` {number}
@@ -418,7 +418,7 @@ registered as a listener on the `'timeout'` event.
#### http2session.shutdown(options[, callback])
* `options` {Object}
@@ -460,7 +460,7 @@ session.shutdown({
#### http2session.socket
* Value: {net.Socket|tls.TLSSocket}
@@ -474,7 +474,7 @@ details.
#### http2session.state
* Value: {Object}
@@ -492,7 +492,7 @@ An object describing the current status of this `Http2Session`.
#### http2session.priority(stream, options)
* `stream` {Http2Stream}
@@ -514,7 +514,7 @@ Updates the priority for the given `Http2Stream` instance.
#### http2session.settings(settings)
* `settings` {[Settings Object][]}
@@ -534,7 +534,7 @@ pending.
#### http2session.type
* Value: {number}
@@ -546,7 +546,7 @@ client.
### Class: Http2Stream
* Extends: {Duplex}
@@ -619,7 +619,7 @@ destroyed.
#### Event: 'aborted'
The `'aborted'` event is emitted whenever a `Http2Stream` instance is
@@ -630,7 +630,7 @@ writable side has not been ended.
#### Event: 'error'
The `'error'` event is emitted when an error occurs during the processing of
@@ -638,7 +638,7 @@ an `Http2Stream`.
#### Event: 'frameError'
The `'frameError'` event is emitted when an error occurs while attempting to
@@ -649,7 +649,7 @@ error code. The `Http2Stream` instance will be destroyed immediately after the
#### Event: 'streamClosed'
The `'streamClosed'` event is emitted when the `Http2Stream` is destroyed. Once
@@ -661,7 +661,7 @@ code specified when closing the stream. If the code is any value other than
#### Event: 'timeout'
The `'timeout'` event is emitted after no activity is received for this
@@ -670,7 +670,7 @@ The `'timeout'` event is emitted after no activity is received for this
#### Event: 'trailers'
The `'trailers'` event is emitted when a block of headers associated with
@@ -685,7 +685,7 @@ stream.on('trailers', (headers, flags) => {
#### http2stream.aborted
* Value: {boolean}
@@ -695,7 +695,7 @@ the `'aborted'` event will have been emitted.
#### http2stream.destroyed
* Value: {boolean}
@@ -705,7 +705,7 @@ usable.
#### http2stream.priority(options)
* `options` {Object}
@@ -726,7 +726,7 @@ Updates the priority for this `Http2Stream` instance.
#### http2stream.rstCode
* Value: {number}
@@ -738,7 +738,7 @@ calling `http2stream.rstStream()`, or `http2stream.destroy()`. Will be
#### http2stream.rstStream(code)
* code {number} Unsigned 32-bit integer identifying the error code. Defaults to
@@ -750,7 +750,7 @@ Sends an `RST_STREAM` frame to the connected HTTP/2 peer, causing this
#### http2stream.rstWithNoError()
* Returns: {undefined}
@@ -759,7 +759,7 @@ Shortcut for `http2stream.rstStream()` using error code `0x00` (No Error).
#### http2stream.rstWithProtocolError() {
* Returns: {undefined}
@@ -768,7 +768,7 @@ Shortcut for `http2stream.rstStream()` using error code `0x01` (Protocol Error).
#### http2stream.rstWithCancel() {
* Returns: {undefined}
@@ -777,7 +777,7 @@ Shortcut for `http2stream.rstStream()` using error code `0x08` (Cancel).
#### http2stream.rstWithRefuse() {
* Returns: {undefined}
@@ -786,7 +786,7 @@ Shortcut for `http2stream.rstStream()` using error code `0x07` (Refused Stream).
#### http2stream.rstWithInternalError() {
* Returns: {undefined}
@@ -795,7 +795,7 @@ Shortcut for `http2stream.rstStream()` using error code `0x02` (Internal Error).
#### http2stream.session
* Value: {Http2Sesssion}
@@ -805,7 +805,7 @@ value will be `undefined` after the `Http2Stream` instance is destroyed.
#### http2stream.setTimeout(msecs, callback)
* `msecs` {number}
@@ -824,7 +824,7 @@ req.setTimeout(5000, () => req.rstStreamWithCancel());
#### http2stream.state
* Value: {Object}
@@ -839,7 +839,7 @@ A current state of this `Http2Stream`.
### Class: ClientHttp2Stream
* Extends {Http2Stream}
@@ -851,7 +851,7 @@ the client.
#### Event: 'headers'
The `'headers'` event is emitted when an additional block of headers is received
@@ -867,7 +867,7 @@ stream.on('headers', (headers, flags) => {
#### Event: 'push'
The `'push'` event is emitted when response headers for a Server Push stream
@@ -882,7 +882,7 @@ stream.on('push', (headers, flags) => {
#### Event: 'response'
The `'response'` event is emitted when a response `HEADERS` frame has been
@@ -903,7 +903,7 @@ req.on('response', (headers, flags) => {
### Class: ServerHttp2Stream
* Extends: {Http2Stream}
@@ -915,7 +915,7 @@ provide additional methods such as `http2stream.pushStream()` and
#### http2stream.additionalHeaders(headers)
* `headers` {[Headers Object][]}
@@ -925,7 +925,7 @@ Sends an additional informational `HEADERS` frame to the connected HTTP/2 peer.
#### http2stream.headersSent
* Value: {boolean}
@@ -934,7 +934,7 @@ Boolean (read-only). True if headers were sent, false otherwise.
#### http2stream.pushAllowed
* Value: {boolean}
@@ -946,7 +946,7 @@ accepts push streams, `false` otherwise. Settings are the same for every
#### http2stream.pushStream(headers[, options], callback)
* `headers` {[Headers Object][]}
@@ -982,7 +982,7 @@ server.on('stream', (stream) => {
#### http2stream.respond([headers[, options]])
* `headers` {[Headers Object][]}
@@ -1027,7 +1027,7 @@ fields.
#### http2stream.respondWithFD(fd[, headers[, options]])
* `fd` {number} A readable file descriptor
@@ -1111,7 +1111,7 @@ fields.
#### http2stream.respondWithFile(path[, headers[, options]])
* `path` {string|Buffer|URL}
@@ -1203,14 +1203,14 @@ fields.
### Class: Http2Server
* Extends: {net.Server}
#### Event: 'sessionError'
The `'sessionError'` event is emitted when an `'error'` event is emitted by
@@ -1219,7 +1219,7 @@ an `Http2Session` object. If no listener is registered for this event, an
#### Event: 'socketError'
The `'socketError'` event is emitted when a `'socketError'` event is emitted by
@@ -1227,7 +1227,7 @@ an `Http2Session` associated with the server.
#### Event: 'stream'
The `'stream'` event is emitted when a `'stream'` event has been emitted by
@@ -1258,7 +1258,7 @@ server.on('stream', (stream, headers, flags) => {
#### Event: 'request'
* `request` {http2.Http2ServerRequest}
@@ -1269,7 +1269,7 @@ per session. See the [Compatibility API](compatiblity-api).
#### Event: 'timeout'
The `'timeout'` event is emitted when there is no activity on the Server for
@@ -1277,14 +1277,14 @@ a given number of milliseconds set using `http2server.setTimeout()`.
### Class: Http2SecureServer
* Extends: {tls.Server}
#### Event: 'sessionError'
The `'sessionError'` event is emitted when an `'error'` event is emitted by
@@ -1293,7 +1293,7 @@ an `Http2Session` object. If no listener is registered for this event, an
#### Event: 'socketError'
The `'socketError'` event is emitted when a `'socketError'` event is emitted by
@@ -1301,7 +1301,7 @@ an `Http2Session` associated with the server.
#### Event: 'unknownProtocol'
The `'unknownProtocol'` event is emitted when a connecting client fails to
@@ -1311,7 +1311,7 @@ the connection is terminated. See the
#### Event: 'stream'
The `'stream'` event is emitted when a `'stream'` event has been emitted by
@@ -1344,7 +1344,7 @@ server.on('stream', (stream, headers, flags) => {
#### Event: 'request'
* `request` {http2.Http2ServerRequest}
@@ -1355,12 +1355,12 @@ per session. See the [Compatibility API](compatiblity-api).
#### Event: 'timeout'
### http2.createServer(options[, onRequestHandler])
* `options` {Object}
@@ -1415,7 +1415,7 @@ server.listen(80);
### http2.createSecureServer(options[, onRequestHandler])
* `options` {Object}
@@ -1481,7 +1481,7 @@ server.listen(80);
### http2.connect(authority[, options][, listener])
* `authority` {string|URL}
@@ -1532,7 +1532,7 @@ client.destroy();
### http2.constants
#### Error Codes for RST_STREAM and GOAWAY
@@ -1560,7 +1560,7 @@ a given number of milliseconds set using `http2server.setTimeout()`.
### http2.getDefaultSettings()
* Returns: {[Settings Object][]}
@@ -1571,7 +1571,7 @@ so instances returned may be safely modified for use.
### http2.getPackedSettings(settings)
* `settings` {[Settings Object][]}
@@ -1592,7 +1592,7 @@ console.log(packed.toString('base64'));
### http2.getUnpackedSettings(buf)
* `buf` {Buffer|Uint8Array} The packed settings
@@ -1898,7 +1898,7 @@ HTTP/2.
### Class: http2.Http2ServerRequest
A `Http2ServerRequest` object is created by [`http2.Server`][] or
@@ -1911,7 +1911,7 @@ following additional events, methods, and properties.
#### Event: 'aborted'
The `'aborted'` event is emitted whenever a `Http2ServerRequest` instance is
@@ -1922,7 +1922,7 @@ abnormally aborted in mid-communication.
#### Event: 'close'
Indicates that the underlying [`Http2Stream`][] was closed.
@@ -1930,7 +1930,7 @@ Just like `'end'`, this event occurs only once per response.
#### request.destroy([error])
* `error` {Error}
@@ -1943,7 +1943,7 @@ It does nothing if the stream was already destroyed.
#### request.headers
* {Object}
@@ -1966,7 +1966,7 @@ See [Headers Object][].
### request.httpVersion
* {string}
@@ -1980,7 +1980,7 @@ Also `message.httpVersionMajor` is the first integer and
#### request.method
* {string}
@@ -1990,7 +1990,7 @@ The request method as a string. Read only. Example:
#### request.rawHeaders
* {Array}
@@ -2019,7 +2019,7 @@ console.log(request.rawHeaders);
#### request.rawTrailers
* {Array}
@@ -2029,7 +2029,7 @@ received. Only populated at the `'end'` event.
#### request.setTimeout(msecs, callback)
* `msecs` {number}
@@ -2041,7 +2041,7 @@ Returns `request`.
#### request.socket
* {net.Socket}
@@ -2056,7 +2056,7 @@ data transfers are managed by HTTP/2 and data might be lost.
#### request.stream
* {http2.Http2Stream}
@@ -2065,7 +2065,7 @@ The [`Http2Stream`][] object backing the request.
#### request.trailers
* {Object}
@@ -2074,7 +2074,7 @@ The request/response trailers object. Only populated at the `'end'` event.
#### request.url
* {string}
@@ -2141,7 +2141,7 @@ Url {
### Class: http2.Http2ServerResponse
This object is created internally by an HTTP server--not by the user. It is
@@ -2152,7 +2152,7 @@ interface. This is an [`EventEmitter`][] with the following events:
### Event: 'close'
Indicates that the underlying [`Http2Stream`]() was terminated before
@@ -2160,7 +2160,7 @@ Indicates that the underlying [`Http2Stream`]() was terminated before
### Event: 'finish'
Emitted when the response has been sent. More specifically, this event is
@@ -2172,7 +2172,7 @@ After this event, no more events will be emitted on the response object.
### response.addTrailers(headers)
* `headers` {Object}
@@ -2185,7 +2185,7 @@ will result in a [`TypeError`][] being thrown.
### response.connection
* {net.Socket}
@@ -2194,7 +2194,7 @@ See [`response.socket`][].
### response.end([data][, encoding][, callback])
* `data` {string|Buffer}
@@ -2213,7 +2213,7 @@ is finished.
### response.finished
* {boolean}
@@ -2223,7 +2223,7 @@ as `false`. After [`response.end()`][] executes, the value will be `true`.
### response.getHeader(name)
* `name` {string}
@@ -2240,7 +2240,7 @@ const contentType = response.getHeader('content-type');
### response.getHeaderNames()
* Returns: {Array}
@@ -2260,7 +2260,7 @@ const headerNames = response.getHeaderNames();
### response.getHeaders()
* Returns: {Object}
@@ -2288,7 +2288,7 @@ const headers = response.getHeaders();
### response.hasHeader(name)
* `name` {string}
@@ -2305,7 +2305,7 @@ const hasContentType = response.hasHeader('content-type');
### response.headersSent
* {boolean}
@@ -2314,7 +2314,7 @@ Boolean (read-only). True if headers were sent, false otherwise.
### response.removeHeader(name)
* `name` {string}
@@ -2329,7 +2329,7 @@ response.removeHeader('Content-Encoding');
### response.sendDate
* {boolean}
@@ -2342,7 +2342,7 @@ in responses.
### response.setHeader(name, value)
* `name` {string}
@@ -2383,7 +2383,7 @@ const server = http2.createServer((req, res) => {
### response.setTimeout(msecs[, callback])
* `msecs` {number}
@@ -2402,7 +2402,7 @@ Returns `response`.
### response.socket
* {net.Socket}
@@ -2426,7 +2426,7 @@ const server = http2.createServer((req, res) => {
### response.statusCode
* {number}
@@ -2446,7 +2446,7 @@ status code which was sent out.
### response.statusMessage
* {string}
@@ -2456,7 +2456,7 @@ an empty string.
#### response.stream
* {http2.Http2Stream}
@@ -2465,7 +2465,7 @@ The [`Http2Stream`][] object backing the response.
### response.write(chunk[, encoding][, callback])
* `chunk` {string|Buffer}
@@ -2503,7 +2503,7 @@ buffer. Returns `false` if all or part of the data was queued in user memory.
### response.writeContinue()
Throws an error as the `'continue'` flow is not current implemented. Added for
@@ -2511,7 +2511,7 @@ parity with [HTTP/1]().
### response.writeHead(statusCode[, statusMessage][, headers])
* `statusCode` {number}
@@ -2567,7 +2567,7 @@ will result in a [`TypeError`][] being thrown.
### response.createPushResponse(headers, callback)
Call [`stream.pushStream()`][] with the given headers, and wraps the
diff --git a/doc/api/n-api.md b/doc/api/n-api.md
index 04af7a62723c70..109674a4bf4b06 100644
--- a/doc/api/n-api.md
+++ b/doc/api/n-api.md
@@ -1374,7 +1374,7 @@ JavaScript DataView Objects are described in
### Functions to convert from C types to N-API
#### *napi_create_int32*
```C
napi_status napi_create_int32(napi_env env, int32_t value, napi_value* result)
@@ -1395,7 +1395,7 @@ of the ECMAScript Language Specification.
#### *napi_create_uint32*
```C
napi_status napi_create_uint32(napi_env env, uint32_t value, napi_value* result)
@@ -1416,7 +1416,7 @@ of the ECMAScript Language Specification.
#### *napi_create_int64*
```C
napi_status napi_create_int64(napi_env env, int64_t value, napi_value* result)
@@ -1443,7 +1443,7 @@ outside the range of
#### *napi_create_double*
```C
napi_status napi_create_double(napi_env env, double value, napi_value* result)
@@ -3287,7 +3287,7 @@ callback invocation, even if it has been successfully cancelled.
### napi_get_node_version
```C
diff --git a/doc/api/stream.md b/doc/api/stream.md
index 7d42bd2d71ca6a..3663fe2d780830 100644
--- a/doc/api/stream.md
+++ b/doc/api/stream.md
@@ -1742,7 +1742,7 @@ constructor and implement *both* the `readable._read()` and
#### new stream.Duplex(options)
Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts
diff --git a/doc/api/util.md b/doc/api/util.md
index c853d04716c310..076fbc479dc695 100644
--- a/doc/api/util.md
+++ b/doc/api/util.md
@@ -151,7 +151,7 @@ property take precedence over `--trace-deprecation` and
diff --git a/doc/changelogs/CHANGELOG_V8.md b/doc/changelogs/CHANGELOG_V8.md
index 74b2ca1f5c9153..2413d874778933 100644
--- a/doc/changelogs/CHANGELOG_V8.md
+++ b/doc/changelogs/CHANGELOG_V8.md
@@ -6,6 +6,7 @@
+8.4.0
8.3.0
8.2.1
8.2.0
@@ -29,6 +30,135 @@
* [io.js](CHANGELOG_IOJS.md)
* [Archive](CHANGELOG_ARCHIVE.md)
+
+## 2017-08-15, Version 8.4.0 (Current), @addaleax
+
+### Notable changes
+
+* **HTTP2**
+ * Experimental support for the built-in `http2` has been added via the
+ `--expose-http2` flag.
+ [#14239](https://github.com/nodejs/node/pull/14239)
+
+* **Inspector**
+ * `require()` is available in the inspector console now.
+ [#8837](https://github.com/nodejs/node/pull/8837)
+ * Multiple contexts, as created by the `vm` module, are supported now.
+ [#14465](https://github.com/nodejs/node/pull/14465)
+
+* **N-API**
+ * New APIs for creating number values have been introduced.
+ [#14573](https://github.com/nodejs/node/pull/14573)
+
+* **Stream**
+ * For `Duplex` streams, the high water mark option can now be set
+ independently for the readable and the writable side.
+ [#14636](https://github.com/nodejs/node/pull/14636)
+
+* **Util**
+ * `util.format` now supports the `%o` and `%O` specifiers for printing
+ objects.
+ [#14558](https://github.com/nodejs/node/pull/14558)
+
+### Commits
+
+* [[`a6539ece2c`](https://github.com/nodejs/node/commit/a6539ece2c)] - **assert**: optimize code path for deepEqual Maps (Ruben Bridgewater) [#14501](https://github.com/nodejs/node/pull/14501)
+* [[`2716b626b0`](https://github.com/nodejs/node/commit/2716b626b0)] - **async_hooks**: CHECK that resource is not empty (Anna Henningsen) [#14694](https://github.com/nodejs/node/pull/14694)
+* [[`b3c1c6ff7f`](https://github.com/nodejs/node/commit/b3c1c6ff7f)] - **benchmark**: fix and extend assert benchmarks (Ruben Bridgewater) [#14147](https://github.com/nodejs/node/pull/14147)
+* [[`139b08863e`](https://github.com/nodejs/node/commit/139b08863e)] - **benchmark**: Correct constructor for freelist (Gareth Ellis) [#14627](https://github.com/nodejs/node/pull/14627)
+* [[`574cc379b9`](https://github.com/nodejs/node/commit/574cc379b9)] - **benchmark**: remove unused parameters (nishijayaraj) [#14640](https://github.com/nodejs/node/pull/14640)
+* [[`fef2aa7e27`](https://github.com/nodejs/node/commit/fef2aa7e27)] - **(SEMVER-MINOR)** **deps**: add nghttp2 dependency (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`2d806f4f71`](https://github.com/nodejs/node/commit/2d806f4f71)] - **deps**: cherry-pick f19b889 from V8 upstream (Alexey Kozyatinskiy) [#14465](https://github.com/nodejs/node/pull/14465)
+* [[`dd521d0a28`](https://github.com/nodejs/node/commit/dd521d0a28)] - **deps,tools**: add missing nghttp2 license (Anna Henningsen) [#14806](https://github.com/nodejs/node/pull/14806)
+* [[`621c03acfe`](https://github.com/nodejs/node/commit/621c03acfe)] - **doc**: delint (Refael Ackermann) [#14707](https://github.com/nodejs/node/pull/14707)
+* [[`230cb55574`](https://github.com/nodejs/node/commit/230cb55574)] - **doc**: fix header level typo (Refael Ackermann) [#14707](https://github.com/nodejs/node/pull/14707)
+* [[`af85b6e058`](https://github.com/nodejs/node/commit/af85b6e058)] - **doc**: fix http2 sample code for http2.md (Keita Akutsu) [#14667](https://github.com/nodejs/node/pull/14667)
+* [[`1e7ddb200f`](https://github.com/nodejs/node/commit/1e7ddb200f)] - **doc**: explain browser support of http/2 without SSL (Gil Tayar) [#14670](https://github.com/nodejs/node/pull/14670)
+* [[`be716d00cc`](https://github.com/nodejs/node/commit/be716d00cc)] - **(SEMVER-MINOR)** **doc**: include http2.md in all.md (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`9e51802f53`](https://github.com/nodejs/node/commit/9e51802f53)] - **doc**: add missing `changes:` metadata for util (Anna Henningsen) [#14810](https://github.com/nodejs/node/pull/14810)
+* [[`4811fea553`](https://github.com/nodejs/node/commit/4811fea553)] - **doc**: add missing `changes:` metadata for streams (Anna Henningsen) [#14810](https://github.com/nodejs/node/pull/14810)
+* [[`20fb69063a`](https://github.com/nodejs/node/commit/20fb69063a)] - **doc**: fix docs style in util.md (Daijiro Wachi) [#14711](https://github.com/nodejs/node/pull/14711)
+* [[`0de63e6888`](https://github.com/nodejs/node/commit/0de63e6888)] - **doc**: fix docs style in intl.md (Daijiro Wachi) [#14711](https://github.com/nodejs/node/pull/14711)
+* [[`ee2ae0f30b`](https://github.com/nodejs/node/commit/ee2ae0f30b)] - **doc**: expanded description of buffer.slice (Vishal Bisht) [#14720](https://github.com/nodejs/node/pull/14720)
+* [[`9888bb1238`](https://github.com/nodejs/node/commit/9888bb1238)] - **doc**: improve fs.read() doc text (Rich Trott) [#14631](https://github.com/nodejs/node/pull/14631)
+* [[`d604173a66`](https://github.com/nodejs/node/commit/d604173a66)] - **doc**: clarify the position argument for fs.read (dcharbonnier) [#14631](https://github.com/nodejs/node/pull/14631)
+* [[`d3b072276b`](https://github.com/nodejs/node/commit/d3b072276b)] - **doc**: add docs for AssertionError (Mandeep Singh) [#14261](https://github.com/nodejs/node/pull/14261)
+* [[`4e15a6b76a`](https://github.com/nodejs/node/commit/4e15a6b76a)] - **doc**: fix order of AtExit callbacks in addons.md (Daniel Bevenius) [#14048](https://github.com/nodejs/node/pull/14048)
+* [[`e07dfffad0`](https://github.com/nodejs/node/commit/e07dfffad0)] - **doc**: remove undef NDEBUG from addons.md (Daniel Bevenius) [#14048](https://github.com/nodejs/node/pull/14048)
+* [[`c5ee34e39b`](https://github.com/nodejs/node/commit/c5ee34e39b)] - **encoding**: rudimentary TextDecoder support w/o ICU (Timothy Gu) [#14489](https://github.com/nodejs/node/pull/14489)
+* [[`e0001dc601`](https://github.com/nodejs/node/commit/e0001dc601)] - **(SEMVER-MINOR)** **http**: move utcDate to internal/http.js (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`1d40850338`](https://github.com/nodejs/node/commit/1d40850338)] - **http2**: fix \[kInspect\]() output for Http2Stream (Evan Lucas) [#14753](https://github.com/nodejs/node/pull/14753)
+* [[`c5740f9111`](https://github.com/nodejs/node/commit/c5740f9111)] - **http2**: name padding buffer fields (Anna Henningsen) [#14744](https://github.com/nodejs/node/pull/14744)
+* [[`8a0d101adf`](https://github.com/nodejs/node/commit/8a0d101adf)] - **http2**: use per-environment buffers (Anna Henningsen) [#14744](https://github.com/nodejs/node/pull/14744)
+* [[`92c37fe5fd`](https://github.com/nodejs/node/commit/92c37fe5fd)] - **http2**: improve perf of passing headers to C++ (Anna Henningsen) [#14723](https://github.com/nodejs/node/pull/14723)
+* [[`47bf705f75`](https://github.com/nodejs/node/commit/47bf705f75)] - **http2**: rename some nghttp2 stream flags (Kelvin Jin) [#14637](https://github.com/nodejs/node/pull/14637)
+* [[`723d1af5e7`](https://github.com/nodejs/node/commit/723d1af5e7)] - **(SEMVER-MINOR)** **http2**: fix flakiness in timeout (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`6a30448bac`](https://github.com/nodejs/node/commit/6a30448bac)] - **(SEMVER-MINOR)** **http2**: fix linting after rebase (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`efd929e402`](https://github.com/nodejs/node/commit/efd929e402)] - **(SEMVER-MINOR)** **http2**: fix compilation error after V8 update (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`f46c50b3e2`](https://github.com/nodejs/node/commit/f46c50b3e2)] - **(SEMVER-MINOR)** **http2**: add some doc detail for invalid header chars (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`b43caf92c0`](https://github.com/nodejs/node/commit/b43caf92c0)] - **(SEMVER-MINOR)** **http2**: fix documentation errors (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`33b03b2ab2`](https://github.com/nodejs/node/commit/33b03b2ab2)] - **(SEMVER-MINOR)** **http2**: minor cleanup (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`174ab6fda0`](https://github.com/nodejs/node/commit/174ab6fda0)] - **(SEMVER-MINOR)** **http2**: use static allocated arrays (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`9a4be4adc4`](https://github.com/nodejs/node/commit/9a4be4adc4)] - **(SEMVER-MINOR)** **http2**: get trailers working with the compat api (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`3e5b07a8fb`](https://github.com/nodejs/node/commit/3e5b07a8fb)] - **(SEMVER-MINOR)** **http2**: refactor trailers API (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`26e1f8e01c`](https://github.com/nodejs/node/commit/26e1f8e01c)] - **(SEMVER-MINOR)** **http2**: address initial pr feedback (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`7824fa0b40`](https://github.com/nodejs/node/commit/7824fa0b40)] - **(SEMVER-MINOR)** **http2**: make writeHead behave like HTTP/1. (Matteo Collina) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`b778838337`](https://github.com/nodejs/node/commit/b778838337)] - **(SEMVER-MINOR)** **http2**: doc and fixes to the Compatibility API (Matteo Collina) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`8f3bbd9b68`](https://github.com/nodejs/node/commit/8f3bbd9b68)] - **(SEMVER-MINOR)** **http2**: add range support for respondWith{File|FD} (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`61696f1215`](https://github.com/nodejs/node/commit/61696f1215)] - **(SEMVER-MINOR)** **http2**: fix socketOnTimeout and a segfault (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`2620769e7f`](https://github.com/nodejs/node/commit/2620769e7f)] - **(SEMVER-MINOR)** **http2**: refinement and test for socketError (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`cd0f4c6652`](https://github.com/nodejs/node/commit/cd0f4c6652)] - **(SEMVER-MINOR)** **http2**: fix abort when client.destroy inside end event (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`e8cc193bcc`](https://github.com/nodejs/node/commit/e8cc193bcc)] - **(SEMVER-MINOR)** **http2**: fix documentation nits (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`a49146e446`](https://github.com/nodejs/node/commit/a49146e446)] - **(SEMVER-MINOR)** **http2**: remove redundant return in test (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`3eb61b00de`](https://github.com/nodejs/node/commit/3eb61b00de)] - **(SEMVER-MINOR)** **http2**: add tests and benchmarks (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`9623ee0f99`](https://github.com/nodejs/node/commit/9623ee0f99)] - **(SEMVER-MINOR)** **http2**: introducing HTTP/2 (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`029567a460`](https://github.com/nodejs/node/commit/029567a460)] - **inspector**: support extra contexts (Eugene Ostroukhov) [#14465](https://github.com/nodejs/node/pull/14465)
+* [[`d89f9f82b0`](https://github.com/nodejs/node/commit/d89f9f82b0)] - **(SEMVER-MINOR)** **inspector**: allow require in Runtime.evaluate (Jan Krems) [#8837](https://github.com/nodejs/node/pull/8837)
+* [[`ac1b81ad75`](https://github.com/nodejs/node/commit/ac1b81ad75)] - **lib**: move deprecationWarned var (Daniel Bevenius) [#14769](https://github.com/nodejs/node/pull/14769)
+* [[`8433b1ad37`](https://github.com/nodejs/node/commit/8433b1ad37)] - **lib**: use Timer.now() in readline module (Rich Trott) [#14681](https://github.com/nodejs/node/pull/14681)
+* [[`917ace283f`](https://github.com/nodejs/node/commit/917ace283f)] - **(SEMVER-MINOR)** **n-api**: add napi_get_node_version (Anna Henningsen) [#14696](https://github.com/nodejs/node/pull/14696)
+* [[`5e2cce59ef`](https://github.com/nodejs/node/commit/5e2cce59ef)] - **(SEMVER-MINOR)** **n-api**: optimize number API performance (Jason Ginchereau) [#14573](https://github.com/nodejs/node/pull/14573)
+* [[`c94f346b93`](https://github.com/nodejs/node/commit/c94f346b93)] - **net**: use rest parameters instead of arguments (Tobias Nießen) [#13472](https://github.com/nodejs/node/pull/13472)
+* [[`1c00875747`](https://github.com/nodejs/node/commit/1c00875747)] - **repl**: include folder extensions in autocomplete (Teddy Katz) [#14727](https://github.com/nodejs/node/pull/14727)
+* [[`59d1d56da6`](https://github.com/nodejs/node/commit/59d1d56da6)] - **src**: remove unused http2_socket_buffer from env (Anna Henningsen) [#14740](https://github.com/nodejs/node/pull/14740)
+* [[`268a1ff3f1`](https://github.com/nodejs/node/commit/268a1ff3f1)] - **src**: mention that node options are space-separated (Gabriel Schulhof) [#14709](https://github.com/nodejs/node/pull/14709)
+* [[`9237ef868e`](https://github.com/nodejs/node/commit/9237ef868e)] - **src**: avoid creating local data variable (Daniel Bevenius) [#14732](https://github.com/nodejs/node/pull/14732)
+* [[`f83827d64b`](https://github.com/nodejs/node/commit/f83827d64b)] - **src**: use local isolate instead of args.GetIsolate (Daniel Bevenius) [#14768](https://github.com/nodejs/node/pull/14768)
+* [[`d7d22ead2b`](https://github.com/nodejs/node/commit/d7d22ead2b)] - **src**: add comments for cares library init refcount (Anna Henningsen) [#14743](https://github.com/nodejs/node/pull/14743)
+* [[`b87fae927d`](https://github.com/nodejs/node/commit/b87fae927d)] - **src**: remove duplicate loop (Anna Henningsen) [#14750](https://github.com/nodejs/node/pull/14750)
+* [[`033773c17b`](https://github.com/nodejs/node/commit/033773c17b)] - **src**: add overlooked handle to cleanup (Anna Henningsen) [#14749](https://github.com/nodejs/node/pull/14749)
+* [[`dd6444d401`](https://github.com/nodejs/node/commit/dd6444d401)] - **src,http2**: DRY header/trailer handling code up (Anna Henningsen) [#14688](https://github.com/nodejs/node/pull/14688)
+* [[`ef8ac7b5ac`](https://github.com/nodejs/node/commit/ef8ac7b5ac)] - **(SEMVER-MINOR)** **stream**: support readable/writableHWM for Duplex (Guy Margalit) [#14636](https://github.com/nodejs/node/pull/14636)
+* [[`6d9f94f93f`](https://github.com/nodejs/node/commit/6d9f94f93f)] - **test**: cover all HTTP methods that parser supports (Oky Antoro) [#14773](https://github.com/nodejs/node/pull/14773)
+* [[`e4854fccfc`](https://github.com/nodejs/node/commit/e4854fccfc)] - **test**: use regular expressions in throw assertions (Vincent Xue) [#14318](https://github.com/nodejs/node/pull/14318)
+* [[`66788fc4d0`](https://github.com/nodejs/node/commit/66788fc4d0)] - **test**: increase http2 coverage (Michael Albert) [#14701](https://github.com/nodejs/node/pull/14701)
+* [[`dbb9c370d4`](https://github.com/nodejs/node/commit/dbb9c370d4)] - **test**: add crypto check to http2 tests (Daniel Bevenius) [#14657](https://github.com/nodejs/node/pull/14657)
+* [[`97f622b99e`](https://github.com/nodejs/node/commit/97f622b99e)] - **(SEMVER-MINOR)** **test**: fix flaky test-http2-client-unescaped-path on osx (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`9d752d5282`](https://github.com/nodejs/node/commit/9d752d5282)] - **(SEMVER-MINOR)** **test**: fix flakiness in test-http2-client-upload (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`82c63a55ea`](https://github.com/nodejs/node/commit/82c63a55ea)] - **test**: add test-benchmark-arrays (Rich Trott) [#14728](https://github.com/nodejs/node/pull/14728)
+* [[`0eab77c86f`](https://github.com/nodejs/node/commit/0eab77c86f)] - **test**: allow inspector to reopen with same port (Gibson Fahnestock) [#14320](https://github.com/nodejs/node/pull/14320)
+* [[`9bbbf12827`](https://github.com/nodejs/node/commit/9bbbf12827)] - **test**: remove redundant `using` in cctest (XadillaX) [#14739](https://github.com/nodejs/node/pull/14739)
+* [[`7eb9f6f6e4`](https://github.com/nodejs/node/commit/7eb9f6f6e4)] - **test**: make totalLen snake case (Daniel Bevenius) [#14765](https://github.com/nodejs/node/pull/14765)
+* [[`977e22857a`](https://github.com/nodejs/node/commit/977e22857a)] - **test**: make test-tls-connect checks more strict (Rich Trott) [#14695](https://github.com/nodejs/node/pull/14695)
+* [[`a781bb4508`](https://github.com/nodejs/node/commit/a781bb4508)] - ***Revert*** "**test**: disable MultipleEnvironmentsPerIsolate" (Anna Henningsen) [#14749](https://github.com/nodejs/node/pull/14749)
+* [[`8ff2a5c338`](https://github.com/nodejs/node/commit/8ff2a5c338)] - ***Revert*** "**test**: add DISABLED_ prefix to commented out test" (Anna Henningsen) [#14749](https://github.com/nodejs/node/pull/14749)
+* [[`0bc3124c80`](https://github.com/nodejs/node/commit/0bc3124c80)] - **test**: properly order freeing resources in cctest (Anna Henningsen) [#14749](https://github.com/nodejs/node/pull/14749)
+* [[`3f1bb0a551`](https://github.com/nodejs/node/commit/3f1bb0a551)] - **test**: split out load-sensitive readline tests (Rich Trott) [#14681](https://github.com/nodejs/node/pull/14681)
+* [[`5d99d7dff2`](https://github.com/nodejs/node/commit/5d99d7dff2)] - **test**: add block scoping to test-readline-interface (Rich Trott) [#14615](https://github.com/nodejs/node/pull/14615)
+* [[`58742729da`](https://github.com/nodejs/node/commit/58742729da)] - **test**: set module loading error for aix (Prakash Palaniappan) [#14511](https://github.com/nodejs/node/pull/14511)
+* [[`06ba2dae30`](https://github.com/nodejs/node/commit/06ba2dae30)] - **test**: fix conversion of microseconds in test (Nick Stanish) [#14706](https://github.com/nodejs/node/pull/14706)
+* [[`30837b3b90`](https://github.com/nodejs/node/commit/30837b3b90)] - **test**: improve check in test-os (Rich Trott) [#14655](https://github.com/nodejs/node/pull/14655)
+* [[`55aba6aee7`](https://github.com/nodejs/node/commit/55aba6aee7)] - **test**: replace indexOf with includes (Miguel Angel Asencio Hurtado) [#14630](https://github.com/nodejs/node/pull/14630)
+* [[`935d34bd6b`](https://github.com/nodejs/node/commit/935d34bd6b)] - **test**: fix test-readline-interface (Azard) [#14677](https://github.com/nodejs/node/pull/14677)
+* [[`2ee3320f2c`](https://github.com/nodejs/node/commit/2ee3320f2c)] - **test**: improve multiple timers tests (James M Snell) [#14616](https://github.com/nodejs/node/pull/14616)
+* [[`71f2e76353`](https://github.com/nodejs/node/commit/71f2e76353)] - **test**: use ciphers supported by shared OpenSSL (Jérémy Lal) [#14566](https://github.com/nodejs/node/pull/14566)
+* [[`f73f659186`](https://github.com/nodejs/node/commit/f73f659186)] - **test**: mitigate RegEx exceeding 80 chars (Aditya Anand) [#14607](https://github.com/nodejs/node/pull/14607)
+* [[`96147c980c`](https://github.com/nodejs/node/commit/96147c980c)] - **test**: read proper inspector message size (Bartosz Sosnowski) [#14596](https://github.com/nodejs/node/pull/14596)
+* [[`e84c9d7176`](https://github.com/nodejs/node/commit/e84c9d7176)] - **(SEMVER-MINOR)** **tls**: add tlsSocket.disableRenegotiation() (James M Snell) [#14239](https://github.com/nodejs/node/pull/14239)
+* [[`a0e05e884e`](https://github.com/nodejs/node/commit/a0e05e884e)] - **tools**: fix tools/addon-verify.js (Daniel Bevenius) [#14048](https://github.com/nodejs/node/pull/14048)
+* [[`116841056a`](https://github.com/nodejs/node/commit/116841056a)] - **util**: improve util.inspect performance (Ruben Bridgewater) [#14492](https://github.com/nodejs/node/pull/14492)
+* [[`7203924fea`](https://github.com/nodejs/node/commit/7203924fea)] - **(SEMVER-MINOR)** **util**: implement %o and %O as formatting specifiers (Greg Alexander) [#14558](https://github.com/nodejs/node/pull/14558)
+
## 2017-08-09, Version 8.3.0 (Current), @addaleax
diff --git a/src/node_version.h b/src/node_version.h
index 7dc100d800f17f..8683a9820af2cf 100644
--- a/src/node_version.h
+++ b/src/node_version.h
@@ -23,10 +23,10 @@
#define SRC_NODE_VERSION_H_
#define NODE_MAJOR_VERSION 8
-#define NODE_MINOR_VERSION 3
-#define NODE_PATCH_VERSION 1
+#define NODE_MINOR_VERSION 4
+#define NODE_PATCH_VERSION 0
-#define NODE_VERSION_IS_RELEASE 0
+#define NODE_VERSION_IS_RELEASE 1
#ifndef NODE_STRINGIFY
#define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)
|