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

v12.22.0 proposal #37797

Merged
merged 17 commits into from
Mar 30, 2021
Merged

v12.22.0 proposal #37797

merged 17 commits into from
Mar 30, 2021

Commits on Feb 23, 2021

  1. Revert "embedding: make Stop() stop Workers"

    This reverts commit 037ac99.
    
    As flaky CI failures have revealed, this feature was implemented
    incorrectly. `stop_sub_worker_contexts()` needs to be called on the
    thread on which the `Environment` is currently running, it’s not
    thread-safe. The current API requires `Stop()` to be thread-safe,
    though.
    
    We could add a new API for this, but unless there’s demand, that’s
    probably not necessary as `FreeEnvironment()` will also stop Workers,
    which is commonly the next action on an `Environment` instance after
    having `Stop()` called on it.
    
    Refs: #32531
    
    PR-URL: #32623
    Reviewed-By: James M Snell <[email protected]>
    Reviewed-By: Colin Ihrig <[email protected]>
    Reviewed-By: Gireesh Punathil <[email protected]>
    addaleax authored and richardlau committed Feb 23, 2021
    Configuration menu
    Copy the full SHA
    0a35d49 View commit details
    Browse the repository at this point in the history
  2. src,test: add regression test for nested Worker termination

    This adds a regression test for terminating a Worker inside which
    another Worker is running.
    
    PR-URL: #32623
    Refs: #32531
    Reviewed-By: James M Snell <[email protected]>
    Reviewed-By: Colin Ihrig <[email protected]>
    Reviewed-By: Gireesh Punathil <[email protected]>
    addaleax authored and richardlau committed Feb 23, 2021
    Configuration menu
    Copy the full SHA
    6cef0e3 View commit details
    Browse the repository at this point in the history

Commits on Mar 8, 2021

  1. http: runtime deprecate legacy HTTP parser

    The legacy HTTP parser, used by default in versions of Node.js prior to
    12.0.0, is deprecated. The legacy HTTP parser cannot be guaranteed to be
    supported after April 2021. This commit introduces a deprecation warning
    for the legacy HTTP parser.
    
    PR-URL: #37603
    Refs: #31441
    Reviewed-By: Richard Lau <[email protected]>
    Reviewed-By: Matteo Collina <[email protected]>
    Reviewed-By: James M Snell <[email protected]>
    Reviewed-By: Benjamin Gruenbaum <[email protected]>
    Reviewed-By: Michaël Zasso <[email protected]>
    BethGriggs committed Mar 8, 2021
    Configuration menu
    Copy the full SHA
    a0b6104 View commit details
    Browse the repository at this point in the history

Commits on Mar 15, 2021

  1. deps: V8: cherry-pick beebee4f80ff

    Original commit message:
    ```
    cpu-profiler: Use Handle version of SourcePositionTableIterator
    
    The surrounding code can trigger an allocation through InliningStack
    which can eventually end up allocating a line ends array.
    
    This is fine as-is because the existing iterator code makes a copy
    of the byte array. It just triggers the no_gc dcheck in debug mode.
    
    Fixed: v8:10778
    Change-Id: Ic8c502767ec6c3d3b1f5e84df60638bd2fc6be75
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339102
    Auto-Submit: Peter Marshall <[email protected]>
    Commit-Queue: Tobias Tebbi <[email protected]>
    Reviewed-by: Tobias Tebbi <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#69247}
    ```
    
    Refs: v8/v8@beebee4
    
    PR-URL: #37293
    Backport-PR-URL: #37578
    Reviewed-By: Jiawen Geng <[email protected]>
    Reviewed-By: Juan José Arboleda <[email protected]>
    Reviewed-By: Richard Lau <[email protected]>
    psmarshall authored and richardlau committed Mar 15, 2021
    Configuration menu
    Copy the full SHA
    dfa04d9 View commit details
    Browse the repository at this point in the history
  2. test: add cpu-profiler-crash test

    This test is added as it usually crashes without applying the v8 patch:
    v8/v8@beebee4
    
    PR-URL: #37293
    Backport-PR-URL: #37578
    Refs: v8/v8@beebee4
    Reviewed-By: Jiawen Geng <[email protected]>
    Reviewed-By: Juan José Arboleda <[email protected]>
    Reviewed-By: Richard Lau <[email protected]>
    santigimeno authored and richardlau committed Mar 15, 2021
    Configuration menu
    Copy the full SHA
    0f6d445 View commit details
    Browse the repository at this point in the history

