summaryrefslogtreecommitdiff
path: root/cli/state.rs
AgeCommit message (Collapse)Author
2020-04-30refactor(core): add "prepare_load" hook to ModuleLoader trait (#4866)Bartek Iwańczuk
This PR adds prepare_load hook method to ModuleLoader trait. It allows implementors to perform preparation work before starting actual module loading into isolate. It's meant to be used in CLI; where "transpilation" step will be explicitly performed during prepare_load instead of doing it adhoc for each module if needed.
2020-04-28Make import maps unstable (#4934)Luca Casonato
2020-04-25introduce unstable flag, make a few things unstable (#4892)Ryan Dahl
2020-04-23Rename deno_core::Isolate to deno_core::CoreIsolate (#4851)Ryan Dahl
2020-04-21Move resource_table from deno::State to deno_core::Isolate (#4834)Ryan Dahl
2020-04-19Modify op dispatcher to include &mut Isolate argument (#4821)Ryan Dahl
- Removes unnecessary RwLock and Rc around the op registry table - Preparation to move resource_table to deno_core::Isolate. - Towards #3453, #4222
2020-04-18Fix Op definitions (#4814)Ryan Dahl
2020-04-15Make writeSync, readSync, seekSync, openSync, isatty proper synchronous ↵Ryan Dahl
syscalls (#4762)
2020-04-10implement Worker.terminate() and self.close() (#4684)Bartek Iwańczuk
2020-04-03clippy (#4618)Kitson Kelly
2020-04-03Make inspector more robust, add --inspect-brk support (#4552)Bert Belder
2020-03-02feat: update metrics to track different op types (#4221)Bartek Iwańczuk
2020-03-02refactor: rename structures related to Modules (#4217)Bartek Iwańczuk
* rename structures related to ES Modules; add "Modules" prefix * remove unneeded Unpin trait requirement for "ModuleLoader"
2020-02-25Clean up how we use opIds (#4118)Ryan Dahl
2020-02-23refactor: use OpError instead of ErrBox for errors in ops (#4058)Bartek Iwańczuk
To better reflect changes in error types in JS from #3662 this PR changes default error type used in ops from "ErrBox" to "OpError". "OpError" is a type that can be sent over to JSON; it has all information needed to construct error in JavaScript. That made "GetErrorKind" trait useless and so it was removed altogether. To provide compatibility with previous use of "ErrBox" an implementation of "From<ErrBox> for OpError" was added, however, it is an escape hatch and ops implementors should strive to use "OpError" directly.
2020-02-18refactor: remove run_worker_loop (#4028)Bartek Iwańczuk
* remove run_worker_loop, impl poll for WebWorker * store JoinHandle to worker thread
2020-02-11refactor: Remove atomics from metrics (#3968)Bartek Iwańczuk
* replace "AtomicUsize" with "u64" for field type on "Metrics" * move "compiler_starts" field from "Metrics" to "GlobalState"
2020-02-11workers: basic event loop (#3828)Bartek Iwańczuk
* establish basic event loop for workers * make "self.close()" inside worker * remove "runWorkerMessageLoop() - instead manually call global function in Rust when message arrives. This is done in preparation for structured clone * refactor "WorkerChannel" and use distinct structs for internal and external channels; "WorkerChannelsInternal" and "WorkerHandle" * move "State.worker_channels_internal" to "Worker.internal_channels" * add "WorkerEvent" enum for child->host communication; currently "Message(Buf)" and "Error(ErrBox)" variants are supported * add tests for nested workers * add tests for worker throwing error on startup
2020-02-08refactor: rename ThreadSafeState, use RefCell for mutable state (#3931)Bartek Iwańczuk
* rename ThreadSafeState to State * State stores InnerState wrapped in Rc and RefCell
2020-02-06Rename ThreadSafeGlobalState to GlobalState (#3907)Ryan Dahl
simplify
2020-02-05Move create_channels into worker constructor (#3889)Ryan Dahl
2020-02-04refactor: CLI subcommands and argv (#3886)Bartek Iwańczuk
2020-02-03refactor: Use Tokio's single-threaded runtime (#3844)Ryan Dahl
This change simplifies how we execute V8. Previously V8 Isolates jumped around threads every time they were woken up. This was overly complex and potentially hurting performance in a myriad ways. Now isolates run on their own dedicated thread and never move. - blocking_json spawns a thread and does not use a thread pool - op_host_poll_worker and op_host_resume_worker are non-operational - removes Worker::get_message and Worker::post_message - ThreadSafeState::workers table contains WorkerChannel entries instead of actual Worker instances. - MainWorker and CompilerWorker are no longer Futures. - The multi-threaded version of deno_core_http_bench was removed. - AyncOps no longer need to be Send + Sync This PR is very large and several tests were disabled to speed integration: - installer_test_local_module_run - installer_test_remote_module_run - _015_duplicate_parallel_import - _026_workers
2020-01-29workers: proper TS libs, more spec-compliant APIs (#3812)Bartek Iwańczuk
* split lib.deno_main.d.ts into: - lib.deno.shared_globals.d.ts - lib.deno.window.d.ts - lib.deno.worker.d.ts * remove no longer used libs: - lib.deno_main.d.ts - lib.deno_worker.d.ts * change module loading to use proper TS library for compilation * align to Worker API spec: - Worker.terminate() - self.close() - self.name
2020-01-25refactor: Modules and Loader trait (#3791)Bartek Iwańczuk
* move is_dyn_import argument from Loader::resolve to Loader::load - it was always kind of strange that resolve() checks permissions. * change argument type from &str to &ModuleSpecifier where applicable
2020-01-24s/PinnedBuf/ZeroCopyBuf (#3782)Ryan Dahl
2020-01-21feat: add AsyncUnref ops (#3721)Yoshiya Hinosawa
This is in order to support features like signal handlers, which shouldn't prevent the program from exiting.
2020-01-21refactor: split cli::Worker (#3735)Bartek Iwańczuk
* cli::Worker is base struct to create specialized workers * add MainWorker * add CompilerWorker * refactor WebWorker to use Worker
2020-01-21refactor: split worker and worker host logic (#3722)Bartek Iwańczuk
* split ops/worker.rs into ops/worker_host.rs and ops/web_worker.rs * refactor js/workers.ts and factor out js/worker_main.ts - entry point for WebWorker runtime * BREAKING CHANGE: remove support for blob: URL in Worker * BREAKING CHANGE: remove Deno namespace support and noDenoNamespace option in Worker constructor * introduce WebWorker struct which is a stripped down version of cli::Worker
2020-01-20refactor: Improve path handling in permission checks (#3714)Nayeem Rahman
2020-01-17workers: minimal error handling and async module loading (#3665)Bartek Iwańczuk
2020-01-05Rename crates: 'deno' to 'deno_core' and 'deno_cli' to 'deno' (#3600)Ry Dahl
2020-01-04Use async at places, use &self instead of self: &Self (#3594)Gurwinder Singh
2020-01-02Happy new year! (#3578)Ry Dahl
2019-12-23Upgrades rust to 1.40.0 (#3542)Axetroy
2019-12-05feat: first pass at native plugins (#3372)Andy Finch
2019-11-25better error message for missing module (#3402)Bartek Iwańczuk
2019-11-24refactor: Elevate DenoPermissions lock to top level (#3398)Kevin (Kun) "Kassimo" Qian
2019-11-16Use futures 0.3 API (#3358)Bartek Iwańczuk
2019-11-14refactor: per-worker resource table, take 2 (#3342)Bartek Iwańczuk
- removes global `RESOURCE_TABLE` - resource tables are now created per `Worker` in `State` - renames `CliResource` to `StreamResource` and moves all logic related to it to `cli/ops/io.rs` - removes `cli/resources.rs` - adds `state` argument to `op_read` and `op_write` and consequently adds `stateful_minimal_op` to `State` - IMPORTANT NOTE: workers don't have access to process stdio - this is caused by fact that dropping worker would close stdout for process (because it's constructed from raw handle, which closes underlying file descriptor on drop)
2019-11-13Revert "refactor: per-worker resource table (#3306)"Ryan Dahl
This patch does not work with the recent bundler changes (#3325). Unfortunately I didn't merge master before landing this patch. It has something to do with console.log not working inside the compiler worker. This reverts commit fd62379eafde6571f126df5650b80cfda9f74229.
2019-11-13refactor: per-worker resource table (#3306)Bartek Iwańczuk
- removes global `RESOURCE_TABLE` - resource tables are now created per `Worker` in `State` - renames `CliResource` to `StreamResource` and moves all logic related to it to `cli/ops/io.rs` - removes `cli/resources.rs` - adds `state` argument to `op_read` and `op_write` and consequently adds `stateful_minimal_op` to `State` - IMPORTANT NOTE: workers don't have access to process stdio - this is caused by fact that dropping worker would close stdout for process (because it's constructed from raw handle, which closes underlying file descriptor on drop)
2019-11-09refactor: worker is no longer a resource (#3290)Bartek Iwańczuk
2019-11-06Remove CoreResource::inspect_repr method (#3274)Ry Dahl
Towards simplifying (or better removing entirely) the CoreResource trait. Resources should be any bit of privileged heap allocated memory that needs to be referenced from JS, not very specific trait implementations. Therefore CoreResource should be pushed towards being as general as possible.
2019-11-04Refactor Worker and ThreadSafeState (#3242)Bartek Iwańczuk
* Split ThreadSafeState into State and GlobalState. State is a "local" state belonging to "Worker" while "GlobalState" is state shared by whole program. * Update "Worker" and ops to use "GlobalState" where applicable * Move and refactor "WorkerChannels" resource
2019-11-03feat: lockfiles (#3231)Ry Dahl
Use --lock-write=lock.json or --lock-check=lock.json on the command line.
2019-10-23refactor DenoPermissions.check_net & resolve_addr (#3182)EnokMan
2019-10-17feat: --reload flag to take arg for partial reload (#3109)Michał Sabiniarz
Example: To reload only std modules --reload=https://deno.land/std/
2019-10-11Add init methods for each op module (#3087)Ryan Dahl
2019-10-03Update rust to 1.38.0 (#3030)Andy Hayden