1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-29 16:30:56 -05:00
Commit graph

1191 commits

Author SHA1 Message Date
Bert Belder
7807afa972
core: make Isolate use FuturesUnordered to track ops
Additionally, instead of polling ops in a loop until none of them are
ready, the isolate will now yield to the task system after delivering
the first batch of completed ops to the javascript side.

Although this makes performance a bit worse (about 15% fewer
requests/second on the 'deno_core_http_bench' benchmark), we feel that
the advantages are worth it:

* It resolves the extremely high worst-case latency that we were seeing
  on deno_core_http_bench, in particular when using the multi-threaded
  Tokio runtime, which would sometimes exceed a full second.

* Before this patch, the implementation of Isolate::poll() had to loop
  through all sub-futures and poll each one of them, which doesn't scale
  well as the number of futures managed by the isolate goes up. This
  could lead to poor performance when e.g. a server is servicing
  thousands of connected clients.
2019-04-16 22:54:33 +02:00
Bert Belder
dd595220ab
core: run isolate tests within a task
This change is made in preparation for using FuturesUnordered to track
futures that are spawned by the isolate. FuturesUnordered sets up
notififications for every future that it finds to be not ready when
polled, which causes a crash if attempted outside of a task context.
2019-04-16 22:26:33 +02:00
Bert Belder
2719631038
core/http_bench: support -D flag to enable logging 2019-04-16 22:25:57 +02:00
Ryan Dahl
1bfb443369
Implement async module loading in CLI (#2084) 2019-04-16 15:13:42 -04:00
Bert Belder
97f0fe7437
third_party: upgrade rust crates 2019-04-15 18:56:29 +02:00
Ryan Dahl
8584d80cfd v0.3.7 2019-04-11 15:35:21 -04:00
Ryan Dahl
d2579f4564
core: Rename Behavior to Dispatch (#2082)
And rename IsolateState to ThreadSafeState.

Also make ThreadSafeState directly implement Dispatch. This is simpler.
2019-04-09 13:11:25 -04:00
Bert Belder
e43da28b28
core: poll ops round robin
Also use a VecDeque to store pending ops to avoid exponential time complexity
when removing completed ops from the list.
2019-04-08 23:10:21 +02:00
Ryan Dahl
f7fdb90fd5
core: snapshot improvements (#2052)
* Moves how snapshots are supplied to the Isolate. Previously they were
  given by Behavior::startup_data() but it was only called once at
  startup. It makes more sense (and simplifies Behavior) to pass it to the
  constructor of Isolate.
* Adds new libdeno type deno_snapshot instead of overloading
  deno_buf.
* Adds new libdeno method to delete snapshot deno_snapshot_delete().
* Renames deno_get_snapshot() to deno_snapshot_new().
* Makes StartupData hold references to snapshots. This was implicit when
  it previously held a deno_buf but is made explicit now. Note that
  include_bytes!() returns a &'static [u8] and we want to avoid
  copying that.
2019-04-08 10:12:43 -04:00
Ryan Dahl
744e56cb58 v0.3.6 2019-04-04 09:59:41 -04:00
Ryan Dahl
0a26230a87
Improve docs in core (#2049) 2019-04-04 09:35:52 -04:00
andy finch
0e7311e171 Non-fatal compile_sync failures (#2039)
And model worker resources as Stream
2019-04-04 05:33:32 -04:00
Bert Belder
917e68f30f
Refactor deno_core::RecursiveLoad to be more idiomatic (#2034) 2019-04-02 20:10:16 +02:00
Ryan Dahl
2b0f553e2e
Add deno_core::RecursiveLoad for async module loading (#2034) 2019-04-02 20:10:08 +02:00
Bert Belder
b735155712
Clippy fixes 2019-04-02 18:04:25 +02:00
andy finch
b0a23beb8f Add web worker JS API (#1993)
* Refactored the way worker polling is scheduled and errors are handled.
* Share the worker future as a Shared
2019-04-01 15:09:59 -04:00
Bert Belder
97265895ba
Publish rust crate on crates.io (#2024) 2019-03-31 17:22:02 -04:00
Ryan Dahl
3ba4c3c2b0
Remove deno_core_http_bench from core/Cargo.toml (#2023)
So we don't have to have an optional tokio dependency. We build
deno_core_http_bench using GN anyway.
2019-03-31 11:11:36 -04:00
Ryan Dahl
e9910d8ae5
Rename crate deno_core to deno (#2022) 2019-03-30 19:30:40 -04:00
Ryan Dahl
6744bb8d75
Call ninja directly from build.rs (#2020) 2019-03-30 19:27:00 -04:00
Ryan Dahl
c9614d86c1
Move //libdeno to //core/libdeno (#2015)
Fixes some sed errors introduced in c43cfe.

Unfortunately moving libdeno required splitting build.rs into two parts,
one for cli and one for core.

I've also removed the arm64 build - it's complicating things at this
re-org and we're not even testing it. I need to swing back to it and get
tools/test.py running for it.
2019-03-30 14:45:36 -04:00
Bert Belder
3d6c033369
third_party: upgrade rust crates 2019-03-29 14:50:07 -04:00
Ryan Dahl
b965c7ab36 v0.3.5 2019-03-28 16:58:17 -04:00
Ryan Dahl
51abcd6147 Make sharedQueue overflow warning quieter (#2008) 2019-03-28 14:13:34 -04:00
Bert Belder
da1b98b690 Clippy fixes (#2009) 2019-03-28 08:09:19 -04:00
Kitson Kelly
c43cfedeba namespace reorg: libdeno and DenoCore to Deno.core (#1998) 2019-03-26 08:22:07 -04:00
Ryan Dahl
d8714281b4
Resolve callback moved from Behavior to mod_instantiate() (#1999)
This simplifies the Behavior trait and makes it more explicit where the
resolve callback is being made.

Also s/StartupScript/Script
2019-03-25 17:43:31 -04:00
Bartek Iwańczuk
129eae0265 Handle overflown shared queue (#1992)
Fixes #1988
2019-03-24 11:07:10 -04:00
Simon Menke
93793dc455 core: Allow terminating an Isolate from another thread (#1982) 2019-03-21 09:48:19 -04:00
andy finch
cdfd32dd74 Re-implement init scripts in core (#1958)
Re-enables arm64 CI test
2019-03-18 20:03:37 -04:00
Ryan Dahl
44773c9b0f Integrate //core into existing code base
This disables a few tests which are broken still:
- tests/error_004_missing_module.test
- tests/error_005_missing_dynamic_import.test
- tests/error_006_import_ext_failure.test
- repl_test test_set_timeout
- repl_test test_async_op
- repl_test test_set_timeout_interlaced
- all of permission_prompt_test
2019-03-18 17:17:08 -04:00
Bert Belder
62761a4e3a
core: remove reset() from SharedQueue API 2019-03-15 21:57:22 +01:00
Ryan Dahl
1811318097 core: Behavior shouldn't be generic
We always pass around Box<[u8]>, and adding this generic is an
unnecessary complication.

Add deno_core_http_bench_test to test.py

sharedQueue works on deno_core_http_bench
2019-03-15 10:58:18 -04:00
Ryan Dahl
45fad1b7cf
allow v8 cli flags on deno_core_http_bench (#1934) 2019-03-15 03:12:56 -04:00
Ryan Dahl
6b07ed189c
Small cleanups for //core (#1914)
* Privatize a few deno_core::Isolate methods
* Add deno_core::Isolate docs
2019-03-12 18:47:54 -04:00
Ryan Dahl
72f9a2e20d
core: Abstract out Behavior from Isolate (#1904)
Move v8_set_flags and v8_version to core. (The idea is that src/ should
not depend on libdeno.rs anymore. This is a step towards that.)
2019-03-11 17:57:36 -04:00
Kitson Kelly
034e2cc028 Migrate from tslint to eslint for linting (#1905) 2019-03-09 12:30:38 -05:00
Ryan Dahl
b3b989ffdc
Use deno_core::JSError in deno (#1855)
src/js_errors.rs takes care of source maps and color while
core/js_errors.rs is just the basic struct.
2019-02-28 16:19:04 -05:00
Bert Belder
d4e3bf945d
third_party: upgrade rust crates 2019-02-27 10:24:22 -08:00
Bert Belder
15831272bb
core: add Cargo.toml
This aids development using Visual Studio Code. The http_bench can't be
built with cargo yet because it needs to link with libdeno.
2019-02-26 16:23:36 -08:00
Ryan Dahl
b8a537d020
deno_core (#1827)
A new low-level crate with focus on speed. 
This doesn't yet hook into the existing code base.
2019-02-26 17:36:05 -05:00