Chapter 2. Features

This section contains information about feature changes introduced in the current release.

2.1. New and Changed features

Node.js 14 LTS has the following new features and enhancements.

For detailed changes in Node.js 14 LTS, see the upstream release notes and upstream documentation.

2.1.1. Diagnostic report available as stable feature

The diagnostic report functionality is available as a stable feature in Node.js 14 LTS. In earlier releases of Node.js, the functionality was available as Technology Preview.

This feature enables you to generate diagnostic reports for anomalies, such as, performance issues, memory leaks, high CPU usage, and so on. The report is in JSON format. The report uses the first failure data capture (FFDC) technology. This technology captures diagnostic data at the time when the error occurs.

2.1.2. V8 JavaScript engine updated from v8.0 to v8.4

The V8 JavaScript engine has been upgraded to v8.4. The engine contains new features, such as, optional chaining and API changes that provide better localization support.

2.1.3. Node.js metering labels for OpenShift

You can add metering labels to your Node.js pods and check Red Hat subscription details with the OpenShift Metering Operator.

Note

Do not add metering labels to any pods that an operator or a template deploys and manages.

Node.js should use the following metering labels:

  • com.redhat.component-name: Node.js
  • com.redhat.component-type: application
  • com.redhat.component-version: 14.x.x
  • com.redhat.product-name: "Red_Hat_Runtimes"
  • com.redhat.product-version: 2021-Q1

See Metering documentation for more information.

For more information on labels, see Understanding how to update labels on nodes.

Note
  • Replace the x.x in com.redhat.product-version with the product version of Node.js that you are using in the deployment. For example, if the Node.js product version is 14.15.1, specify 14.15.1 in the label.
  • A new flag rh-metering is available in the Nodeshift module, which automatically adds metering labels. If you are using the Nodeshift module to deploy your applications, you can use the rh-metering flag to automatically add the metering labels to the pods.

2.1.4. Full ICU (International Components for Unicode) data set is enabled by default

International Components for Unicode (ICU) supports internationalization and globalization of software applications. It provides support for many languages and locales. It simplifies the development and deployment of software applications in all languages.

From Node.js 14 LTS, the full-icu option is enabled by default. This option enables full ICU data set. For more information about the full-icu option, see Internationalization support.

In previous releases of Node.js, only English data set was enabled by default. You had to perform additional steps to get and enable support for other locales.

If you require support for English only and you want to save disk space by removing the full ICU data set, enter the following command as the root user:

# dnf remove nodejs-full-i18n

2.1.5. Support for Node.js Runtime on IBM Z and IBM Power Systems

The Red Hat build of Node.js for s390x and ppc64le platform is supported only in OpenShift environments provisioned on IBM Z and IBM Power Systems infrastructure. Running a Node.js application on a stand-alone installation of RHEL on IBM Z and IBM Power Systems is not supported.

New images for products supported on IBM Z and IBM Power Systems are available in the Red Hat Container Catalog.

For more information about deploying Node.js applications on OpenShift provisioned on IBM Z and IBM Power Systems infrastructure, see the section Example applications for Node.js.

2.2. Deprecated features

There are no features deprecated in this release.

2.3. Technology preview

The following features are available as Technology Preview features in Node.js 14 LTS release.

2.3.1. Circuit breaker pattern Opossum for Red Hat build of Node.js

Opossum is a circuit breaker for Node.js. Red Hat build of Node.js provides a fully supported @redhat/opossum module.

The circuit breaker pattern is used to reduce the impact of network failure and high latency on service architectures, where services asynchronously invoke other services.

The @redhat/opossum module is available for download from the Red Hat Customer registry. The modules with the @redhat namespace should be downloaded from the Red Hat registry and all the other modules should be downloaded from the npm registry. To specify the download paths, create a .npmrc file in the root directory of your application with the following code:

@redhat:registry=https://npm.registry.redhat.com
registry=https://registry.npmjs.org

After specifying the download paths, to install the @redhat/opossum module in your application enter the following command:

$ npm install @redhat/opossum

To work with the @redhat/opossum module add the following code to your application:

const CircuitBreaker = require(‘@redhat/opossum’)

2.3.2. New class for async local storage

The AsyncLocalStorage class creates an asynchronous state in callbacks and promise chains. Use the class to store data in these asynchronous states.

2.3.3. WebAssembly System Interface (WASI)

The WebAssembly packages for Node.js improve performance and cross-platform support.

The new WASI APIs provide an implementation of the WebAssembly System Interface specification. Use this interface for sandboxed execution of WebAssembly applications. Using the interface, the applications also get access to the underlying operating system.

2.3.4. Removed the warning message for EcmaScript modules

In earlier releases of Node.js, a warning message was returned when EcmaScript modules were used in the applications. The warning message indicated that the EcmaScript modules are experimental features.

From Node.js 14 LTS onward, the warning message has been removed. However, note that the EcmaScript modules are still available as Technology Preview.

2.4. Supported architectures

Node.js builder images and RPM packages are available and supported for use with the following CPU architectures:

  • AMD x86_64
  • IBM Z (s390x) in the OpenShift environment
  • IBM Power Systems (ppc64le) in the OpenShift environment