Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(core) deno_core::extension! macro to simplify extension registration #18210

Merged
merged 50 commits into from
Mar 17, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
1e33059
WIP: deno_core::ops!
mmastrac Mar 14, 2023
dd7f871
WIP extension
mmastrac Mar 15, 2023
782225d
WIP extension: napi
mmastrac Mar 15, 2023
ea04949
WIP: deno_websocket extension!
mmastrac Mar 15, 2023
ad224fb
WIP: extension! for deno_webidl and core
mmastrac Mar 15, 2023
910aaa6
Move state into the macro (though it could still live externally)
mmastrac Mar 15, 2023
e543288
Call the state initialization closure using the config fields
mmastrac Mar 15, 2023
f82ff1e
extension! for deno_bench, remove requirement for Default for now
mmastrac Mar 15, 2023
9b3180a
extension! for deno_console and deno_url
mmastrac Mar 15, 2023
0ed5c8c
extension! for deno_cli, deno_test, deno_tsc
mmastrac Mar 15, 2023
c55fda0
extension! for deno_broadcast_channel (required making Config object …
mmastrac Mar 15, 2023
702cfda
extension! for cache, crypto, ffi, webgpu
mmastrac Mar 15, 2023
df0112b
extension! deno_fetch, deno_flash, deno_bench and some internal exten…
mmastrac Mar 16, 2023
c846913
Move ops out of function
mmastrac Mar 16, 2023
81dc32a
Refactor extension! macro slightly
mmastrac Mar 16, 2023
d78cfb8
extension! for cli/build
mmastrac Mar 16, 2023
07044e7
Restore old init_ops/init_ops_and_esm names
mmastrac Mar 16, 2023
2f90862
extension! for webgpu and webgpu_surface
mmastrac Mar 16, 2023
5076f04
ops -> ops_fn
mmastrac Mar 16, 2023
c72730e
extension! deno_fs
mmastrac Mar 16, 2023
4c6f23d
extension! deno_io and deno_http
mmastrac Mar 16, 2023
34150ac
extension! for deno_net, deno_node, deno_load_loading
mmastrac Mar 16, 2023
a563d9e
Update runtime/build and cli/build
mmastrac Mar 16, 2023
37c43fa
extension! deno_tls, deno_web, runtime
mmastrac Mar 16, 2023
fa0eb50
extension! for various deno_* extensions
mmastrac Mar 16, 2023
c7b55b3
Rework extension! to use a struct
mmastrac Mar 16, 2023
0ed4b23
Update tests to use extension! macro
mmastrac Mar 16, 2023
38a0666
Merge branch 'main' into ops_extension
mmastrac Mar 16, 2023
7eb8eb5
Restore extensions after merge conflict
mmastrac Mar 16, 2023
d7bc1e5
Fold ops! into extension!
mmastrac Mar 16, 2023
80b04ca
Trailing comma
mmastrac Mar 16, 2023
4a1ad1d
Fix typo (moved code)
mmastrac Mar 16, 2023
661566d
Add customizer as a 'last resort' and implement extension! for cli
mmastrac Mar 16, 2023
6b39e21
Remove redundant clones
mmastrac Mar 16, 2023
993aa0f
Add deps for deno_fs
mmastrac Mar 16, 2023
6ef38e5
[ci]
mmastrac Mar 16, 2023
bbe8890
Merge branch 'main' into ops_extension
bartlomieju Mar 16, 2023
044c1b7
Add docs for extension!
mmastrac Mar 16, 2023
c16b4ea
Merge branch 'ops_extension' of https://github.com/mmastrac/deno into…
mmastrac Mar 16, 2023
dca0405
One last merge fix
mmastrac Mar 16, 2023
bb7a5fc
Missed deps for deno_websocket
mmastrac Mar 17, 2023
c4fb235
cargo fmt
mmastrac Mar 17, 2023
9983941
Merge branch 'main' into ops_extension
mmastrac Mar 17, 2023
f300f6a
Restore missing comment
mmastrac Mar 17, 2023
9a90368
Slighly cleaner approach for runtime_main extension
mmastrac Mar 17, 2023
3e03787
Construct vector in-place rather than using push
mmastrac Mar 17, 2023
ff419ae
Merge branch 'main' into ops_extension
mmastrac Mar 17, 2023
b009d64
Construct vec! in-place and avoid push
mmastrac Mar 17, 2023
93a9367
Merge branch 'main' of https://github.com/denoland/deno into ops_exte…
mmastrac Mar 17, 2023
0727418
Missed #[inline] on two functions
mmastrac Mar 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ops -> ops_fn
  • Loading branch information
mmastrac committed Mar 16, 2023
commit 5076f042cfb7ed80d0296929ac1dac3116a67f3b
2 changes: 1 addition & 1 deletion bench_util/benches/op_baseline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use deno_core::Extension;

deno_core::ops!(deno_ops, [op_pi_json, op_pi_async, op_nop,]);
mmastrac marked this conversation as resolved.
Show resolved Hide resolved

deno_core::extension!(bench_setup, ops = deno_ops,);
deno_core::extension!(bench_setup, ops_fn = deno_ops,);

fn setup() -> Vec<Extension> {
vec![bench_setup::init_ops()]
Expand Down
2 changes: 1 addition & 1 deletion cli/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ mod ts {
);

deno_core::extension!(deno_tsc,
ops = deno_ops,
ops_fn = deno_ops,
js = [
dir "tsc",
"00_typescript.js",
Expand Down
2 changes: 1 addition & 1 deletion cli/lsp/tsc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2838,7 +2838,7 @@ deno_core::ops!(
);

deno_core::extension!(deno_tsc,
ops = deno_ops,
ops_fn = deno_ops,
config = {
performance: Arc<Performance>
},
Expand Down
2 changes: 1 addition & 1 deletion cli/ops/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ deno_core::ops!(
);

deno_core::extension!(deno_bench,
ops = deno_ops,
ops_fn = deno_ops,
config = {
sender: UnboundedSender<BenchEvent>,
filter: TestFilter,
Expand Down
2 changes: 1 addition & 1 deletion cli/ops/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ pub fn cli_exts(ps: ProcState) -> Vec<Extension> {
deno_core::ops!(deno_ops, [op_npm_process_state]);

deno_core::extension!(deno_cli,
ops = deno_ops,
ops_fn = deno_ops,
config = {
ps: ProcState,
},
Expand Down
2 changes: 1 addition & 1 deletion cli/ops/testing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ deno_core::ops!(
);

deno_core::extension!(deno_test,
ops = deno_ops,
ops_fn = deno_ops,
config = {
sender: TestEventSender,
fail_fast_tracker: FailFastTracker,
Expand Down
4 changes: 2 additions & 2 deletions cli/tsc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ pub fn get_types_declaration_file_text(unstable: bool) -> String {
}

fn get_asset_texts_from_new_runtime() -> Result<Vec<AssetText>, AnyError> {
deno_core::extension!(deno_cli_tsc, ops = deno_ops,);
deno_core::extension!(deno_cli_tsc, ops_fn = deno_ops,);

// the assets are stored within the typescript isolate, so take them out of there
let mut runtime = JsRuntime::new(RuntimeOptions {
Expand Down Expand Up @@ -829,7 +829,7 @@ pub fn exec(request: Request) -> Result<Response, AnyError> {
.collect();

deno_core::extension!(deno_cli_tsc,
ops = deno_ops,
ops_fn = deno_ops,
config = {
request: Rc<Request>,
root_map: HashMap<String, Url>,
Expand Down
2 changes: 1 addition & 1 deletion core/extensions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ macro_rules! extension {
$name:ident,
$(deps = [ $( $dep:ident ),* ],)?
$(parameters = [ $( $param:ident : $type:ident ),+ ], )?
$(ops = $ops_symbol:ident $( < $ops_param:ident > )?,)?
$(ops_fn = $ops_symbol:ident $( < $ops_param:ident > )?,)?
$(esm = [ $( dir $dir_esm:literal , )? $( $esm:literal ),* $(,)? ],)?
$(js = [ $( dir $dir_js:literal , )? $( $js:literal ),* $(,)? ],)?
$(config = { $( $config_id:ident : $config_type:ty ),* $(,)? },)?
Expand Down
2 changes: 1 addition & 1 deletion core/ops_builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ crate::ops_bundle!(

crate::extension!(
core,
ops = deno_ops,
ops_fn = deno_ops,
js = ["00_primordials.js", "01_core.js", "02_error.js"],
);

Expand Down
2 changes: 1 addition & 1 deletion ext/broadcast_channel/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ deno_core::ops!(deno_ops,
deno_core::extension!(deno_broadcast_channel,
deps = [ deno_webidl, deno_web ],
parameters = [BC: BroadcastChannel],
ops = deno_ops<BC>,
ops_fn = deno_ops<BC>,
esm = [ "01_broadcast_channel.js" ],
config = {
bc: BC,
Expand Down
2 changes: 1 addition & 1 deletion ext/cache/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ deno_core::ops!(deno_ops,
deno_core::extension!(deno_cache,
deps = [ deno_webidl, deno_web, deno_url, deno_fetch ],
parameters=[CA: Cache],
ops = deno_ops<CA>,
ops_fn = deno_ops<CA>,
esm = [ "01_cache.js" ],
config = {
maybe_create_cache: Option<CreateCache<CA>>,
Expand Down
2 changes: 1 addition & 1 deletion ext/crypto/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ deno_core::ops!(

deno_core::extension!(deno_crypto,
deps = [ deno_webidl, deno_web ],
ops = deno_ops,
ops_fn = deno_ops,
esm = [ "00_crypto.js", "01_webidl.js" ],
config = {
maybe_seed: Option<u64>,
Expand Down
2 changes: 1 addition & 1 deletion ext/fetch/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ deno_core::ops!(deno_ops,
deno_core::extension!(deno_fetch,
deps = [ deno_webidl, deno_web, deno_url, deno_console ],
parameters = [FP: FetchPermissions],
ops = deno_ops<FP>,
ops_fn = deno_ops<FP>,
esm = [
"20_headers.js",
"21_formdata.js",
Expand Down
2 changes: 1 addition & 1 deletion ext/ffi/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ deno_core::ops!(deno_ops,
deno_core::extension!(deno_ffi,
deps = [ deno_web ],
parameters = [P: FfiPermissions],
ops = deno_ops<P>,
ops_fn = deno_ops<P>,
esm = [ "00_ffi.js" ],
config = {
unstable: bool,
Expand Down
2 changes: 1 addition & 1 deletion ext/flash/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1562,7 +1562,7 @@ deno_core::extension!(deno_flash,
deno_http
],
parameters = [P: FlashPermissions],
ops = deno_ops<P>,
ops_fn = deno_ops<P>,
esm = [ "01_http.js" ],
config = {
unstable: bool,
Expand Down
2 changes: 1 addition & 1 deletion ext/napi/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ deno_core::ops!(deno_ops,

deno_core::extension!(deno_napi,
parameters = [P: NapiPermissions],
ops = deno_ops<P>,
ops_fn = deno_ops<P>,
state = |state| {
let (async_work_sender, async_work_receiver) =
mpsc::unbounded::<PendingNapiAsyncWork>();
Expand Down
2 changes: 1 addition & 1 deletion ext/url/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ deno_core::ops!(
deno_core::extension!(
deno_url,
deps = [deno_webidl],
ops = deno_ops,
ops_fn = deno_ops,
esm = ["00_url.js", "01_urlpattern.js"],
);

Expand Down
2 changes: 1 addition & 1 deletion ext/webgpu/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ impl Resource for WebGpuQuerySet {

deno_core::extension!(deno_webgpu,
deps = [ deno_webidl, deno_web ],
ops = deno_ops,
ops_fn = deno_ops,
esm = [ "01_webgpu.js", "02_idl_types.js" ],
config = {
unstable: bool,
Expand Down
2 changes: 1 addition & 1 deletion ext/webgpu/surface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ deno_core::ops!(
deno_core::extension!(deno_webgpu_surface,
deps = [ deno_webidl, deno_web, deno_webgpu ],
esm = [ "03_surface.js", "04_surface_idl_types.js" ],
ops = deno_ops,
ops_fn = deno_ops,
config: {
unstable: bool,
},
Expand Down
2 changes: 1 addition & 1 deletion ext/websocket/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ deno_core::ops!(deno_ops,

deno_core::extension!(deno_websocket,
parameters = [P: WebSocketPermissions],
ops = deno_ops<P>,
ops_fn = deno_ops<P>,
esm = [ "01_websocket.js", "02_websocketstream.js" ],
config = {
user_agent: String,
Expand Down
2 changes: 1 addition & 1 deletion ext/webstorage/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ deno_core::ops!(

deno_core::extension!(deno_webstorage,
deps = [ deno_webidl ],
ops = deno_ops,
ops_fn = deno_ops,
esm = [ "01_webstorage.js" ],
config = {
origin_storage_dir: Option<PathBuf>
Expand Down
2 changes: 1 addition & 1 deletion runtime/ops/fs_events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ use std::path::PathBuf;
use std::rc::Rc;
use tokio::sync::mpsc;

deno_core::extension!(deno_fs_events, ops = deno_ops,);
deno_core::extension!(deno_fs_events, ops_fn = deno_ops,);

deno_core::ops!(deno_ops, [op_fs_events_open, op_fs_events_poll]);

Expand Down
2 changes: 1 addition & 1 deletion runtime/ops/web_worker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ deno_core::ops!(
]
);

deno_core::extension!(deno_web_worker, ops = deno_ops,);
deno_core::extension!(deno_web_worker, ops_fn = deno_ops,);

#[op]
fn op_worker_post_message(
Expand Down