src | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
Roadmap.md |
deno
A secure TypeScript runtime built on V8
-
Supports TypeScript 2.8 out of the box. Uses V8 6.8.275.3. That is, it's very modern JavaScript.
-
No
package.json
. No npm. Not explicitly compatible with Node. -
Imports reference source code URLs only.
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts" import { log } from "./util.ts"
Remote code is fetched and cached on first execution, and never updated until the code is run with the
--reload
flag. (So, this will still work on an airplane. See~/.deno/src
for details on the cache.) -
File system and network access can be controlled in order to run sandboxed code. Defaults to read-only file system access and no network access. Access between V8 (unprivileged) and Golang (privileged) is only done via serialized messages defined in this protobuf. This makes it easy to audit. To enable write access explicitly use
--allow-write
and--allow-net
for network access. -
Single executable:
> ls -lh deno -rwxrwxr-x 1 ryan ryan 55M May 28 23:46 deno > ldd deno linux-vdso.so.1 => (0x00007ffc6797a000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f104fa47000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f104f6c5000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f104f3bc000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f104f1a6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f104eddc000) /lib64/ld-linux-x86-64.so.2 (0x00007f104fc64000)
-
Always dies on uncaught errors.
-
Supports top-level
await
. -
Aims to be browser compatible.
-
Can be used as a library to easily build your own JavaScript runtime. https://github.com/ry/deno/blob/master/cmd/main.go
Status
Segfaulty.
No docs yet. For some of the public API see: deno.d.ts.
And examples are around here: testdata/004_set_timeout.ts.
Roadmap is here.
Also see this presentation: http://tinyclouds.org/jsconf2018.pdf
Github Noise
I am excited about all the interest in this project. However, do understand that this is very much a non-functional prototype. There's a huge amount of heavy lifting to do. Unless you are participating in that, please maintain radio silence on github. This includes submitting trivial PRs (like improving README build instructions).
Compile instructions
First install the javascript deps.
cd src
cd js; yarn install
gn gen out/Debug --args='cc_wrapper="ccache" is_debug=true '
Then build with ninja:
ninja -C out/Debug/ deno
Other useful commands:
gn args out/Debug/ --list # List build args
gn args out/Debug/ # Modify args in $EDITOR
gn desc out/Debug/ :deno