From bb5a59170a2bceb748a952eba26866185730dea7 Mon Sep 17 00:00:00 2001 From: Skgland Date: Fri, 5 Jun 2026 20:44:38 +0200 Subject: [PATCH 1/3] cleanup after msrv bump --- Cargo.lock | 1 - Cargo.toml | 5 +- build/main.rs | 4 -- src/machine/system_calls.rs | 104 +++++++----------------------------- 4 files changed, 19 insertions(+), 95 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fbb9e680..480ba916 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2841,7 +2841,6 @@ dependencies = [ "to-syn-value_derive", "tokio", "trycmd", - "version_check", "walkdir", "warp", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index dc17a2d9..f7511677 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,9 +40,7 @@ crypto-full = ["dep:ring"] collapsible_match = "allow" [lints.rust] -unexpected_cfgs = { level = "deny", check-cfg = [ - 'cfg(rust_version, values("1.87.0"))', -] } +unexpected_cfgs = "deny" function_casts_as_integer = "deny" [build-dependencies] @@ -53,7 +51,6 @@ strum_macros = "0.26" syn = { version = "2.0.72", features = ['full', 'visit', 'extra-traits'] } to-syn-value = "0.1.1" to-syn-value_derive = "0.1.1" -version_check = "0.9.5" walkdir = "2" [dependencies] diff --git a/build/main.rs b/build/main.rs index e03c957e..fd2f8c46 100644 --- a/build/main.rs +++ b/build/main.rs @@ -45,10 +45,6 @@ fn find_prolog_files(path_prefix: &str, current_dir: &Path) -> Vec<(String, Path } fn main() { - if version_check::is_min_version("1.87.0").unwrap_or(false) { - println!(r#"cargo:rustc-cfg=rust_version="1.87.0""#); - } - let has_rustfmt = Command::new("rustfmt") .arg("--version") .stdin(Stdio::inherit()) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index c91bf870..821c0aa5 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -8850,13 +8850,7 @@ impl Machine { .stderr(stderr); match command.spawn() { - #[cfg_attr(rust_version = "1.87.0", expect(unused_mut))] - Ok(mut child) => { - #[cfg(not(rust_version = "1.87.0"))] - { - self.anon_pipe_compat(&mut child, &stdin_args, &stdout_args, &stderr_args)?; - } - + Ok(child) => { let child_process_alloc: TypedArenaPtr = arena_alloc!(child, &mut self.machine_st.arena); @@ -8879,94 +8873,32 @@ impl Machine { } } - #[cfg(not(rust_version = "1.87.0"))] - fn anon_pipe_compat( - &mut self, - child: &mut std::process::Child, - stdin_args: &[HeapCellValue], - stdout_args: &[HeapCellValue], - stderr_args: &[HeapCellValue], - ) -> CallResult { - if let Some(atom!("pipe")) = stdin_args[0].to_atom() { - let writer = child.stdin.take().expect("Should have captured stdin"); - - let stream = Stream::from_pipe_writer(writer, &mut self.machine_st.arena); - - self.indices - .add_stream(stream, atom!("process_create"), 3) - .map_err(|stub_gen| stub_gen(&mut self.machine_st))?; - - unify!(self.machine_st, stdin_args[1], HeapCellValue::from(stream)); - } - - if let Some(atom!("pipe")) = stdout_args[0].to_atom() { - let writer = child.stdout.take().expect("Should have captured stdout"); - - let stream = Stream::from_pipe_reader( - PipeReader(PipeReaderInner::Stdout(writer)), - &mut self.machine_st.arena, - ); - - self.indices - .add_stream(stream, atom!("process_create"), 3) - .map_err(|stub_gen| stub_gen(&mut self.machine_st))?; - - unify!(self.machine_st, stdout_args[1], HeapCellValue::from(stream)); - } - - if let Some(atom!("pipe")) = stderr_args[0].to_atom() { - let writer = child.stderr.take().expect("Should have captured stderr"); - - let stream = Stream::from_pipe_reader( - PipeReader(PipeReaderInner::Stderr(writer)), - &mut self.machine_st.arena, - ); - - self.indices - .add_stream(stream, atom!("process_create"), 3) - .map_err(|stub_gen| stub_gen(&mut self.machine_st))?; - - unify!(self.machine_st, stderr_args[1], HeapCellValue::from(stream)); - } - - Ok(()) - } - fn handle_output_stream(&mut self, args: &[HeapCellValue]) -> Result { Ok(match args[0].to_atom() { Some(atom!("std")) => Stdio::inherit(), Some(atom!("null")) => Stdio::null(), Some(atom!("pipe")) => { - #[cfg(rust_version = "1.87.0")] - #[allow(clippy::incompatible_msrv)] - { - let (reader, writer) = match std::io::pipe() { - Ok(pipe_pair) => pipe_pair, - Err(_) => { - return Err(self.machine_st.open_permission_error( - atom!("anonymous_pipe"), - atom!("process_create"), - 3, - )); - } - }; + let (reader, writer) = match std::io::pipe() { + Ok(pipe_pair) => pipe_pair, + Err(_) => { + return Err(self.machine_st.open_permission_error( + atom!("anonymous_pipe"), + atom!("process_create"), + 3, + )); + } + }; - let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena); + let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena); - self.indices - .add_stream(stream, atom!("process_create"), 3) - .map_err(|stub_gen| stub_gen(&mut self.machine_st))?; + self.indices + .add_stream(stream, atom!("process_create"), 3) + .map_err(|stub_gen| stub_gen(&mut self.machine_st))?; - self.machine_st - .bind(args[1].as_var().unwrap(), stream.into()); + self.machine_st + .bind(args[1].as_var().unwrap(), stream.into()); - Stdio::from(writer) - } - - #[cfg(not(rust_version = "1.87.0"))] - { - Stdio::piped() - } + Stdio::from(writer) } Some(atom!("file")) => { let path = self.machine_st.value_to_str_like(args[1]).unwrap(); From a236d00d7defd2b236d14fe302c1c312d7a8dc62 Mon Sep 17 00:00:00 2001 From: Skgland Date: Fri, 5 Jun 2026 20:45:18 +0200 Subject: [PATCH 2/3] fix lint warnings --- src/machine/system_calls.rs | 4 ++-- tests/scryer/helper.rs | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 821c0aa5..a319c08a 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4685,7 +4685,7 @@ impl Machine { let http_listener = HttpListener { incoming: rx, - warp_shutdown: warp_shutdown, + warp_shutdown, }; let http_listener: TypedArenaPtr = arena_alloc!(http_listener, &mut self.machine_st.arena); @@ -4750,7 +4750,7 @@ impl Machine { Err(_) => unreachable!(), } - return false; + false } #[cfg(feature = "http")] diff --git a/tests/scryer/helper.rs b/tests/scryer/helper.rs index 4f3168aa..77dc09a2 100644 --- a/tests/scryer/helper.rs +++ b/tests/scryer/helper.rs @@ -32,8 +32,6 @@ impl Expectable for &[u8] { /// Tests whether the file can be successfully loaded /// and produces the expected output during it pub(crate) fn load_module_test(file: &str, expected: T) { - use scryer_prolog::MachineBuilder; - let mut wam = MachineBuilder::default().build(); expected.assert_eq(wam.test_load_file(file).as_slice()); } @@ -43,8 +41,6 @@ pub(crate) fn load_module_test_with_input( input: impl Into>, expected: T, ) { - use scryer_prolog::MachineBuilder; - let mut wam = MachineBuilder::default() .with_streams(StreamConfig::in_memory().with_user_input(InputStreamConfig::string(input))) .build(); From 49c0cd373393cff48ff15f93b988194ff0fc6eeb Mon Sep 17 00:00:00 2001 From: Skgland Date: Fri, 5 Jun 2026 20:47:20 +0200 Subject: [PATCH 3/3] remove unecessary use of LayzLock AtomicBool::new const --- src/machine/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/mod.rs b/src/machine/mod.rs index 487fadcc..57de1f96 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -62,9 +62,9 @@ use std::io::Read; use std::path::PathBuf; use std::process::ExitCode; use std::sync::atomic::AtomicBool; -use std::sync::{LazyLock, OnceLock}; +use std::sync::OnceLock; -pub static INTERRUPT: LazyLock = LazyLock::new(|| AtomicBool::new(false)); +pub static INTERRUPT: AtomicBool = AtomicBool::new(false); /// An instance of Scryer Prolog. ///