1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-28 01:59:06 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
Ryan Dahl b79ce93010 Allow deno_buf with null alloc_ptr to be memcpy'd
This is a temporary hack to allow for easier restructuring of
the serialization code as we move Flatbuffer stuff from C++ to Rust.
2018-07-24 12:29:54 -04:00
build_extra Change copyrights to be 'Deno authors'. 2018-07-24 10:38:11 -04:00
js Allow deno_buf with null alloc_ptr to be memcpy'd 2018-07-24 12:29:54 -04:00
src Allow deno_buf with null alloc_ptr to be memcpy'd 2018-07-24 12:29:54 -04:00
tests Add tools/test.py test runner. (#384) 2018-07-21 19:08:24 -04:00
third_party@8967dcf1d9 Update third_party submodule 2018-07-22 03:16:17 +02:00
tools Fix recursive globbing in tools/format.py 2018-07-24 12:29:54 -04:00
.gitattributes Create .gitattributes 2018-07-13 19:25:52 +02:00
.gitignore Add deno_third_party as git submodule. 2018-07-21 13:04:11 -04:00
.gitmodules Add deno_third_party as git submodule. 2018-07-21 13:04:11 -04:00
.gn reorg: Move GN files to root (#309) 2018-07-01 13:47:28 +02:00
.prettierignore chore: use local prettier 2018-07-09 11:05:02 -04:00
.travis.yml Add tools/test.py test runner. (#384) 2018-07-21 19:08:24 -04:00
build move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
BUILD.gn Change copyrights to be 'Deno authors'. 2018-07-24 10:38:11 -04:00
build_overrides move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
buildtools move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
Cargo.lock Use Cargo to install rust deps into //third_party/rust_crates (#383) 2018-07-18 20:00:53 -04:00
Cargo.toml Use Cargo to install rust deps into //third_party/rust_crates (#383) 2018-07-18 20:00:53 -04:00
gclient_config.py Add deno_third_party as git submodule. 2018-07-21 13:04:11 -04:00
LICENSE Update LICENSE 2018-06-01 12:13:26 +02:00
node_modules chore: reorganize symlinks 2018-07-06 01:57:32 -04:00
package.json Replace packer with rollup 2018-07-22 03:16:17 +02:00
README.md Add deno_third_party as git submodule. 2018-07-21 13:04:11 -04:00
Roadmap.md Remove channel parameter from deno_send/recv. 2018-07-06 18:25:09 -04:00
rollup.config.js Replace packer with rollup 2018-07-22 03:16:17 +02:00
testing move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
tsconfig.json Replace packer with rollup 2018-07-22 03:16:17 +02:00
tslint.json Import ts file from prototype without change 2018-07-06 12:22:11 -04:00
yarn.lock Replace packer with rollup 2018-07-22 03:16:17 +02:00

deno

Build Status

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. 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.

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 installed separately.

You probably want ccache installed too.

To build:

# Fetch deps.
git clone --recurse-submodules https://github.com/ry/deno.git
cd deno
./tools/run_hooks.py

# Configure
./third_party/depot_tools/gn gen out/default
./third_party/depot_tools/gn gen out/release --args='cc_wrapper="ccache" is_official_build=true'
./third_party/depot_tools/gn gen out/debug --args='cc_wrapper="ccache" is_debug=true '

# Build
./third_party/depot_tools/ninja -C out/default/ deno

Other useful commands:

./third_party/depot_tools/gn args out/default/ --list
./third_party/depot_tools/gn args out/default/
./third_party/depot_tools/gn desc out/default/ :deno
./third_party/depot_tools/gn help