deno/deno2
2018-06-15 22:19:00 +02:00
..
include Don't use bool in deno.h to support C. 2018-06-15 22:19:00 +02:00
js deno2: add global deno namespace 2018-06-14 17:24:00 +02:00
third_party Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00
tools Demo protobufs in deno2. 2018-06-14 14:19:17 +02:00
.gclient Clean up build files. 2018-06-14 14:19:17 +02:00
.gitignore Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00
.gn Clean up build files. 2018-06-14 14:19:17 +02:00
build Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00
BUILD.gn Cleans up ReadFile and snapshot_creator code. 2018-06-14 14:19:17 +02:00
deno.cc Don't use bool in deno.h to support C. 2018-06-15 22:19:00 +02:00
deno_internal.h Demo protobufs in deno2. 2018-06-14 14:19:17 +02:00
file_util.cc Cleans up ReadFile and snapshot_creator code. 2018-06-14 14:19:17 +02:00
file_util.h Cleans up ReadFile and snapshot_creator code. 2018-06-14 14:19:17 +02:00
from_snapshot.cc Demo protobufs in deno2. 2018-06-14 14:19:17 +02:00
main.cc deno2: make getcwd() work on windows 2018-06-14 14:19:17 +02:00
mock_runtime_test.cc Demo protobufs in deno2. 2018-06-14 14:19:17 +02:00
msg.proto Link msg.proto to root dir 2018-06-11 17:01:12 +02:00
README.md deno2 readme adjustments 2018-06-10 01:34:24 +02:00
snapshot_creator.cc Cleans up ReadFile and snapshot_creator code. 2018-06-14 14:19:17 +02:00
testing Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00

Deno Prototype 2

Status

This code is a rewrite of the unprivileged parts of Deno. It will soon become the root of the project.

There are several goals:

  • Use the gn build system for fast builds, sane configuration, and easy linking into Chrome.

  • Use V8 snapshots to improve startup time.

  • Remove Golang. Although it has been working nicely, I am concerned the double GC will become a problem sometime down the road.

  • Distribute a C++ library called libdeno, containing the snapshotted typescript runtime.

  • Test the message passing and other functionality at that layer before involving higher level languages.

The contenders for building the unprivileged part of Deno are Rust and C++. Thanks to Chrome and gn, using C++ to link into high level libraries is not untenable. However, there's a lot of interest in Rust in the JS community and it seems like a reasonable choice. TBD.

There are many people exploring the project, so care will be taken to keep the original code functional while this is developed. However, once it's ready the code in this deno2/ directory will be moved to the root.

Prerequisites

Get Depot Tools and make sure it's in your path. http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up

For linux you need these prereqs:

sudo apt-get install libgtk-3-dev pkg-config ccache

Build

First install the javascript deps.

cd js; yarn install

TODO(ry) Remove the above step by a deps submodule.

Wrapper around the gclient/gn/ninja for end users. Try this first:

./tools/build.py --use_ccache --debug

If that doesn't work, or you need more control, try calling gn manually:

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

Then build with ninja:

ninja -C out/Debug/ deno

Other useful commands:

gn args out/Debug/ --list # List build args
gn args out/Debug/ # Modify args in $EDITOR