1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
2018-06-01 20:37:26 +02:00
cmd Support using deno as a library 2018-05-29 04:34:44 -04:00
testdata Allow importing of the compiled in typescript 2018-05-30 18:47:27 +02:00
testing Remove extension hack in ResolveModule. 2018-05-30 18:26:03 +02:00
.gitignore Add makefile and use protobufjs 2018-05-14 01:11:56 -04:00
.travis.yml Try to fix travis again. 2018-05-29 12:13:23 -04:00
deno.d.ts Add LICENSE 2018-05-28 21:52:13 -04:00
deno.ts Slightly better organization for deno module. 2018-05-30 18:59:50 +02:00
deno_dir.go Support using deno as a library 2018-05-29 04:34:44 -04:00
deno_dir_test.go Support using deno as a library 2018-05-29 04:34:44 -04:00
dispatch.go Support using deno as a library 2018-05-29 04:34:44 -04:00
dispatch.ts Add LICENSE 2018-05-28 21:52:13 -04:00
echo.go Support using deno as a library 2018-05-29 04:34:44 -04:00
fetch.go Replace -allow-connect and -allow-accept with -allow-net 2018-05-30 17:00:32 +02:00
fetch.ts Add LICENSE 2018-05-28 21:52:13 -04:00
globals.ts Add LICENSE 2018-05-28 21:52:13 -04:00
integration_test.go Fix a typo in integration_test.go 2018-05-31 15:57:43 +02:00
LICENSE Update LICENSE 2018-06-01 12:13:26 +02:00
main.go Replace -allow-connect and -allow-accept with -allow-net 2018-05-30 17:00:32 +02:00
main.ts lint 2018-05-29 05:27:27 -04:00
Makefile Remove extra out argument sent to Parcel and reduce logging in output (#22) 2018-05-30 20:03:10 -04:00
msg.proto fix message name 2018-05-31 23:39:44 +02:00
os.go Simplify code. (#88) 2018-06-01 20:37:26 +02:00
os.ts Add LICENSE 2018-05-28 21:52:13 -04:00
os_test.go Remove extension hack in ResolveModule. 2018-05-30 18:26:03 +02:00
package.json Try to fix tslint on travis 2018-05-28 09:47:40 -04:00
README.md Add reference links and enhance README's format 2018-05-31 23:32:02 +02:00
runtime.ts Lint runtime.ts (#73) 2018-06-01 20:33:16 +02:00
tests.ts Rename deno_testing to testing 2018-05-29 04:56:00 -04:00
text-encoding.d.ts My copyright doesn't belong here. 2018-05-29 00:49:00 -04:00
timers.go fix all duration to delay with mdn description 2018-05-31 23:39:44 +02:00
timers.ts fix all duration to delay with mdn description 2018-05-31 23:39:44 +02:00
TODO.txt Remove TODO. Fixed in 0ea603. 2018-05-30 16:48:30 +02:00
tsconfig.json Add tests.ts for fast unit tests. 2018-05-28 13:27:05 -04:00
tslint.json Compile cache and relative imports working. 2018-05-15 04:50:45 -04:00
types.ts Add LICENSE 2018-05-28 21:52:13 -04:00
url.js My copyright doesn't belong here. 2018-05-29 00:49:00 -04:00
util.go Use wildcard to check stack trace outputs (#3) 2018-05-30 08:33:55 -04:00
util.ts Add LICENSE 2018-05-28 21:52:13 -04:00
util_test.go Use wildcard to check stack trace outputs (#3) 2018-05-30 08:33:55 -04:00
v8_source_maps.ts Add LICENSE 2018-05-28 21:52:13 -04:00
v8worker2.d.ts Add LICENSE 2018-05-28 21:52:13 -04:00
yarn.lock Move text-encoding types into repo so i can hack it. 2018-05-27 14:13:36 -04:00

deno

Build Status

A secure TypeScript runtime 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.

Compile instructions

I will release binaries at some point but for now you have to build it yourself.

You will need Go with $GOPATH defined and $GOPATH/bin in your $PATH. You will also need yarn installed.

You need Protobuf 3. On Linux this might work:

cd ~
wget https://github.com/google/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip
unzip protoc-3.1.0-linux-x86_64.zip
export PATH=$HOME/bin:$PATH

On macOS, using HomeBrew:

brew install protobuf

Then you need protoc-gen-go and go-bindata:

go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/jteeuwen/go-bindata/...

You need to get and build v8worker2. The package will not build with go get and will log out an error, which can be ignored. It takes about 30 minutes to build:

go get -u github.com/ry/v8worker2
cd $GOPATH/src/github.com/ry/v8worker2
./build.py --use_ccache

Finally you can get deno and its other Go deps.

go get -u github.com/ry/deno/...

Now you can build deno and run it:

cd $GOPATH/src/github.com/ry/deno

make # Wait for redacted

./deno testdata/001_hello.js # Output: Hello World

make commands

make deno # Builds the deno executable.

make test # Runs the tests.

make fmt # Formats the code.

make clean # Cleans the build.