Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

next: Upgrade V8 to 4.3.61.17 #1630

Closed
wants to merge 125 commits into from
Closed

next: Upgrade V8 to 4.3.61.17 #1630

wants to merge 125 commits into from

Conversation

chrisdickinson
Copy link
Contributor

I'll need some help sorting out the vm failures:

$ ./iojs test/parallel/test-vm-new-script-new-context.js 
run a string
script created
thrown error
undefined reference
evalmachine.<anonymous>:1
foo.bar = 5;
        ^
TypeError: Cannot set property 'bar' of undefined
    at evalmachine.<anonymous>:1:9
    at ContextifyScript.Script.runInNewContext (vm.js:18:15)
    at /Users/chris/projects/iojs/test/parallel/test-vm-new-script-new-context.js:27:10
    at Function._throws (assert.js:292:5)
    at Function.assert.throws (assert.js:318:11)
    at Object.<anonymous> (/Users/chris/projects/iojs/test/parallel/test-vm-new-script-new-context.js:26:8)
    at Module._compile (module.js:431:26)
    at Object.Module._extensions..js (module.js:449:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)

And

$ ./iojs test/message/undefined_reference_in_new_context.js
before
evalmachine.<anonymous>:1
foo.bar = 5;
        ^
TypeError: Cannot set property 'bar' of undefined
    at evalmachine.<anonymous>:1:9
    at ContextifyScript.Script.runInNewContext (vm.js:18:15)
    at Object.exports.runInNewContext (vm.js:49:17)
    at Object.<anonymous> (/Users/chris/projects/iojs/test/message/undefined_reference_in_new_context.js:8:4)
    at Module._compile (module.js:431:26)
    at Object.Module._extensions..js (module.js:449:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:472:10)
    at startup (node.js:124:18)

R=@domenic, @indutny, @bnoordhuis

rvagg and others added 30 commits April 14, 2015 23:26
This just replaces all sources in deps/openssl/openssl to originals in
https://www.openssl.org/source/openssl-1.0.2a.tar.gz

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
`x86masm.pl` was mistakenly using .486 instruction set, why `cpuid` (and
perhaps others) are requiring .686 .

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
See
https://mta.openssl.org/pipermail/openssl-dev/2015-February/000651.html

iojs needs to stop using masm and move to nasm or yasm on Win32.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This a backport of da084a5ec6cebd67ae27f2463ebe4a50bb840fa5 in
https://github.com/openssl/openssl by Matt Caswell <matt@openssl.org> as

In certain situations the server provided certificate chain may no
longer be valid. However the issuer of the leaf, or some intermediate
cert is in fact in the trust store.

When building a trust chain if the first attempt fails, then try to
see if alternate chains could be constructed that are trusted.

deps: backport openssl patch of alt cert chains 2

This a backport of 15dba5be6a4482a9ad7e5b846291f31e97e338ca in
https://github.com/openssl/openssl by Matt Caswell <matt@openssl.org> as

