Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

Update node-chakracore with nodejs/master changes #40

Merged
merged 123 commits into from
Mar 21, 2016

Conversation

agarwal-sandeep
Copy link
Contributor

This PR updates node-chakracore with 929b5b9 of nodejs/node "master" branch. All the commits, except last 2 commit are from nodejs/node repo and are present to retain the history.

Merge conflict were manually resolved in below files

  • README.md - everything from chakracore-master
  • lib/buffer.js - took markNoSpeciesConstructor from chakracore-master
  • src/string_bytes.cc - took CHAKRA-TODO from chakracore-master
  • test/parallel/test-buffer-slow.js - auto resolve
  • test/parallel/test-fs-read-buffer-tostring-fail.js - took common.isChakraEngine from chakracore-master
  • test/parallel/test-fs-readfile-tostring-fail.js - took common.isChakraEngine from chakracore-master
  • test/parallel/test-repl-mode.js - took nodejs/master
  • tools/test.py - merged
  • vcbuild.bat - merged

Last commit - Implemented new APIs added to v8 in chakrashim.

Following tests

  • test-buffer.js
  • test-buffer-alloc.js
  • test-buffer-concat.js

are failing because these tests create Buffer with NaN or float value.
v8 and Chakra differ when ArrayBuffer is created using NaN or float value in which case Chakra throws RangeError but v8 returns 0 and floor(abs(value)) length buffer respectively.

There is active issue open in TC39 for discussion.
tc39/ecma262#265
tc39/ecma262#292
chakra-core/ChakraCore#105

Investigating one additional test failure

  • test-vm-timeout.js

Trott and others added 30 commits March 3, 2016 09:30
Enable `no-extra-parens`. This rule restricts the use of parentheses to
only where they are necessary. It is set to be restricted to report only
function expressions.

PR-URL: nodejs/node#5512
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Evan Lucas <[email protected]>
Reviewed-By: James M Snell <[email protected]>
PR-URL: nodejs/node#5517
Reviewed-By: Brian White <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Evan Lucas <[email protected]>
Reviewed-By: James M Snell <[email protected]>
PR-URL: nodejs/node#5517
Reviewed-By: Brian White <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Evan Lucas <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Also fixed a minor color issue with :focus on the title.

PR-URL: nodejs/node#5548
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
The properties on memoryUsage were not checked before,
this commit checks them.

PR-URL: #5546
Reviewed-By: Colin Ihrig <[email protected]>
Looping rapidly and making new connections causes problems on pi2.
Instead create a new connection when an old connection has already been
made. Running a stress test of 600 times and they all passed.

Fixes: nodejs/node#5302
PR-URL: nodejs/node#5537
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Alexis Campailla <[email protected]>
Rework the doc a bit to tighten it up, including removing the
use of `you`

Fix some line wrapping issues.

PR-URL: nodejs/node#5287
Reviewed-By: Roman Klauke <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>

...
Notable changes:

* http_parser: Update to http-parser 2.3.2 to fix an unintentionally
  strict limitation of allowable header characters.
  (James M Snell) nodejs/node#5241
* domains:
  - Prevent an exit due to an exception being thrown rather than
    emitting an 'uncaughtException' event on the `process` object when
    no error handler is set on the domain within which an error is
    thrown and an 'uncaughtException' event listener is set on
    `process`. (Julien Gilli) nodejs/node#3885
  - Fix an issue where the process would not abort in the proper
    function call if an error is thrown within a domain with no error
    handler and `--abort-on-uncaught-exception` is used.
    (Julien Gilli) nodejs/node#3885
* openssl: Upgrade from 1.0.2f to 1.0.2g
  (Ben Noordhuis) nodejs/node#5509
  - Fix a double-free defect in parsing malformed DSA keys that may
    potentially be used for DoS or memory corruption attacks. It is
    likely to be very difficult to use this defect for a practical
    attack and is therefore considered low severity for Node.js users.
    More info is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0705
  - Fix a defect that can cause memory corruption in certain very rare
    cases relating to the internal `BN_hex2bn()` and `BN_dec2bn()`
    functions. It is believed that Node.js is not invoking the code
    paths that use these functions so practical attacks via Node.js
    using this defect are _unlikely_ to be possible. More info is
    available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0797
  - Fix a defect that makes the CacheBleed Attack
    (https://ssrg.nicta.com.au/projects/TS/cachebleed/) possible. This
    defect enables attackers to execute side-channel attacks leading
    to the potential recovery of entire RSA private keys. It only
    affects the Intel Sandy Bridge (and possibly older)
    microarchitecture when using hyper-threading. Newer
    microarchitectures, including Haswell, are unaffected. More info
    is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0702

PR-URL: nodejs/node#5403
Notable changes:

* http_parser: Update to http-parser 1.2 to fix an unintentionally
  strict limitation of allowable header characters.
  (James M Snell) nodejs/node#5242
* domains:
  - Prevent an exit due to an exception being thrown rather than
  emitting an 'uncaughtException' event on the `process` object when
  no error handler is set on the domain within which an error is
  thrown and an 'uncaughtException' event listener is set on
  `process`. (Julien Gilli) nodejs/node#3887
  - Fix an issue where the process would not abort in the proper
  function call if an error is thrown within a domain with no error
  handler and `--abort-on-uncaught-exception` is used.
  (Julien Gilli) nodejs/node#3887
* openssl: Upgrade from 1.0.1r to 1.0.1s
  (Ben Noordhuis) nodejs/node#5508
  - Fix a double-free defect in parsing malformed DSA keys that may
    potentially be used for DoS or memory corruption attacks. It is
    likely to be very difficult to use this defect for a practical
    attack and is therefore considered low severity for Node.js users.
    More info is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0705
  - Fix a defect that can cause memory corruption in certain very rare
    cases relating to the internal `BN_hex2bn()` and `BN_dec2bn()`
    functions. It is believed that Node.js is not invoking the code
    paths that use these functions so practical attacks via Node.js
    using this defect are _unlikely_ to be possible. More info is
    available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0797
  - Fix a defect that makes the CacheBleed Attack
    (https://ssrg.nicta.com.au/projects/TS/cachebleed/) possible.
    This defect enables attackers to execute side-channel attacks
    leading to the potential recovery of entire RSA private keys. It
    only affects the Intel Sandy Bridge (and possibly older)
    microarchitecture when using hyper-threading. Newer
    microarchitectures, including Haswell, are unaffected. More info
    is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0702
  - Remove SSLv2 support, the `--enable-ssl2` command line argument
    will now produce an error. The DROWN Attack
    (https://drownattack.com/) creates a vulnerability where SSLv2 is
    enabled by a server, even if a client connection is not using
    SSLv2. The SSLv2 protocol is widely considered unacceptably broken
    and should not be supported. More information is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0800

PR-URL: nodejs/node#5404
Pick up the current branch head for V8 4.9
v8/v8@1ecba0f

PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
- An error message changed for undefined references
- `let` is now allowed in sloppy mode
- ES2015 proxies are shipped and the `Proxy` global is now a function

PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Ali Ijaz Sheikh <[email protected]>
Proxies support is now complete in V8. The tests needed slight modification to
match the spec implementation.

PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Ali Ijaz Sheikh <[email protected]>
PR-URL: nodejs/node#4722
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Ali Ijaz Sheikh <[email protected]>
PR-URL: nodejs/node#5204
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
Reviewed-By: indutny - Fedor Indutny <[email protected]>
PR-URL: nodejs/node#5204
Reviewed-By: bnoordhuis - Ben Noordhuis <[email protected]>
Reviewed-By: indutny - Fedor Indutny <[email protected]>
kthelgason and others added 18 commits March 15, 2016 16:47
According to the spec gzipped archives can contain more than one
compressed member. Previously Node's gzip implementation would only
unzip the first member and throw away the rest of the compressed data.
Issue #4306 is an example of this occurring in daily use.

Fixes: nodejs/node#4306
PR-URL: nodejs/node#5120
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Per nodejs/node#1817, there are many modules
that currently abuse the private `_events` property on EventEmitter.
One of the ways it is used is to determine if a particular event is
being listened for. This adds a simple `eventNames()` method that
returns an array of the events with currently registered listeners.

PR-URL: nodejs/node#5617
Reviewed-By: Brian White <[email protected]>
Reviewed-By: Сковорода Никита Андреевич <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
process.send and child.send use JSON.stringify to serialize
the message.

Fixes: nodejs/node#5453
PR-URL: nodejs/node#5723
Reviewed-By: Jeremy Whitlock <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Add the proposed Testing WG. WORKING_GROUPS.md indicates that opening
a pull request to that file is the way to request that a charter be
ratified by the TC. So, that's what this is.

The charter document is currently:
https://github.com/nodejs/testing/blob/master/Charter.md

PR-URL: nodejs/node#5461
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Alexis Campailla <[email protected]>
Reviewed-By: Johan Bergström <[email protected]>
`Console` constructor checks that `stdout.write()` is a function but
does not do an equivalent check for `stderr.write()`. If `stderr` is not
specified in the constructor, then `stderr` is set to be `stdout`.
However, if `stderr` is specified, but `stderr.write()` is not a
function, then an exception is not thrown until `console.error()` is
called.

This change adds the same check for 'stderr' in the constructor that is
there for `stdout`. If `stderr` fails the check, then a `TypeError` is
thrown.

Took the opportunity to copyedit the `console` doc a little too.

PR-URL: nodejs/node#5635
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Rod Vagg <[email protected]>
If both -i and -e flags are specified, do not ignore the -i. Instead,
launch the interactive REPL and start by evaluating the passed string.

Fixes: nodejs/node#1197
PR-URL: nodejs/node#5655
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Jeremiah Senkpiel <[email protected]>
This removes the ability to run linting from the source tarball,
rationale being that developers should use a git clone instead.

Also, fix the path of removing artifacts from the openssl dependency
since it now lives in `deps/openssl/openssl/`.

Tarballs shrink with ~10%.

PR-URL: nodejs/node#5695
Fixes: nodejs/node#5618
Reviewed-By: Rod Vagg <[email protected]>
Reviewed-By: thefourtheye <[email protected]>
Reviewed-By: James Snell <[email protected]>
Several changes:

* Soft-Deprecate Buffer() constructors
* Add `Buffer.from()`, `Buffer.alloc()`, and `Buffer.allocUnsafe()`
* Add `--zero-fill-buffers` command line option
* Add byteOffset and length to `new Buffer(arrayBuffer)` constructor
* buffer.fill('') previously had no effect, now zero-fills
* Update the docs

PR-URL: nodejs/node#4682
Reviewed-By: Сковорода Никита Андреевич <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
PR-URL: nodejs/node#5673
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: James Snell <[email protected]>
Reviewed-By: Brian White <[email protected]>
Uses better troff formatting.
Removes v8 options from the man page.

Also edits `node -h` in node.cc slightly.

PR-URL: nodejs/node#5497
Reviewed-By: James Snell <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Fixes: https:github.com/nodejs/node/issues/5682
PR-URL: nodejs/node#5736
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
Document that util._extend was never intended to be used
and should be considered deprecated.

PR-URL: nodejs/node#4903
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
Do not call the linkManPages if the tok type is code

Fixes: nodejs/node#5686
PR-URL: nodejs/node#5721
Reviewed-By: James M Snell <[email protected]>
Notable changes:

* **contextify**: Fixed a memory consumption issue related to heavy use
of `vm.createContext` and `vm.runInNewContext`. (Ali Ijaz Sheikh)
nodejs/node#5392
* **governance**: The following members have been added as
collaborators:
  - Andreas Madsen (@AndreasMadsen)
  - Benjamin Gruenbaum (@benjamingr)
  - Claudio Rodriguez (@claudiorodriguez)
  - Glen Keane (@thekemkid)
  - Jeremy Whitlock (@whitlockjc)
  - Matt Loring (@matthewloring)
  - Phillip Johnsen (@phillipj)
* **lib**: copy arguments object instead of leaking it (Nathan Woltman)
nodejs/node#4361
* **src**: allow combination of -i and -e cli flags (Rich Trott)
nodejs/node#5655
* **v8**: backport fb4ccae from v8 upstream (Vladimir Krivosheev) #4231
  -  breakout events from v8 to offer better support for external
     debuggers
* **zlib**: add support for concatenated members (Kári Tristan
Helgason) nodejs/node#5120

PR-URL: nodejs/node#5702
PR-URL: nodejs/node#5688
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Claudio Rodriguez <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Fixes: nodejs/node#2305
The format of certain code comments in the `path` documentation results
in the code blocks being invalid. I also find it confusing at least as
formatted on the website. This change is intended to improve those
comments.

PR-URL: nodejs/node#5670
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Brian White <[email protected]>
SSL sockets leak whenever keep alive is enabled, ca option is set in
the global agent, and requests are sent without the ca property.
In the following case at Agent.prototype.createSocket a socket will
be created with a hashtag name that includes data from the global
agents’ ca property.

On subsequent requests at Agent.prototype.addRequest we do not find
the free socket, because the hashtag name generated there does not
take into account the global agents’ ca property, thus creating a new
socket and leaving the first socket to timeout. closes: #5699

PR-URL: nodejs/node#5713
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Changes the multiline return example commments in querystring
which have the example out-of-comment, into single comment
lines to remain consistent with other docs.

PR-URL: nodejs/node#5705
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
@agarwal-sandeep
Copy link
Contributor Author

@jianchun please take a look

Maybe<bool> Object::DefineOwnProperty(
Local<Context> context, Local<Name> key, Local<Value> value,
PropertyAttribute attributes) {
return Set(key, value, attributes, /*force*/false);

Choose a reason for hiding this comment

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

Should this be /*force*/true? I assume this function should always call "Object.defineProperty" and cannot simply call "JsSetProperty" as it might already have a setter in place.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks yes it should be true. Made the change and updated PR.

@jianchun
Copy link

LGTM

1 similar comment
@kunalspathak
Copy link
Member

LGTM

@kunalspathak
Copy link
Member

Regarding failing test

  • test-buffer.js
  • test-buffer-alloc.js
  • test-buffer-concat.js

Can you fix it for Chakracore the way did for other tests, for example :

Regarding test-vm-timeout.js, does it fail manually? If not, this might be flaky test that can be ignored.

@agarwal-sandeep
Copy link
Contributor Author

Since I have to investigate failure test-vm-timeout.js as well I plan to fix the tests in a separate commit after this PR

Merge 929b5b9 of nodejs/node `master`
branch into nodejs/node-chakracore

PR-URL: nodejs#40
Reviewed-By: Jianchun Xu <[email protected]>
Reviewed-By: Kunal Pathak <[email protected]>
Added new v8 APIs to Chakrashim
Context::SetEmbedderData
Context::GetEmbedderData
Isolate::CancelTerminateExecution
Isolate::TerminateExecution
Object::DefineOwnProperty

Updated v8 version

PR-URL: nodejs#40
Reviewed-By: Jianchun Xu <[email protected]>
Reviewed-By: Kunal Pathak <[email protected]>
@agarwal-sandeep agarwal-sandeep merged commit c6d6e6b into nodejs:chakracore-master Mar 21, 2016
@agarwal-sandeep agarwal-sandeep deleted the merge20160317 branch May 5, 2016 18:04
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.