From f57981cf35c1f47c4c9f6cd8c19266e967644f6a Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Tue, 5 Sep 2023 10:46:54 -0400 Subject: [PATCH] Update to 20.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Starting from Node.js v20.6.0, Node.js supports `.env` files for configuring environment variables. Your configuration file should follow the INI file format, with each line containing a key-value pair for an environment variable. To initialize your Node.js application with predefined configurations, use the following CLI command: `node --env-file=config.env index.js`. For example, you can access the following environment variable using `process.env.PASSWORD` when your application is initialized: ```text PASSWORD=nodejs ``` In addition to environment variables, this change allows you to define your `NODE_OPTIONS` directly in the `.env` file, eliminating the need to include it in your `package.json`. This feature was contributed by Yagiz Nizipli in [#48890](https://github.com/nodejs/node/pull/48890). In ES modules, [`import.meta.resolve(specifier)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve) can be used to get an absolute URL string to which `specifier` resolves, similar to `require.resolve` in CommonJS. This aligns Node.js with browsers and other server-side runtimes. This feature was contributed by Guy Bedford in There is a new API `register` available on `node:module` to specify a file that exports module customization hooks, and pass data to the hooks, and establish communication channels with them. The “define the file with the hooks” part was previously handled by a flag `--experimental-loader`, but when the hooks moved into a dedicated thread in 20.0.0 there was a need to provide a way to communicate between the main (application) thread and the hooks thread. This can now be done by calling `register` from the main thread and passing data, including `MessageChannel` instances. We encourage users to migrate to an approach that uses [`--import`](https://nodejs.org/api/cli.html#--importmodule) with `register`, such as: ```bash node --import ./file-that-calls-register.js ./app.js ``` Using `--import` ensures that the customization hooks are registered before any application code runs, even the entry point. This feature was contributed by Izaak Schroeder in and Authors of module customization hooks can how handle both ES module and CommonJS sources in the `load` hook. This works for CommonJS modules referenced via either `import` or `require`, so long as [the main entry point of the application is handled by the ES module loader](https://nodejs.org/api/cli.html#program-entry-point) (such as because the entry point is an ES module file, or if the `--import` flag is passed). This should simplify the customization of the Node.js module loading process, as package authors can customize more of Node.js without relying on deprecated APIs such as `require.extensions`. This feature was contributed by Antoine du Hamel in Now when Node.js starts up, it makes sure that there is a `v8::CppHeap` attached to the V8 isolate. This enables users to allocate in the `v8::CppHeap` using `` headers from V8, which are now also included into the Node.js headers available to addons. Note that since Node.js only bundles the cppgc library coming from V8, [the ABI stability](https://nodejs.org/en/docs/guides/abi-stability#abi-stability-in-nodejs) of cppgc is currently not guaranteed in semver-minor and -patch updates, but we do not expect the ABI to break often, as it has been stable and battle-tested in Chromium for years. We may consider including cppgc into the ABI stability guarantees when it gets enough adoption internally and externally. To help addon authors create JavaScript-to-C++ references of which V8's garbage collector can be aware, a helper function [`node::SetCppgcReference(isolate, js_object, cppgc_object)`](https://github.com/nodejs/node/blob/v20.6.0/test/addons/cppgc-object/binding.cc) has been added to `node.h`. V8 may provide a native alternative in the future, which could then replace this Node.js-specific helper. In the mean time, users can use this API to avoid having to hard-code the layout of JavaScript wrapper objects. An example of how to create garbage-collected C++ objects in the unified heap and wrap it in a JavaScript object can be found in the [Node.js addon tests](https://github.com/nodejs/node/blob/v20.6.0/test/addons/cppgc-object/binding.cc). The existing `node::ObjectWrap` helper would continue to work, while cppgc-based object management serves as an alternative with some advantages mentioned in [the V8 blog post about Oilpan](https://v8.dev/blog/oilpan-library). This feature was contributed by Daryl Haresign and Joyee Cheung in and . Signed-off-by: Stephen Gallagher --- nodejs20.spec | 10 +++++----- sources | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/nodejs20.spec b/nodejs20.spec index fb5d97a..c2e0dfa 100644 --- a/nodejs20.spec +++ b/nodejs20.spec @@ -26,8 +26,8 @@ # than a Fedora release lifecycle. %global nodejs_epoch 1 %global nodejs_major 20 -%global nodejs_minor 5 -%global nodejs_patch 1 +%global nodejs_minor 6 +%global nodejs_patch 0 # nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h %global nodejs_soversion 115 %global nodejs_abi %{nodejs_soversion} @@ -97,7 +97,7 @@ # npm - from deps/npm/package.json %global npm_epoch 1 -%global npm_version 9.8.0 +%global npm_version 9.8.1 # In order to avoid needing to keep incrementing the release version for the # main package forever, we will just construct one for npm that is guaranteed @@ -145,7 +145,7 @@ Source203: v8.pc.in # These are generated by nodejs-sources.sh Source101: cjs-module-lexer-1.2.2-stripped.tar.gz Source102: wasi-sdk-11.0-linux.tar.gz -Source111: undici-5.22.1-stripped.tar.gz +Source111: undici-5.23.0-stripped.tar.gz Source112: wasi-sdk-20.0-linux.tar.gz Patch: 0001-Remove-unused-OpenSSL-config.patch @@ -299,7 +299,7 @@ Provides: bundled(histogram) = %{histogram_version} # Upstream has added a new URL parser that has no option to build as a shared # library (19.7.0+) -Provides: bundled(ada) = 2.5.1 +Provides: bundled(ada) = 2.6.0 %description diff --git a/sources b/sources index 10a3829..139f38b 100644 --- a/sources +++ b/sources @@ -1,7 +1,7 @@ -SHA512 (node-v20.5.1-stripped.tar.gz) = b32d85d88ca37b5db2f7d82165ea92c8998a7a5a8db45a15d05e75a01f9da8e9747bea4ff1ec053f86fd9d6979e79ac584f4ffb4dfc59df058a35c0cf778fe18 +SHA512 (node-v20.6.0-stripped.tar.gz) = d5dd771a321611ff01b7c7b14ccef866f481c13af689d7429b10730f317eafe4543e4dc1cda1d3bbba841f9ccee4e8d9e76b79eab536c0cfc6b0201642ba9e7a SHA512 (icu4c-73_2-data-bin-b.zip) = 8512947da7b2a927627abed6bd7e04218cd4fcd02d44eb72a82ffa87aedabfc3be5d3152e9fba33a769ef35e2db55764c2ab8f5bd65b4e89aa9c15b33392e078 SHA512 (icu4c-73_2-data-bin-l.zip) = 420c2f5090927dab13f5449da3b0ec7bf86a91ea8723f177aca2907a8eea9bcb4c3475b66c54355ae320001813db57a00afdab00bd85b8c36d39adedcab80bfc -SHA512 (cjs-module-lexer-1.2.2-stripped.tar.gz) = 0e1cf8cd4960036b8ccf9bcbd87c837e3686515be00bb06e7980ff6c5384a5287182df31303754a22d8af040ee635e9c0e7ed7a86fde4e4d538621a253b7a612 +SHA512 (cjs-module-lexer-1.2.2-stripped.tar.gz) = 0380a1b73bbe835fa97c28e32a075025b8d2e2dbdd4ef8ba0ee955b2d02cb3d9cffd9e59ccd0ca02a93bfae166252b32784258f0ee06d7a7955347a061649019 SHA512 (wasi-sdk-11.0-linux.tar.gz) = e3ed4597f7f2290967eef6238e9046f60abbcb8633a4a2a51525d00e7393df8df637a98a5b668217d332dd44fcbf2442ec7efd5e65724e888d90611164451e20 -SHA512 (undici-5.22.1-stripped.tar.gz) = 8806f0425ddc0eb0e66f85bf2c7cbe7d555ef7740e28ec4eb90e3fa88f507287a7c4bc956b504dad4da8065d3d2ae4b9a0a1e700f57a57e389e2621d1af0dfe9 +SHA512 (undici-5.23.0-stripped.tar.gz) = 7a3071de46b189c1d5721e02793a0c8c7b1581f3557f4d63a0c7afc70154ecabfb3c0f7dd68924f0eb5093ed7c2d6c92a149ee17ad02a6d7af9b0d3cbc362f20 SHA512 (wasi-sdk-20.0-linux.tar.gz) = ff3d368267526887534f50767ff010bd368e9c24178ab2f0cf57a8ed0b3a82fbf85986d620ab2327ac6bb3f456c65adc6edb80626a1289e630dde7e43b191b42