Commits on Mar 16, 2021

  1. worker: add eventLoopUtilization()

    Allow calling eventLoopUtilization() directly on a worker thread:
    
        const worker = new Worker('./foo.js');
        const elu = worker.performance.eventLoopUtilization();
        setTimeout(() => {
          worker.performance.eventLoopUtilization(elu);
        }, 10);
    
    Add a new performance object on the Worker instance that will hopefully
    one day hold all the other performance metrics, such as nodeTiming.
    
    Include benchmarks and tests.
    
    PR-URL: #35664
    Reviewed-By: Juan José Arboleda <[email protected]>
    Reviewed-By: Anna Henningsen <[email protected]>
    Reviewed-By: Gerhard Stöbich <[email protected]>
    Reviewed-By: James M Snell <[email protected]>
    
    Backport-PR-URL: #37165
    trevnorris authored and richardlau committed Mar 16, 2021
    Configuration menu
    Copy the full SHA
    eec7542 View commit details
    Browse the repository at this point in the history
  2. test: correct test-worker-eventlooputil

    The active worker check compared the time from sending message till
    response arrived from worker with the complete time the worker was
    running till it responses to the spin request.
    
    If sending back the message is slow for some reason the test fails.
    
    Adapt the test to compare the time seen inside the worker with the
    time read from main thread.
    
    PR-URL: #35891
    Fixes: #35844
    Refs: #35886
    Refs: #35664
    Reviewed-By: Gireesh Punathil <[email protected]>
    Reviewed-By: Rich Trott <[email protected]>
    
    Backport-PR-URL: #37165
    Flarna authored and richardlau committed Mar 16, 2021
    Configuration menu
    Copy the full SHA
    d7a4ccd View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2021

  1. v8: implement v8.takeCoverage()

    Add an v8.takeCoverage() API that allows the user to write the
    coverage started by NODE_V8_COVERAGE to disk on demand.
    The coverage can be written multiple times during the lifetime
    of the process, each time the execution counter will be reset.
    When the process is about to exit, one last coverage will
    still be written to disk.
    
    Also refactors the internal profiler connection code
    so that we use the inspector response id to identify
    the profile response instead of using an ad-hoc flag in C++.
    
    PR-URL: #33807
    Backport-PR-URL: #36352
    Reviewed-By: Anna Henningsen <[email protected]>
    Reviewed-By: Ben Noordhuis <[email protected]>
    Reviewed-By: Jiawen Geng <[email protected]>
    Reviewed-By: Ben Coe <[email protected]>
    joyeecheung authored and richardlau committed Mar 17, 2021
    Configuration menu
    Copy the full SHA
    8ddea3f View commit details
    Browse the repository at this point in the history
  2. v8: implement v8.stopCoverage()

    Add a v8.stopCoverage() API to stop the coverage collection
    started by NODE_V8_COVERAGE - this would be useful in
    conjunction with v8.takeCoverage() if the user don't want
    to emit the coverage at the process exit but still want
    to collect it on demand at some point.
    
    PR-URL: #33807
    Backport-PR-URL: #36352
    Reviewed-By: Anna Henningsen <[email protected]>
    Reviewed-By: Ben Noordhuis <[email protected]>
    Reviewed-By: Jiawen Geng <[email protected]>
    Reviewed-By: Ben Coe <[email protected]>
    joyeecheung authored and richardlau committed Mar 17, 2021
    Configuration menu
    Copy the full SHA
    86f34ee View commit details
    Browse the repository at this point in the history
  3. node-api: allow retrieval of add-on file name

    Unlike JS-only modules, native add-ons are always associated with a
    dynamic shared object from which they are loaded. Being able to
    retrieve its absolute path is important to native-only add-ons, i.e.
    add-ons that are not themselves being loaded from a JS-only module
    located in the same package as the native add-on itself.
    
    Currently, the file name is obtained at environment construction time
    from the JS `module.filename`. Nevertheless, the presence of `module`
    is not required, because the file name could also be passed in via a
    private property added onto `exports` from the `process.dlopen`
    binding.
    
    As an attempt at future-proofing, the file name is provided as a URL,
    i.e. prefixed with the `file://` protocol.
    
    Fixes: nodejs/node-addon-api#449
    PR-URL: #37195
    Backport-PR-URL: #37328
    Co-authored-by: Michael Dawson <[email protected]>
    Reviewed-By: Michael Dawson <[email protected]>
    2 people authored and richardlau committed Mar 17, 2021
    Configuration menu
    Copy the full SHA
    f569209 View commit details
    Browse the repository at this point in the history
  4. doc: mark modules implementation as stable

    PR-URL: #35781
    Backport-PR-URL: #37718
    Reviewed-By: Matteo Collina <[email protected]>
    Reviewed-By: Benjamin Gruenbaum <[email protected]>
    Reviewed-By: Rich Trott <[email protected]>
    Reviewed-By: Michaël Zasso <[email protected]>
    Reviewed-By: Franziska Hinkelmann <[email protected]>
    Reviewed-By: James M Snell <[email protected]>
    Reviewed-By: Myles Borins <[email protected]>
    Reviewed-By: Antoine du Hamel <[email protected]>
    Reviewed-By: Derek Lewis <[email protected]>
    guybedford authored and richardlau committed Mar 17, 2021
    Configuration menu
    Copy the full SHA
    bf8733f View commit details
    Browse the repository at this point in the history
  5. deps: update to [email protected]

    PR-URL: #37712
    Reviewed-By: Antoine du Hamel <[email protected]>
    Reviewed-By: Myles Borins <[email protected]>
    Reviewed-By: Bradley Farias <[email protected]>
    Reviewed-By: Geoffrey Booth <[email protected]>
    Reviewed-By: Colin Ihrig <[email protected]>
    Reviewed-By: Rich Trott <[email protected]>
    Reviewed-By: Michaël Zasso <[email protected]>
    guybedford authored and richardlau committed Mar 17, 2021
    Configuration menu
    Copy the full SHA
    1872625 View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2021

  1. node-api: define version 8

    Mark as stable the APIs that define Node-API version 8.
    
    PR-URL: #37652
    Backport-PR-URL: #37796
    Reviewed-By: Gerhard Stöbich <[email protected]>
    Reviewed-By: Michael Dawson <[email protected]>
    Reviewed-By: Chengzhong Wu <[email protected]>
    gabrielschulhof authored and richardlau committed Mar 19, 2021
    Configuration menu
    Copy the full SHA
    93dd799 View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2021

  1. lib: add URI handling functions to primordials

    PR-URL: #37394
    Backport-PR-URL: #37859
    Reviewed-By: Zijian Liu <[email protected]>
    Reviewed-By: James M Snell <[email protected]>
    aduh95 authored and richardlau committed Mar 29, 2021
    Configuration menu
    Copy the full SHA
    2da24ac View commit details
    Browse the repository at this point in the history
  2. module: improve support of data: URLs

    Add support for loading modules using percent-encoded URLs.
    
    PR-URL: #37392
    Backport-PR-URL: #37859
    Reviewed-By: Michaël Zasso <[email protected]>
    Reviewed-By: Bradley Farias <[email protected]>
    Reviewed-By: Myles Borins <[email protected]>
    Reviewed-By: Jan Krems <[email protected]>
    Reviewed-By: Guy Bedford <[email protected]>
    Reviewed-By: Luigi Pinca <[email protected]>
    Reviewed-By: Zijian Liu <[email protected]>
    aduh95 authored and richardlau committed Mar 29, 2021
    Configuration menu
    Copy the full SHA
    7b0ed4b View commit details
    Browse the repository at this point in the history
  3. test: fix races in test-performance-eventlooputil

    Fix two races in test-performance-eventlooputil resulting in a flaky
    test.
    
    elu1 was capture after start time t from spin look. If OS descides to
    reschedule the process after capturing t but before getting elu for
    >=50ms the spin loop is actually a nop. elu1 doesn't show this and as
    a result elut3 = eventLoopUtilization(elu1) results in
    elu3.active === 0.
    Moving capturing of t after capturing t, just before the spin look
    avoids this.
    
    Similar if OS decides to shedule a different process between getting
    the total elu from start and the diff elu showing the spin loop the
    check to verify that total active time is long then the spin loop
    fails.
    Exchanging these statements avoids this race.
    
    PR-URL: #36028
    Fixes: #35309
    Reviewed-By: Benjamin Gruenbaum <[email protected]>
    Reviewed-By: Rich Trott <[email protected]>
    Flarna authored and richardlau committed Mar 29, 2021
    Configuration menu
    Copy the full SHA
    364bf03 View commit details
    Browse the repository at this point in the history
  4. 2021-03-30, Version 12.22.0 'Erbium' (LTS)

    Notable changes
    
    The legacy HTTP parser is runtime deprecated:
    - The legacy HTTP parser, selected by the `--http-parser=legacy` command line
    option, is deprecated with the pending End-of-Life of Node.js 10.x (where it
    is the only HTTP parser implementation provided) at the end of April 2021. It
    will now warn on use but otherwise continue to function and may be removed in
    a future Node.js 12.x release.
    - The default HTTP parser based on llhttp is not affected. By default it is
    stricter than the now deprecated legacy HTTP parser. If interoperability with
    HTTP implementations that send invalid HTTP headers is required, the HTTP
    parser can be started in a less secure mode with the `--insecure-http-parser`
    command line option.
    
    ES Modules:
    - ES Modules are now considered stable.
    
    node-api:
    - Updated to node-api version 8 and added an experimental API to allow
    retrieval of the add-on file name.
    
    New API's to control code coverage data collection:
    - `v8.stopCoverage()` and `v8.takeCoverage()` have been added.
    
    New API to monitor event loop utilization by Worker threads
    - `worker.performance.eventLoopUtilization()` has been added.
    
    PR-URL: #37797
    richardlau committed Mar 29, 2021
    Configuration menu
    Copy the full SHA
    6a5797b View commit details
    Browse the repository at this point in the history