summaryrefslogtreecommitdiff
path: root/runtime
AgeCommit message (Collapse)Author
2021-05-26refactor: Rewrite Inspector implementation (#10725)Bartek Iwańczuk
This commit refactors implementation of inspector. The intention is to be able to move inspector implementation to "deno_core". Following things were done to make that possible: * "runtime/inspector.rs" was split into "runtime/inspector/mod.rs" and "runtime/inspector/server.rs", separating inspector implementation from Websocket server implementation. * "DenoInspector" was renamed to "JsRuntimeInspector" and reference to "server" was removed from the structure, making it independent of Websocket server used to connect to Chrome Devtools. * "WebsocketSession" was renamed to "InspectorSession" and rewritten in such a way that it's not tied to Websockets anymore; instead it accepts a pair of "proxy" channel ends that allow to integrate the session with different "transports". * "InspectorSession" was renamed to "LocalInspectorSession" to better indicate that it's an "in-memory" session and doesn't require Websocket server. It was also rewritten in such a way that it uses "InspectorSession" from previous point instead of reimplementing "v8::inspector::ChannelImpl" trait; this is done by using the "proxy" channels to communicate with the V8 session. Consequently "LocalInspectorSession" is now a frontend to "InspectorSession". This introduces a small inconvenience that awaiting responses for "LocalInspectorSession" requires to concurrently poll worker's event loop. This arises from the fact that "InspectorSession" is now owned by "JsRuntimeInspector", which in turn is owned by "Worker" or "WebWorker". To ease this situation "Worker::with_event_loop" helper method was added, that takes a future and concurrently polls it along with the event loop (using "tokio::select!" macro inside a loop).
2021-05-23feat(extensions): BroadcastChannel WPT conformanceBen Noordhuis
Replaces the file-backed provider by an in-memory one because proper file locking is a hard problem that detracts from the proof of concept. Teach the WPT runner how to extract tests from .html files because all the relevant tests in test_util/wpt/webmessaging/broadcastchannel are inside basics.html and interface.html.
2021-05-23feat(extensions): add BroadcastChannelBen Noordhuis
Co-Authored-By: Ben Noordhuis <info@bnoordhuis.nl> Fixes: #10354
2021-05-21fix(runtime/http): fix empty blob response (#10689)Yoshiya Hinosawa
2021-05-19fix(runtime/http): expose nextRequest() errors in respondWith() (#10384)Nayeem Rahman
2021-05-18chore: update deno_lint binary used in CI to v0.5.0 (#10652)Yusuke Tanaka
2021-05-17chore: release crates (#10661)Luca Casonato
For the Deno 1.10.2 release.
2021-05-17chore: update dependencies (#10660)Luca Casonato
2021-05-17feat(runtime): support urls for `Deno.realPath` and `Deno.realPathSync` (#10626)Casper Beyer
2021-05-15chore: upgrade Tokio to 1.6.0 (#10637)Yusuke Tanaka
2021-05-11chore: release crates (#10596)Bartek Iwańczuk
2021-05-11feat(runtime/worker): Structured cloning worker message passing (#9323)Tim Ramlot
This commit upgrade "Worker.postMessage()" implementation to use structured clone algorithm instead of non-spec compliant JSON serialization.
2021-05-11fix(tls): flush send buffer in the background after closing TLS stream (#10146)Bert Belder
In #9118, TLS streams were split into a "read half" and a "write half" using tokio::io::split() to allow concurrent Conn#read() and Conn#write() calls without one blocking the other. However, this introduced a bug: outgoing data gets discarded when the TLS stream is gracefully closed, because the read half is closed too early, before all TLS control data has been received. Fixes: #9692 Fixes: #10049 Fixes: #10296 Fixes: denoland/deno_std#750
2021-05-10Switch grant/deny prompt to yes/no (#10547)Ryan Dahl
2021-05-10feat: add WebStorage API (#7819)crowlKats
This commit introduces localStorage and sessionStorage.
2021-05-08cleanup(ops): remove unused ZeroCopyBuf arg-types (#10530)Aaron O'Mullan
2021-05-07fix: align plugin api with Extension (#10427)Elias Sjögreen
2021-05-06refactor(ops): replace `ZeroCopyBuf` arg by 2nd generic deserializable arg ↵Aaron O'Mullan
(#10448)
2021-05-06chore: update wgpu and realign to spec (#9760)Luca Casonato
2021-05-03fix(core): error registration could pollute constructors (#10422)Aaron O'Mullan
Co-authored-by: Luca Casonato <lucacasonato@yahoo.com>
2021-05-02refactor(runtime): use Extensions (#10461)Aaron O'Mullan
2021-05-02cleanup(runtime): re-export deno_timers like all other deno crates (#10464)Aaron O'Mullan
2021-04-30refactor(core): provide builtins as an Extension (#10449)Aaron O'Mullan
2021-04-30Rename crate_ops to extensions (#10431)Andy Hayden
2021-04-30refactor(core): initialize extensions in runtime constructor (#10421)Aaron O'Mullan
This ensures that provided extensions are all correctly setup and ready to use once the JsRuntime constructor returns Note: this will also initialize ops for to-be-snapshotted runtimes
2021-04-30refactor(core.js): provide window.__bootstrap (#10423)Aaron O'Mullan
2021-04-28refactor(extensions): reintroduce builder (#10412)Aaron O'Mullan
2021-04-28feat(test): run test modules in parallel (#9815)Casper Beyer
This commit adds support for running test in parallel. Entire test runner functionality has been rewritten from JavaScript to Rust and a set of ops was added to support reporting in Rust. A new "--jobs" flag was added to "deno test" that allows to configure how many threads will be used. When given no value it defaults to 2.
2021-04-28core: introduce extensions (#9800)Aaron O'Mullan
Extensions allow declarative extensions to "JsRuntime" (ops, state, JS or middleware). This allows for: - `op_crates` to be plug-and-play & self-contained, reducing complexity leaked to consumers - op middleware (like metrics_op) to be opt-in and for new middleware (unstable, tracing,...) - `MainWorker` and `WebWorker` to be composable, allowing users to extend workers with their ops whilst benefiting from the other infrastructure (inspector, etc...) In short extensions improve deno's modularity, reducing complexity and leaky abstractions for embedders and the internal codebase.
2021-04-28chore: upgrade dprint plugins (#10397)Satya Rohith
2021-04-26fix(tls): throw meaningful error when hostname is invalid (#10387)Bert Belder
`InvalidDNSNameError` is thrown when a string is not a valid hostname, e.g. it contains invalid characters, or starts with a numeric digit. It does not involve a (failed) DNS lookup.
2021-04-26remove #![deny(warnings)] (#10376)Ryan Dahl
Prefer RUSTFLAGS="-D warnings" to prevent warnings, but cannot enable yet due to #10378.
2021-04-25feat(cli): add test permissions to Deno.test (#10188)Casper Beyer
This commits adds adds "permissions" option to the test definitions which allows tests to run with different permission sets than the process's permission. The change will only be in effect within the test function, once the test has completed the original process permission set is restored. Test permissions cannot exceed the process's permission. You can only narrow or drop permissions, failure to acquire a permission results in an error being thrown and the test case will fail.
2021-04-26refactor(cli): rename Deno.emit() bundle options to "module" and "classic" ↵Nayeem Rahman
(#10332)
2021-04-25refactor(core): move op cache sync responsibility to rust space (#10340)Aaron O'Mullan
Even if bootstrapping the JS runtime is low level, it's an abstraction leak of core to require users to call `Deno.core.ops()` in JS space. So instead we're introducing a `JsRuntime::sync_ops_cache()` method, once we have runtime extensions a new runtime will ensure the ops cache is setup (for the provided extensions) and then loading/unloading plugins should be the only operations that require op cache syncs
2021-04-23chore: release crates (#10327)Luca Casonato
Release crates for the cli 1.9.2 release.
2021-04-23chore: update dependencies (#10325)Luca Casonato
This updates swc_* crates to latest, and various other deps.
2021-04-23fix(runtime/js/http): cancel body on response failure (#10225)Nayeem Rahman
2021-04-21refactor(core): simplify error handling (#10297)Aaron O'Mullan
- register builtin v8 errors in core.js so consumers don't have to - remove complexity of error args handling (consumers must provide a constructor with custom args, core simply provides msg arg)
2021-04-21fix: do not panic on not found cwd (#10238)Satya Rohith
2021-04-21chore: release crates (#10269)Bartek Iwańczuk
* Revert "tooling(bench_util): benching and profiling utilities (#10223)" This reverts commit 733a00030582375c43fa156e978f25df6ecc9e9a. * Upgrade notify
2021-04-20fix(runtime): include HTTP op in WebWorker (#10207)Satya Rohith
2021-04-20chore: align fetch to spec (#10203)Luca Casonato
This commit aligns the `fetch` API and the `Request` / `Response` classes belonging to it to the spec. This commit enables all the relevant `fetch` WPT tests. Spec compliance is now at around 90%. Performance is essentially identical now (within 1% of 1.9.0).
2021-04-20chore: update copyright headers (#10243)Yoshiya Hinosawa
2021-04-20revert: Conn type changes in #10012 and #10061 (#10255)Kitson Kelly
Fixes #10200 (again) This reverts commit 9c7c9a35c12625bd4793c21539391d6b08d17e73 and a8057e3e06962a8d7c6330a085704bb4493eed04.
2021-04-19fix(rt/http): correct URL in Request (#10256)Luca Casonato
This commit fixes the URL returned from `request.url` in the HTTP server to be fully qualified. This previously existed, but was removed and accidentially not readded during optimizations of the HTTP ops. Returning a non fully qualified URL from `Request#url` is not spec compliant.
2021-04-19fix(runtime): handle race condition in postMessage where worker has ↵Liam Murphy
terminated (#10239) The panic was caused by the lack of an error class mapping for futures::channel::TrySendError, but it shouldn't have been throwing an error in the first place - when a worker has terminated, postMessage should just return. The issue was that the termination message hadn't yet been recieved, so it was carrying on with trying to send the message. This adds another check on the Rust side for if the channel is closed, and if it is the worker is treated as terminated.
2021-04-16fix(#10200): weaken types so non-breaking (#10205)Kitson Kelly
Fixes #10200
2021-04-15fix(#10182): hang during http server response (#10197)Ryan Dahl
2021-04-14chore: align FormData to spec (#10169)Luca Casonato
This PR aligns `FormData` to spec. All WPT tests are passing.