Deno
Ryan Dahl
2019.04.24
JS.LA
Disclaimer
This talk is aimed at experienced enthusiasts
If this isn't you: Don't Panic
Ignore this talk - use Node. Node isn't going anywhere!
Deno is a new command-line runtime
for executing JavaScript and TypeScript
Primarily it is built on top of:
But why!? Isn't this exactly what Node does?
JavaScript (both the language itself and the ecosystem around it) has changed significantly since Node was designed in 2009. Notably:
Node has problems:
(These problems aren't unique to Node. Python and Ruby suffer similarly)
I want a fun and productive system for scripting.
A good scripting platform is too useful of a tool to shrug and accept the status quo.
I find neither Node nor Python nor Ruby nor any other dynamic language platform satisfactory.
Deno attempts to correct design mistakes in Node by radically breaking compatibility
V8 (C++)
Deno (Rust)
deno::Isolate (Rust)
Uint8Array
Internal Design (VERY VERY simplified)
Deno.core.send()
Deno.core.recv()
JS
Demo 1
deno help
REPL
Deno.metrics()
cat program
Deno is (kind of) like an OS
Linux
Processes
Syscalls
File descriptors (fd)
Deno
Web Workers
Ops
Resource ids (rid)
Demo 2
location.href
import.meta
deno types
Demo 3
http server
file_server
Embedding Deno
Deno is released as a standalone executable, but it's also embeddable as a Rust crate.
Potential use cases:
Roadmap: Aiming for 1.0 by end of summer
Soon:
Eventually:
Deno is an open collaboration of many people.
Contributions welcome!
Thanks!