Add flag to inhibit checking for alternate certificate chains. Setting this
behaviour will force behaviour as per previous versions of OpenSSL

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reapply b910613 .

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Change all openssl/include/openssl/*.h to include resolved symbolic
links and openssl/crypto/opensslconf.h to refer config/opensslconf.h

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
linux-x32 and linux-aarch64(arm64) are officially supported in
openssl-1.0.2. With this fix opensslconf.h for these new architectures
can be generated by Makefile.

The patch for opensslconf.h of linux-x32 with Makefile was removed.

For the fix of opensslconf.h in WIN32/WIN64, adding defines of
OPENSSL_NO_DYNAMIC_ENGINE and OPENSSL_NO_CAPIENG move to openssl.gypi
so that we no longer need insert a patch with Makefile and removed it.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
just type `make` in `deps/openssl/conf` then opensslconf.h in all
architectures are updated.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Update gyp sources for openssl-1.0.2a. The source list was extracted
from Makefiles in `deps/openssl/openssl/{crypto/ssl/engines}`.

Defines are created by referring the table in
`deps/openssl/doc/openssl_define_list.pdf` that was derived from
Makefile entries and outputs of
`deps/openssl/openssl/Configure TABLE`.

Renamed the variable of openssl_sources_arm_elf_gas to
openssl_sources_arm_void_gas to be consistent with PERLASM_SCHEME.

This also includes arm64 support.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This includes following changes,
 - Updated asm files for each platforms which are required in
 openssl-1.0.2a.
 - Some perl files need CC and ASM envs. Added a check if these envs
 exist. Followed asm files are to be generated with CC=gcc and
 ASM=nasm on Linux. See
 `deps/openssl/openssl/crypto/sha/asm/sha512-x86_64.pl`
 - Added new 32bit targets/rules with a sse2 flag (OPENSSL_IA32_SSE2)
 to generate asm for use SSE2.
 - Generating sha512 asm files in x86_64 need output filename which
 has 512. Added new rules so as not to use stdout for outputs.
 - PERLASM_SCHEME of linux-armv4 is `void` as defined in openssl
 Configure. Changed its target/rule and all directories are moved from
 arm-elf-gas to arm-void-gas.

deps: add arm64 support in openssl/asm/Makefile

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Asm files for OpenSSL depends on the version of assembler.
We provide two sets of asm files, one is asm_latest(avx2 and addx
supported) and the other asm_obsolute(without avx1/2 and addx)

The asm_latest needs the version of gas >= 2.23, llvm >= 3.3
or ml64 >= 12 as defined in
https://github.com/openssl/openssl/blob/OpenSSL_1_0_2-stable/crypto/sha/asm/sha512-x86_64.pl#L112-L129
, otherwise asm_obsolute are used.

We take MSVS_VERSION in gyp as a version check of assembler on
Windows because the path to ml64.exe was set after configure in
vcbuild.bat and executing ml64.exe was failed in configure.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
asm files are generated as
- In `deps/openssl/asm/`, make with CC=gcc and ASM=nasm
- In `deps/openssl/asm_obsolute/`, make with no envs for compilers

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
openssl-1.0.2a does not include function name of SSL3_GET_CLIENT_HELLO
in the error message

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This document is intended to describe the procedure to upgrade openssl
from 1.0.1m to 1.0.2a in io.js.

Fixes: #589
PR-URL: #1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Replace Node.js to io.js in error messages.

Fixes: #589
PR-URL: #1389
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
On machines with limited resources a fair tradeoff could be trading
result size with less memory and cpu consumption. Expose a variable
that overrides the default (9).

Note: xz is often used to gain maximum possible compression, so
avoid lowering this if possible.

PR-URL: #1428
Reviewed-By: Rod Vagg <rod@vagg.org>
PR-URL: #1226
Reviewed-By: Yosuke Furukawa <yosuke.furukawa@gmail.com>
Reviewed-By: TC
PR-URL: #1077
Reviewed-by: Colin Ihrig <cjihrig@gmail.com>
Mention that we generally disallow forced pushes but allow it
in trivial cases within 10 minutes of the original push unless
the branch pushed to already has new commits.

PR-URL: #1420
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Commit 36a7795 introduced a duplicate Buffer byteLength property.

PR-URL: #1438
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
When the string is empty, calling the binding is unnecessary and slow.

PR-URL: #1441
Reviewed-by: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
This commit restores the functionality of adding a module's path to
NODE_PATH and requiring it with require('.'). As NODE_PATH was never
intended to be used as a pointer to a module directory (but instead, to
a directory containing directories of modules), this feature is also
being deprecated in turn, to be removed at a later point in time.

PR-URL: #1363
Fixes: #1356
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
PR-URL: #1444
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Like libuv does.

Originally: node-forward/node#21

PR-URL: #1444
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>

Conflicts:
	vcbuild.bat
Add fd into debug message.

PR-URL: #1442

Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Allows the number of pooled free sockets to equal maxSockets.
Previously it would only allow maxSockets - 1.

PR-URL: #1242
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
This makes the linter happy again.

PR-URL: #1453
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Remove Readme.md, as the subsequent npm update commit creates a
README.md. Combining the create and delete operations into the
same commit leads to OSX machines running into issues – they
don't detect it as a rename, instead trying to create a new
README.md, which fails because Readme.md hasn't been deleted yet.
This causes the entire operation to fail spectacularly. Thus,
the delete operation is performed first, in this commit, then
the create operation follows in the npm update commit.

PR-URL: #1456
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
petkaantonov and others added 20 commits May 3, 2015 11:29
In addition to null, undefined and the empty string
are treated as empty (removing the component from the url).

The string '#' is treated same as empty values when
setting .hash.

The string '?' is treated same as empty values when
setting .search.

PR-URL: #1589
Fixes: #1588
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This reverts commit 6687721.

It was agreed that this change contained too much potential ecosystem
breakage, particularly around the inability to `delete` properties off a
`Url` object. It may be re-introduced for a later release, along with
better work on ecosystem compatibility.

PR-URL: #1602
Reviewed-By: Mikeal Rogers <mikeal.rogers@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Forrest L Norvell <forrest@npmjs.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Isaac Z. Schlueter <i@izs.me>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
This reverts commit dbdd81a.

It was agreed that this change contained too much potential ecosystem
breakage, particularly around the inability to `delete` properties off a
`Url` object. It may be re-introduced for a later release, along with
better work on ecosystem compatibility.

PR-URL: #1602
Reviewed-By: Mikeal Rogers <mikeal.rogers@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Forrest L Norvell <forrest@npmjs.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Isaac Z. Schlueter <i@izs.me>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
This reverts commit 3fd7fc4.

It was agreed that this change contained too much potential ecosystem
breakage, particularly around the inability to `delete` properties off a
`Url` object. It may be re-introduced for a later release, along with
better work on ecosystem compatibility.

PR-URL: #1602
Reviewed-By: Mikeal Rogers <mikeal.rogers@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Forrest L Norvell <forrest@npmjs.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Isaac Z. Schlueter <i@izs.me>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Update AUTHORS list using tools/update-authors.sh

PR-URL: #1586
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
This makes `TLSWrap` and `SecureContext` objects collectable by the
incremental gc.

`res = null` destroys the cyclic reference in the `reading` property.
`this.ssl = null` removes the remaining reference to the `TLSWrap`.
`this.ssl._secureContext.context = null` removes the reference to
the `SecureContext` object, even though there might be references
to `this.ssl._secureContext` somewhere.

The `reading` property will now throw an error if accessed after the
socket is closed, but that should not happen.

PR-URL: #1580
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
Fix the following (non-serious) compiler warning:

    ../src/node_http_parser.cc:558:1: warning: missing initializer for
    member 'http_parser_settings::on_chunk_header'
    [-Wmissing-field-initializers]
    };
    ^
    ../src/node_http_parser.cc:558:1: warning: missing initializer for
    member 'http_parser_settings::on_chunk_complete'
    [-Wmissing-field-initializers]

Introduced in commit b3a7da1 ("deps: update http_parser to 2.5.0").

PR-URL: #1606
Reviewed-By: Fedor Indutny <fedor@indutny.com>
clang does not yet support -Og, fall back to -O0.

See: https://llvm.org/bugs/show_bug.cgi?id=20765
Fixes: #1608
PR-URL: #1609
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
The _debugger module uses the internal REPL module, but expects
to receive the userland REPL module. This fixes the breakage that
occurs by proxying the userland REPL module through the internal
module.

It also fixes an unintended in-REPL bug, where require(node-module)
was not resolving correctly.

PR-URL: #1605
Reviewed-By: Roman Reiss <me@silverwind.io>
The second step of augmenting the internal REPL with persistent
history was to re-open the history file with a 'w' handle. This
truncated the file. If a user did not enter a new line before
closing the REPL, their history would be deleted.

PR-URL: #1605
Reviewed-By: Roman Reiss <me@silverwind.io>
It's not supported by clang and commit e67542a ("build: disable -Og
when building with clang") is not sufficient because the configure
script no longer writes the 'clang' variable to common.gypi.

I could fix the configure script but I don't care enough actually do
so.  A fixed configure script won't help anyway when the compiler is
overridden through the CXX environment variable at compile time.

PR-URL: #1611
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
PR-URL: #1613
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
V8 4.2 introduces some minor C++ API changes that make it necessary for
many native add-ons to recompile in order to be usable in v2.0.0+

PR-URL: #1532
PR-URL: #1532

Notable Changes:

* crypto: significantly reduced memory usage for TLS (Fedor Indutny & Сковорода
  Никита Андреевич) #1529
* net: socket.connect() now accepts a 'lookup' option for a custom DNS
  resolution mechanism, defaults to dns.lookup() (Evan Lucas) #1505
* npm: Upgrade npm to 2.9.0. See the v2.8.4 and v2.9.0 release notes for
  details. Notable items:
  - Add support for default author field to make npm init -y work without
    user-input (@othiym23) npm/npm/d8eee6cf9d
  - Include local modules in npm outdated and npm update (@ArnaudRinquin)
    npm/npm#7426
  - The prefix used before the version number on npm version is now configurable
    via tag-version-prefix (@kkragenbrink) npm/npm#8014
* os: os.tmpdir() is now cross-platform consistent and will no longer returns a
  path with a trailling slash on any platform (Christian Tellnes) #747
* process:
  - process.nextTick() performance has been improved by between 2-42% across the
    benchmark suite, notable because this is heavily used across core (Brian White) #1548
  - New process.geteuid(), process.seteuid(id), process.getegid() and
    process.setegid(id) methods allow you to get and set effective UID and GID
    of the process (Evan Lucas) #1536
* repl:
  - REPL history can be persisted across sessions if the NODE_REPL_HISTORY_FILE
    environment variable is set to a user accessible file,
    NODE_REPL_HISTORY_SIZE can set the maximum history size and defaults to 1000
    (Chris Dickinson) #1513
  - The REPL can be placed in to one of three modes using the NODE_REPL_MODE
    environment variable: sloppy, strict or magic (default); the new magic mode
    will automatically run "strict mode only" statements in strict mode
    (Chris Dickinson) #1513
* smalloc: the 'smalloc' module has been deprecated due to changes coming in V8
  4.4 that will render it unusable
* util: add Promise, Map and Set inspection support (Christopher Monsanto) #1471
* V8: upgrade to 4.2.77.18, see the ChangeLog for full details. Notable items:
  - Classes have moved out of staging; the class keyword is now usable in strict
    mode without flags
  - Object literal enhancements have moved out of staging; shorthand method and
    property syntax is now usable ({ method() { }, property })
  - Rest parameters (function(...args) {}) are implemented in staging behind the
    --harmony-rest-parameters flag
  - Computed property names ({['foo'+'bar']:'bam'}) are implemented in staging
    behind the --harmony-computed-property-names flag
  - Unicode escapes ('\u{xxxx}') are implemented in staging behind the
    --harmony_unicode flag and the --harmony_unicode_regexps flag for use in
    regular expressions
* Windows:
  - Random process termination on Windows fixed (Fedor Indutny) #1512 / #1563
  - The delay-load hook introduced to fix issues with process naming (iojs.exe /
    node.exe) has been made opt-out for native add-ons. Native add-ons should
    include 'win_delay_load_hook': 'false' in their binding.gyp to disable this
    feature if they experience problems . (Bert Belder) #1433
* Governance:
  - Rod Vagg (@rvagg) was added to the Technical Committee (TC)
  - Jeremiah Senkpiel (@Fishrock123) was added to the Technical Committee (TC)
Pass the isolate explicitly.  Overlooked in commit ccb199a ("src: fix
deprecation warnings") because g++ 4.8 and 4.9 don't warn for it
whereas g++ 5.1 does.

PR-URL: #1577
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Commit ccb199a ("src: fix deprecation warnings") passes env()->isolate()
to the Buffer::New() call.  It's somewhat inefficient because the callee
looks up the environment from the isolate.  Just pass the env directly.

PR-URL: #1577
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
* @indutny's SealHandleScope patch (484bebc38319fc7c622478037922ad73b2edcbf9)
  has been cherry picked onto the top of V8 to make it compile.
* There's some test breakage in contextify.
@chrisdickinson chrisdickinson added the v8 engine Issues and PRs related to the V8 dependency. label May 5, 2015
@chrisdickinson chrisdickinson added this to the 3.0.0 milestone May 5, 2015
@domenic
Copy link
Contributor

domenic commented May 5, 2015

VM test failures just look like the error message changed. We're currently testing for /not defined/ (probably the old error message was something like "foo is not defined") but the new error message is "Cannot set property 'bar' of undefined".

@domenic
Copy link
Contributor

domenic commented May 5, 2015

Merging master into next seems crazy-pants if it produces this kind of noise; can we delete the current next, cherry-pick anything relevant, and upload a new one?

@Fishrock123
Copy link
Contributor

Merging master into next seems crazy-pants if it produces this kind of noise; can we delete the current next, cherry-pick anything relevant, and upload a new one?

Wasn't that the original plan?

Besides, this branch is for us. I wouldn't worry about preserving it.

@bnoordhuis
Copy link
Member

I second @domenic's suggestion. Everything that's in the current next branch should also be in master, so just nuke it and create a new one.

@targos
Copy link
Member

targos commented May 5, 2015

About the VM error, is it different when you try vm.runInNewContext('foo.bar=5;') or vm.runInThisContext('foo.bar=5;') ?
In current v2.0.0 it is exactly the same: ReferenceError: foo is not defined

@domenic
Copy link
Contributor

domenic commented May 5, 2015

Hmm the TypeError vs. ReferenceError is a bit concerning actually.

@chrisdickinson
Copy link
Contributor Author

Ok, reopened as new PR: #1632

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.