2018-05-18 12:25:59 -04:00
|
|
|
# deno
|
|
|
|
|
2018-05-29 22:32:43 +04:30
|
|
|
[](https://travis-ci.com/ry/deno)
|
2018-05-18 12:25:59 -04:00
|
|
|
|
2018-06-08 04:38:47 -04:00
|
|
|
## A secure TypeScript runtime built on V8
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-05-30 17:11:15 +02:00
|
|
|
* Supports TypeScript 2.8 out of the box. Uses V8 6.8.275.3. That is, it's
|
|
|
|
very modern JavaScript.
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-08 04:38:47 -04:00
|
|
|
* No `package.json`. No npm. Not explicitly compatible with Node.
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-05-29 01:35:06 -04:00
|
|
|
* Imports reference source code URLs only.
|
2018-05-28 23:52:22 -04:00
|
|
|
```
|
|
|
|
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"
|
|
|
|
import { log } from "./util.ts"
|
|
|
|
```
|
2018-05-30 17:11:15 +02:00
|
|
|
Remote code is fetched and cached on first execution, and never updated until
|
2018-06-08 04:38:47 -04:00
|
|
|
the code is run with the `--reload` flag. (So, this will still work on an
|
2018-05-30 17:11:15 +02:00
|
|
|
airplane. See `~/.deno/src` for details on the cache.)
|
2018-05-28 23:52:22 -04:00
|
|
|
|
|
|
|
* File system and network access can be controlled in order to run sandboxed
|
2018-05-30 17:11:15 +02:00
|
|
|
code. Defaults to read-only file system access and no network access.
|
|
|
|
Access between V8 (unprivileged) and Golang (privileged) is only done via
|
2018-06-01 02:31:37 +08:00
|
|
|
serialized messages defined in this
|
2018-06-08 04:38:47 -04:00
|
|
|
[protobuf](https://github.com/ry/deno/blob/master/msg.proto). This makes it
|
2018-06-01 02:31:37 +08:00
|
|
|
easy to audit.
|
2018-05-30 17:11:15 +02:00
|
|
|
To enable write access explicitly use `--allow-write` and `--allow-net` for
|
|
|
|
network access.
|
2018-05-28 23:52:22 -04:00
|
|
|
|
|
|
|
* 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)
|
|
|
|
```
|
|
|
|
|
2018-05-29 18:24:56 +09:00
|
|
|
* Always dies on uncaught errors.
|
2018-05-29 03:20:04 -04:00
|
|
|
|
2018-06-08 04:38:47 -04:00
|
|
|
* Supports top-level `await`.
|
2018-05-29 03:20:04 -04:00
|
|
|
|
|
|
|
* Aims to be browser compatible.
|
|
|
|
|
2018-05-29 04:28:32 -04:00
|
|
|
* Can be used as a library to easily build your own JavaScript runtime.
|
|
|
|
https://github.com/ry/deno/blob/master/cmd/main.go
|
|
|
|
|
2018-05-29 03:20:04 -04:00
|
|
|
|
|
|
|
## Status
|
|
|
|
|
|
|
|
Segfaulty.
|
|
|
|
|
2018-06-01 02:31:37 +08:00
|
|
|
No docs yet. For some of the public API see: [deno.d.ts](https://github.com/ry/deno/blob/master/deno.d.ts).
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-01 02:31:37 +08:00
|
|
|
And examples are around here: [testdata/004_set_timeout.ts](https://github.com/ry/deno/blob/master/testdata/004_set_timeout.ts).
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-15 13:33:23 +02:00
|
|
|
Roadmap is [here](https://github.com/ry/deno/blob/master/Roadmap.md).
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-08 04:38:47 -04:00
|
|
|
Also see this presentation: http://tinyclouds.org/jsconf2018.pdf
|
2018-06-04 09:10:54 +02:00
|
|
|
|
2018-06-11 14:28:33 -04:00
|
|
|
### 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).
|
2018-06-04 09:10:54 +02:00
|
|
|
|
2018-05-28 23:52:22 -04:00
|
|
|
## Compile instructions
|
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
First install the javascript deps.
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
cd deno2
|
2018-06-08 04:38:47 -04:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
cd js; yarn install
|
2018-05-31 14:07:02 +10:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
gn gen out/Debug --args='cc_wrapper="ccache" is_debug=true '
|
2018-06-01 02:31:37 +08:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
Then build with ninja:
|
2018-05-31 14:07:02 +10:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
ninja -C out/Debug/ deno
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
Other useful commands:
|
2018-05-28 23:52:22 -04:00
|
|
|
|
2018-06-22 14:23:42 +02:00
|
|
|
gn args out/Debug/ --list # List build args
|
|
|
|
gn args out/Debug/ # Modify args in $EDITOR
|
|
|
|
gn desc out/Debug/ :deno
|