Deno 2018: Experimental, Developmental, & Limited to TypeScript Support
“Using Node is kind of like nails-on-chalkboard for me. I see the bugs that I introduced that aren’t really bugs at this point they’re just how it works but they are bugs and there were design mistakes made that just cannot be corrected now because there’s so much software that uses it.”
Dahl reportedly spent 2017 as a member of the Google Brain Residency Program working with TensorFlow and issues related to video reprocessing. In order to understand the change of perspective regarding the Node.js platform, it is recommended to compare the two videos:
Ryan Dahl: Original Node.js Presentation (2009)
- "...V8: Google
- libev: event loop library
- libeio: thread pool library
- http-parser: a ragel HTTP parser
- evcom: stream socket library on top of libev
- udns: non-blocking DNS resolver..."
10 Things I Regret About Node.js - Ryan Dahl - JSConf EU (2018)
- "Supports TypeScript out of the box.
- Uses a recent version of V8.
- No package.json.
- No npm.
- Not explicitly compatible with Node.
- Imports reference source code URLs only.
- File system and network access can be controlled in order to run sandboxed code.
- Single executable."
Problems in Node.js: Web Security, Modules, Index.js, & the Build Process
In terms of regrets about the Node.js web server project, Dahl stated:
- regret: no use of promises for asynch/await
- regret: web security, write permissions, & file access
- regret: the Build System (GYP/GN/Python)
---> better would have been a Foreign Function Interface (FFI)
- regret: JSON & NPM central repository dependencies
- regret: node_modules too heavy & often required without the extension
- regret: Index.js complicates the module loading system & overly "cute"
Overall, Dahl admitted that he still likes Node.js, the I/O structure, & programming on the platform, but built Deno runtime environment to address these regrets with a new product.
Install Deno using Bash:
alias file_server="deno \ https://deno.land/x/net/file_server.ts --allow-net"
Upgrade to the latest published version of Deno: