Skip to content

Commit efbc162

Browse files
authored
Merge branch 'main' into patch-repl-1
2 parents 39fb0d6 + 2edc70e commit efbc162

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+450
-120
lines changed

Cargo.lock

+17-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ repository = "https://github.com/denoland/deno"
5454

5555
[workspace.dependencies]
5656
deno_ast = { version = "=0.46.6", features = ["transpiling"] }
57-
deno_core = { version = "0.345.0" }
57+
deno_core = { version = "0.346.0" }
5858

5959
deno_cache_dir = "=0.20.0"
6060
deno_config = { version = "=0.54.2", features = ["workspace"] }
@@ -296,8 +296,8 @@ env_logger = "=0.11.6"
296296
eszip = "=0.87.0"
297297
fancy-regex = "=0.14.0"
298298
libsui = "0.10.0"
299-
malva = "=0.11.2"
300-
markup_fmt = "=0.19.1"
299+
malva = "=0.12.0"
300+
markup_fmt = "=0.20.0"
301301
open = "5.0.1"
302302
pathdiff = "0.2.1"
303303
pretty_yaml = "=0.5.0"

cli/lsp/tsc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5861,7 +5861,7 @@ mod tests {
58615861
rx,
58625862
Arc::new(AtomicBool::new(true)),
58635863
);
5864-
let mut op_state = OpState::new(None, None);
5864+
let mut op_state = OpState::new(None);
58655865
op_state.put(state);
58665866
op_state
58675867
}

cli/main.rs

+34-8
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ async fn run_subcommand(
292292
}
293293
}),
294294
DenoSubcommand::Serve(serve_flags) => spawn_subcommand(async move {
295-
tools::serve::serve(flags, serve_flags).await
295+
tools::serve::serve(flags, serve_flags, unconfigured_runtime, roots).await
296296
}),
297297
DenoSubcommand::Task(task_flags) => spawn_subcommand(async {
298298
tools::task::execute_script(flags, task_flags).await
@@ -410,6 +410,14 @@ fn setup_panic_hook() {
410410
orig_hook(panic_info);
411411
deno_runtime::exit(1);
412412
}));
413+
414+
fn error_handler(file: &str, line: i32, message: &str) {
415+
// Override C++ abort with a rust panic, so we
416+
// get our message above and a nice backtrace.
417+
panic!("Fatal error in {file}:{line}: {message}");
418+
}
419+
420+
deno_core::v8::V8::set_fatal_error_handler(error_handler);
413421
}
414422

415423
fn exit_with_message(message: &str, code: i32) -> ! {
@@ -610,6 +618,8 @@ fn wait_for_start(
610618
Some(async move {
611619
use tokio::io::AsyncBufReadExt;
612620
use tokio::io::AsyncRead;
621+
use tokio::io::AsyncWrite;
622+
use tokio::io::AsyncWriteExt;
613623
use tokio::io::BufReader;
614624
use tokio::net::TcpListener;
615625
use tokio::net::UnixSocket;
@@ -630,18 +640,23 @@ fn wait_for_start(
630640
vec![],
631641
);
632642

633-
let stream: Box<dyn AsyncRead + Unpin> = match addr.split_once(':') {
643+
let (rx, mut tx): (
644+
Box<dyn AsyncRead + Unpin>,
645+
Box<dyn AsyncWrite + Send + Unpin>,
646+
) = match addr.split_once(':') {
634647
Some(("tcp", addr)) => {
635648
let listener = TcpListener::bind(addr).await?;
636649
let (stream, _) = listener.accept().await?;
637-
Box::new(stream)
650+
let (rx, tx) = stream.into_split();
651+
(Box::new(rx), Box::new(tx))
638652
}
639653
Some(("unix", path)) => {
640654
let socket = UnixSocket::new_stream()?;
641655
socket.bind(path)?;
642656
let listener = socket.listen(1)?;
643657
let (stream, _) = listener.accept().await?;
644-
Box::new(stream)
658+
let (rx, tx) = stream.into_split();
659+
(Box::new(rx), Box::new(tx))
645660
}
646661
Some(("vsock", addr)) => {
647662
let Some((cid, port)) = addr.split_once(':') else {
@@ -652,17 +667,28 @@ fn wait_for_start(
652667
let addr = VsockAddr::new(cid, port);
653668
let listener = VsockListener::bind(addr)?;
654669
let (stream, _) = listener.accept().await?;
655-
Box::new(stream)
670+
let (rx, tx) = stream.into_split();
671+
(Box::new(rx), Box::new(tx))
656672
}
657673
_ => {
658674
deno_core::anyhow::bail!("invalid control sock");
659675
}
660676
};
661677

662-
let mut stream = BufReader::new(stream);
663-
664678
let mut buf = Vec::with_capacity(1024);
665-
stream.read_until(b'\n', &mut buf).await?;
679+
BufReader::new(rx).read_until(b'\n', &mut buf).await?;
680+
681+
tokio::spawn(async move {
682+
deno_runtime::deno_http::SERVE_NOTIFIER.notified().await;
683+
684+
#[derive(deno_core::serde::Serialize)]
685+
enum Event {
686+
Serving,
687+
}
688+
689+
let buf = deno_core::serde_json::to_vec(&Event::Serving).unwrap();
690+
let _ = tx.write_all(&buf).await;
691+
});
666692

667693
#[derive(deno_core::serde::Deserialize)]
668694
struct Start {

cli/tools/fmt.rs

+6
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,8 @@ fn format_embedded_css(
618618
selector_override_comment_directive: "malva-selector-override".into(),
619619
ignore_comment_directive: "malva-ignore".into(),
620620
ignore_file_comment_directive: "malva-ignore-file".into(),
621+
declaration_order_group_by:
622+
config::DeclarationOrderGroupBy::NonDeclarationAndEmptyLine,
621623
},
622624
};
623625
// Wraps the text in a css block of `a { ... }`
@@ -711,6 +713,7 @@ fn format_embedded_html(
711713
script_formatter: None,
712714
ignore_comment_directive: "deno-fmt-ignore".into(),
713715
ignore_file_comment_directive: "deno-fmt-ignore-file".into(),
716+
single_attr_same_line: true,
714717
},
715718
};
716719
let Ok(text) = markup_fmt::format_text(
@@ -1463,6 +1466,8 @@ fn get_resolved_malva_config(
14631466
selector_override_comment_directive: "deno-fmt-selector-override".into(),
14641467
ignore_comment_directive: "deno-fmt-ignore".into(),
14651468
ignore_file_comment_directive: "deno-fmt-ignore-file".into(),
1469+
declaration_order_group_by:
1470+
DeclarationOrderGroupBy::NonDeclarationAndEmptyLine,
14661471
};
14671472

14681473
FormatOptions {
@@ -1523,6 +1528,7 @@ fn get_resolved_markup_fmt_config(
15231528
astro_attr_shorthand: Some(true),
15241529
ignore_comment_directive: "deno-fmt-ignore".into(),
15251530
ignore_file_comment_directive: "deno-fmt-ignore-file".into(),
1531+
single_attr_same_line: true,
15261532
};
15271533

15281534
FormatOptions {

cli/tools/serve.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ use deno_core::error::AnyError;
77
use deno_core::futures::FutureExt;
88
use deno_core::futures::TryFutureExt;
99
use deno_core::ModuleSpecifier;
10+
use deno_lib::worker::LibWorkerFactoryRoots;
11+
use deno_runtime::UnconfiguredRuntime;
1012

1113
use super::run::check_permission_before_script;
1214
use super::run::maybe_npm_install;
@@ -20,6 +22,8 @@ use crate::worker::CliMainWorkerFactory;
2022
pub async fn serve(
2123
flags: Arc<Flags>,
2224
serve_flags: ServeFlags,
25+
unconfigured_runtime: Option<UnconfiguredRuntime>,
26+
roots: LibWorkerFactoryRoots,
2327
) -> Result<i32, AnyError> {
2428
check_permission_before_script(&flags);
2529

@@ -45,8 +49,11 @@ pub async fn serve(
4549

4650
maybe_npm_install(&factory).await?;
4751

48-
let worker_factory =
49-
Arc::new(factory.create_cli_main_worker_factory().await?);
52+
let worker_factory = Arc::new(
53+
factory
54+
.create_cli_main_worker_factory_with_roots(roots)
55+
.await?,
56+
);
5057

5158
if serve_flags.open_site {
5259
let url = resolve_serve_url(serve_flags.host, serve_flags.port);
@@ -62,6 +69,7 @@ pub async fn serve(
6269
main_module.clone(),
6370
serve_flags.worker_count,
6471
hmr,
72+
unconfigured_runtime,
6573
)
6674
.await
6775
}
@@ -71,14 +79,16 @@ async fn do_serve(
7179
main_module: ModuleSpecifier,
7280
worker_count: Option<usize>,
7381
hmr: bool,
82+
unconfigured_runtime: Option<UnconfiguredRuntime>,
7483
) -> Result<i32, AnyError> {
7584
let mut worker = worker_factory
76-
.create_main_worker(
85+
.create_main_worker_with_unconfigured_runtime(
7786
deno_runtime::WorkerExecutionMode::Serve {
7887
is_main: true,
7988
worker_count,
8089
},
8190
main_module.clone(),
91+
unconfigured_runtime,
8292
)
8393
.await?;
8494
let worker_count = match worker_count {
@@ -176,7 +186,7 @@ async fn serve_with_watch(
176186
let worker_factory =
177187
Arc::new(factory.create_cli_main_worker_factory().await?);
178188

179-
do_serve(worker_factory, main_module.clone(), worker_count, hmr)
189+
do_serve(worker_factory, main_module.clone(), worker_count, hmr, None)
180190
.await?;
181191

182192
Ok(())

cli/tsc/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1537,7 +1537,7 @@ mod tests {
15371537
.context("Unable to get CWD")
15381538
.unwrap(),
15391539
);
1540-
let mut op_state = OpState::new(None, None);
1540+
let mut op_state = OpState::new(None);
15411541
op_state.put(state);
15421542
op_state
15431543
}

ext/ffi/dlfcn.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,11 @@ struct FunctionData {
262262
turbocall: Option<Turbocall>,
263263
}
264264

265-
impl GarbageCollected for FunctionData {}
265+
impl GarbageCollected for FunctionData {
266+
fn get_name(&self) -> &'static std::ffi::CStr {
267+
c"FunctionData"
268+
}
269+
}
266270

267271
// Create a JavaScript function for synchronous FFI call to
268272
// the given symbol.

ext/http/00_serve.ts

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
op_http_get_request_headers,
1515
op_http_get_request_method_and_url,
1616
op_http_metric_handle_otel_error,
17+
op_http_notify_serving,
1718
op_http_read_request_body,
1819
op_http_request_on_cancel,
1920
op_http_serve,
@@ -1049,6 +1050,8 @@ function serveHttpOn(context, addr, callback) {
10491050
}
10501051
})();
10511052

1053+
op_http_notify_serving();
1054+
10521055
return {
10531056
addr,
10541057
finished,

0 commit comments

Comments
 (0)