From Fedora Project Wiki
m (Sgallagh moved page Changes/NodeJS4x to Changes/NodeJS5x: Fedora 24 is going to ship with a newer major version than originally specified.)
(No difference)

Revision as of 20:12, 1 April 2016

Node.js 4.2

Summary

Fedora 24 will be updated to Node.js 4.2, the latest LTS release of the platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications.

Owner

Current status

Detailed Description

Node.js has seen many changes between v0.10 and v4.x. There is a listing of changes documented on the wiki. Note that this release includes API updates that may require dependency updates. Following are some highlights:

  • Streams 3
    • The Streams implementation now works the way you thought it already should, without introducing any changes to the API. Basically this means no more getting stuck in "old mode", there are only streams that are flowing or not.
    • Streams now support the use of cork and uncork mechanisms to prevent flushing writes out to the system if an application is going to be performing many writes in a row. There is an implicit uncork performed when you end a writable stream.
  • HTTP
    • maxSockets are no longer limited to 5. The default is now set to Infinity with the developer and the operating system given control over how many simultaneous connections an application can keep open to a given host.
    • Proper KeepAlive support means that sockets will stay open until they timeout at the configured time, are closed by the remote side, or the process exits. Developer's no longer have to make sure requests have been pipelined to keep the socket open, or use an alternative module to get that support.
    • Developers can also now explicitly flushHeaders to ensure time to first byte is low and proxied connections are held open.
  • Cluster
    • Now has two modes of operation, the new default is a round robin distribution mechanism where the master accepts new connections and distributes them to your workers. If you want you can still opt back into the old method where your workers are responsible for acception connections.
  • TLS
    • We have the new TLSWrap mechanism under the hood, this eliminates quite a few of the hops back and forth between JavaScript and our C++ implementations.
    • Added APIs for asynchronous SNI callbacks, OCSP stapling, and storage events.
  • Buffer
    • We use a more accurate mechanism for allocating memory for buffers now, which means you'll see less overhead and impact from holding onto to small slices of Buffers. This reduces the amount of memory pressure on the system, which means GC runs are quicker, which means Node.js is on CPU less, and thus lower latency for your applications.
  • child_process
    • spawnSync/execSync have been added to facilitate synchronous child processes, warning your node process won't make forward progress while waiting for the child to exit, caveat emptor!
  • Crypto
    • Added APIs for loading custom engines for use with compiled in OpenSSL.
    • More APIs support supplying the pass phrases.
    • Added APIs for RSA public/private key encryption/decryption.
  • VM
    • The module is now based on the Contextify module, which shares values from the sandbox to avoid missing changes inside the execution from appearing in the parent context.
    • Initial support for ECMAScript Internationalization API 1.0 (ECMA-402)
    • By default, Node.js v0.12.0 binaries are shipped with ECMA-402 support, but only for the English language. In other words, the ECMA-402 API is working as you would expect, but only data for the English language is included. You can find more info on how to include more languages in the Wiki.

These are just some of the changes you can find in this release of v0.12, and it's thanks to the hard work of the community and the members of team curating Node.js.

We are also pleased to report that this release of Node.js has tests passing on all of our supported platforms. On the one hand, this seems obvious (what are tests for if not to verify before you release it?!), but this is actually the first release of Node.js that has operated under this constraint. Requiring that all tests pass before releasing Node.js marks an important development for the project, and is essential for building a solid path moving forward.

Benefit to Fedora

Developers of Node.js applications who use Fedora and community members who package Node.js software for Fedora benefits from the new features and stability improvements in this release.

Node.js 4.x or later is also necessary for us to ship and support Visual Studio Code.

Scope

  • Proposal owners:
    • Update nodejs
    • Rebuild all binary modules, apply patches as necessary
    • Update npm (a list of dependencies and their progress is here).
  • Other developers:
    • Other Node.js packagers' attention may be required if the update causes issues for their packages.
  • Policies and guidelines:
    • Some minor updates to the Node.js guidelines are planned, however they are just Nice To Have for the purposes of this specific change.
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

Node.js 4.x breaks compatibility in a limited number of cases, which may affect third-party software. (See the Detailed Description above.) Due to the fact that 4.x is considered a long-term stable release by upstream and has been available and in use for quite some time, we expect these to be of minimal impact.

How To Test

Run your favorite Node.js applications and make sure they still work.

User Experience

There are no changes for end users of applications that use Node.js. There are limited changes for programmers, as stated in the Detailed Description above.

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: Bump epoch and revert to nodejs 0.10
  • Contingency deadline: Beta Freeze
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? N/A

Documentation

Release Notes

Fedora 23 features Node.js 4.2, the long-term stable version of the platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Developers may notice several minor API changes.