Looking to spread Node "everywhere," proponents are pushing for increased adoption across servers and the desktop as well as the internet of things, according to a presentation by Rod Vagg, member of the Node Technical Steering Committee, at this week's Node Summit conference in San Francisco.
Node developers endeavor to improve stability of Node releases, Vagg said. "Unfortunately, this branch that we have called 'current' -- we used to call it stable -- is not quite as stable as we'd like to be," he said. Too many breakages and regressions have been slipping into releases, he said, and while the situation is not "terrible," it needs improvement.
Planned language enhancements include Zones, which make it easier to write asynchronous code. Threaded workloads, meanwhile, could be implemented in Node akin to browsers supporting Web Workers, which run web content in scripts in background threads.
Proponents also want to improve the relationship between Node and the ECMA TC39 committee, which develops the ECMAScript specifications underlying JavaScript. For example, Node could accommodate ECMAScript's promises capability, which helps asynchronous communications. "There are some ways that promises work that work against the way that some people use Node," Vagg noted. Node could also implement low-level JavaScript features like tail calls, which could impact debugging.
Node also may see a shifting philosophy related to its use of HTTP, including adherence to HTTP/2. New APIs may be needed for HTTP/2, though, and Node's loose approach to HTTP has been a source of security issues.
To further address security, Node's developers want to clarify and have strict adherence to security policies for Node while supporting a growing ecosystem of security service providers, including Lift, Node Security, and Snyk. Node has faced security issues like denial-of-service and out-of-bounds vulnerabilities recently.
Plans also call for more rapid upgrades of the V8 engine underlying Node while maintaining ABI stability, Vagg said. Also, to provide add-on stability and multivirtual machine experimentation, Node proponents are exploring development of a new C++ API compatibility layer. Google's V8 JavaScript engine currently is the VM of choice for Node, but Microsoft hopes to change that with a planned standard interface.