0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-31 09:14:20 -04:00
denoland-deno/deno2
2018-06-17 17:16:29 +02:00
..
include Don't use bool in deno.h to support C. 2018-06-15 22:19:00 +02:00
js deno2: make parcel produce more modern javascript 2018-06-15 23:33:24 +02:00
third_party Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00
tools First pass at deno rust 2018-06-17 12:43:04 +02:00
.gclient First pass at deno rust 2018-06-17 12:43:04 +02:00
.gitignore First pass at deno rust 2018-06-17 12:43:04 +02:00
.gn Fix embedder string 2018-06-17 12:43:04 +02:00
build Add deno2 prototype from external repo. 2018-06-10 01:02:08 +02:00
BUILD.gn First pass at deno rust 2018-06-17 12:43:04 +02:00
buildtools Small fixes 2018-06-17 12:43:04 +02:00
deno.cc Don't use bool in deno.h to support C. 2018-06-15 22:19:00 +02:00
deno.gni Clean up GN templates for rust a little 2018-06-17 17:16:29 +02:00
deno_internal.h Demo protobufs in deno2. 2018-06-14 14:19:17 +02:00
empty.rs First pass at deno rust 2018-06-17 12:43:04 +02:00
file_util.cc Small fixes 2018-06-17 12:43:04 +02:00
file_util.h Cleans up ReadFile and snapshot_creator code. 2018-06-14 14:19:17 +02:00
file_util_test.cc Fix error handling in deno::ReadFileToString 2018-06-15 22:19:00 +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
main.rs First pass at deno rust 2018-06-17 12:43:04 +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 docs: update deno2 README 2018-06-16 17:43:46 +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 privileged 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 privileged 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