blob: e8a2f8b172bd1f31a375d858c902190b773a1266 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# deno
[](https://travis-ci.com/ry/deno)
## A secure TypeScript runtime built on V8
* Supports TypeScript 2.8 out of the box. Uses V8 6.9.297. 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](https://github.com/ry/deno/blob/master/src/msg.proto). 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.
## Status
Segfaulty. Check back soon.
Roadmap is [here](https://github.com/ry/deno/blob/master/Roadmap.md).
Also see this presentation: http://tinyclouds.org/jsconf2018.pdf
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).
## Build instructions
To ensure reproducable builds, Deno has most of its dependencies in a git
submodule. However, you need
[rustc](https://www.rust-lang.org/en-US/install.html) installed separately.
You probably want
[ccache](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/ccache)
installed too.
To build:
# Fetch deps.
git clone --recurse-submodules https://github.com/ry/deno.git
cd deno
./tools/run_hooks.py
# Build
./tools/build.py
# Run
./out/debug/deno tests/002_hello.ts
Other useful commands:
# Call ninja manually.
./third_party/depot_tools/ninja -C out/debug :all
# Build a release binary.
./tools/build.py --mode=release :deno
# List executable targets.
./third_party/depot_tools/gn ls out/debug //:* --as=output --type=executable
# List build configuation.
./third_party/depot_tools/gn args out/debug/ --list
# Edit build configuration.
./third_party/depot_tools/gn args out/debug/
# Describe a target.
./third_party/depot_tools/gn desc out/debug/ :deno
./third_party/depot_tools/gn help
|