1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
Ryan Dahl d30664958e Further gn/rust cleanups
Move rust.gni and deno.gni into build_extra/

Removes rust_library which was only an action. This instead defines
rust_component, which is an action plus a gn "component" target
to expose the resulting object file. This simplifies link code in
rust.gni.

Support rust modules that can be linked into C++.
2018-07-06 10:46:30 -04:00
build_extra Further gn/rust cleanups 2018-07-06 10:46:30 -04:00
js chore: reorganize symlinks 2018-07-06 01:57:32 -04:00
src Further gn/rust cleanups 2018-07-06 10:46:30 -04:00
third_party chore: add symlink //third_party/yarn.lock 2018-07-06 01:57:32 -04:00
tools Further gn/rust cleanups 2018-07-06 10:46:30 -04:00
.gitignore Replace protobufs with flatbuffers 2018-07-04 16:43:08 -04:00
.gn reorg: Move GN files to root (#309) 2018-07-01 13:47:28 +02:00
.travis.yml Rename mock_main to deno_cc 2018-07-05 12:41:28 -04:00
build move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
BUILD.gn Further gn/rust cleanups 2018-07-06 10:46:30 -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
gclient_config.py Replace protobufs with flatbuffers 2018-07-04 16:43:08 -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 chore: reorganize symlinks 2018-07-06 01:57:32 -04:00
README.md Add tools/build_third_party.py (#328) 2018-07-04 15:04:59 +02:00
Roadmap.md Adjust roadmap security text. (#320) 2018-07-03 21:18:42 +02:00
testing move v8 to third_party/v8 (#322) 2018-07-03 10:15:32 +02:00
tsconfig.json chore: move //src/js to //js 2018-07-01 17:22:36 +02:00
tslint.json Add tslint 2018-07-01 21:41:53 +02:00
yarn.lock chore: reorganize symlinks 2018-07-06 01:57:32 -04:00

deno

Build Status

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.

Status

Segfaulty. Check back soon.

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

Get Depot Tools and make sure it's in your path.

You need yarn installed.

You need rust installed.

You need ccache installed.

Fetch the third party dependencies.

./tools/build_third_party.py

Generate ninja files.

gn gen out/Debug --args='cc_wrapper="ccache" is_debug=true '

Then build with ninja (will take a while to complete):

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