Node.js is a software platform based on the V8 engine (which translates JavaScript into machine code), transforming JavaScript from a highly specialized language into a general-purpose language. Node.js adds the ability for JavaScript to interact with input/output devices via its API (written in C++), to connect other external libraries written in different languages, providing calls to them from JavaScript code. Node.js is used primarily on the server, acting as a web server, but there is an opportunity to develop in Node.js and desktop window applications (using NW.js, AppJS or Electron for Linux, Windows and Mac OS)


Improvements in Node.js 12:

  • Updated the V8 engine to version 7.4 with support for asynchronous stack traces, increased performance of await, JavaScript parsing, and calls when the actual and stated number of arguments do not match;
  • Support for TLS 1.3 in the tls module and disabling TLS 1.0/1.1 by default;
  • Strengthening protection and allocated memory size checks in the Buffer class;
  • Strengthening argument checks in the child_process, fs and assert modules;
  • Removal of obsolete handlers in the crypto module;
  • Changing default http module to llhttp parser;
  • Moved lib to use ECMAScript 6 style for class inheritance;
  • Experimental support for ECMAScript 6 modules;
  • Changed heap size restrictions in JavaScript, which are now selectable based on RAM size, rather than being fixed;
  • Improved support for native modules (in C/C++) in combination with Worker threads and N-API v4 to make it easier to use native - threads with asynchronous functions in C/C++;
  • Simplifying the use of the Worker Threads API, for which you now don't need to set the experimental function enable flag;
  • Adding experimental capability to generate on-the-fly diagnostic reports that reflect events to help diagnose problems such as crashes, performance drops, memory leaks, heavy CPU load, and unexpected error output;
  • Implementing a command to save a heap state dump for later analysis of memory allocation issues;
  • Startup acceleration due to in-built cache with compiled code of JavaScript libraries. Whereas previously the cache was being populated as we ran, the cache content for the built in Node.js libraries is now generated at build time and tied to the executable. - The new cache-filling model reduced startup time for the main thread by approximately 30%;
  • Increased platform and compiler version requirements: builds now require at least GCC 6 and glibc 2.17 on platforms other than macOS and Windows. Compatible distributions include Enterprise Linux 7, Debian 8 and Ubuntu 14.04. Windows requires at least Windows 7, 2008 R2 or 2012 R2 and Visual Studio 2017, and macOS requires macOS 10.10 "Yosemite" and Xcode 8.
Updated Nov. 25, 2020