Node.js 10.5 ist da und bringt ein großes neues Feature mit, das bislang aber noch als experimentell markiert ist: Mit Worker Threads bekommt Node nun Support für Multi-Threading.
Meistens bringen Minor Releases von Node.js nur kleinere Neuerungen mit. Nicht so in dieser Version: Node v10.5.0 unterstützt Multi-Threading mit Worker Threads. Bislang handelt es sich dabei nur um ein experimentelles Feature, das noch Breaking Changes unterzogen werden könnte, bevor es fertig ist. Es eignet es sich also eher zum Testen als zur Auslieferung. Allerdings hält das die Community nicht davon ab, sich bereits jetzt intensiv mit dem Feature zu befassen.
Auf GitHubGist hat Benjamin Gruenbaum aus dem Node.js-Team einen eigenen FAQ zu den neuen Worker Threads eröffnet und dort Fragen zusammengestellt, die häufig im entsprechenden Pull Request gestellt wurden. Dort wird das Funktionsprinzip der neuen Worker Threads erläutert. So umfasste das Pull Request zu den Worker Threads eine Standardisierung für eine geteilte Speichernutzung und Locks (mutexes).
Die neuen Worker Threads sollen außerdem primär als Option für die Arbeit an Tasks gedacht sein, die eine besonders hohe CPU-Auslastung verursachen. Grundsätzlich sollte das allerdings nicht dazu führen, dass Nutzer nun alle Node.js-Apps in synchron auszuführende I/O-Aufgaben unterteilen. Das widerspräche dem Grundgedanken von Node.js, kommentiert Gruenbaum in den FAQ. Dafür sollten weiterhin lieber die bereits vorhandenen Async APIs genutzt werden.
Auf der Node.js-Website steht außerdem bereits eine Dokumentation zu den neuen Worker Threads zur Verfügung. Der Stability-Index des Features ist hier mit 1 angegeben. Das bedeutet, dass das Node.js-Team explizit von einer Nutzung in der Production abrät.
Zu den weiteren Neuerungen in Node.js 10.5 gehört, dass nun crypto.scrypt()
unterstützt wird. Mit dem Scrypt-Support greift Node eine Änderung auf, die in OpenSSL zu v1.1.0 vorgenommen wurde. Die Funktion soll laut Pull Request Auswirkungen auf Brute-Force-Angriffe auf Anwendungen haben, die durch Scrypt erschwert werden.
Alle Änderungen an Node.js 10.5 können im Node-Blog nachgelesen werden.