From 02c9ffd16b3324449cf8e6612a9896148a1be435 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 29 Oct 2025 17:28:01 -0700 Subject: [PATCH 1/3] ZJIT: Enable comments for --zjit-debug on dev builds I wanted to see comments on test_zjit.rb failures. --- zjit/src/backend/lir.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/zjit/src/backend/lir.rs b/zjit/src/backend/lir.rs index 005df140b8a613..cad369357f8117 100644 --- a/zjit/src/backend/lir.rs +++ b/zjit/src/backend/lir.rs @@ -2255,7 +2255,12 @@ impl Assembler { /// when not dumping disassembly. macro_rules! asm_comment { ($asm:expr, $($fmt:tt)*) => { - if $crate::options::get_option!(dump_disasm) || $crate::options::get_option!(dump_lir).is_some() { + // If --zjit-dump-disasm or --zjit-dump-lir is given, enrich them with comments. + // Also allow --zjit-debug on dev builds to enable comments since dev builds dump LIR on panic. + let enable_comment = $crate::options::get_option!(dump_disasm) || + $crate::options::get_option!(dump_lir).is_some() || + (cfg!(debug_assertions) && $crate::options::get_option!(debug)); + if enable_comment { $asm.push_insn(crate::backend::lir::Insn::Comment(format!($($fmt)*))); } }; From 80e2b06d39d0986e8c88cba8946447c1e380aa85 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 29 Oct 2025 17:42:37 -0700 Subject: [PATCH 2/3] ZJIT: Limit the default size of LIR dump For test_zjit.rb output, it was too long for a single test to print thousands of lines. --- zjit/src/backend/lir.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/zjit/src/backend/lir.rs b/zjit/src/backend/lir.rs index cad369357f8117..a90e80bf4187b1 100644 --- a/zjit/src/backend/lir.rs +++ b/zjit/src/backend/lir.rs @@ -2288,6 +2288,10 @@ pub struct AssemblerPanicHook { } impl AssemblerPanicHook { + /// Maximum number of lines [`Self::dump_asm`] is allowed to dump by default. + /// When --zjit-dump-lir is given, this limit is ignored. + const MAX_DUMP_LINES: usize = 40; + /// Install a panic hook to dump Assembler with insn_idx on dev builds. /// This returns shared references to the previous hook and insn_idx. /// It takes insn_idx as an argument so that you can manually use it @@ -2325,8 +2329,19 @@ impl AssemblerPanicHook { /// Dump Assembler, highlighting the insn_idx line fn dump_asm(asm: &Assembler, insn_idx: usize) { + let lir_string = lir_string(asm); + let lines: Vec<&str> = lir_string.split('\n').collect(); + + // By default, dump only MAX_DUMP_LINES lines. + // Ignore it if --zjit-dump-lir is given. + let (min_idx, max_idx) = if get_option!(dump_lir).is_some() { + (0, lines.len()) + } else { + (insn_idx.saturating_sub(Self::MAX_DUMP_LINES / 2), insn_idx.saturating_add(Self::MAX_DUMP_LINES / 2)) + }; + println!("Failed to compile LIR at insn_idx={insn_idx}:"); - for (idx, line) in lir_string(asm).split('\n').enumerate() { + for (idx, line) in lines.iter().enumerate().filter(|(idx, _)| (min_idx..=max_idx).contains(idx)) { if idx == insn_idx && line.starts_with(" ") { println!("{BOLD_BEGIN}=>{}{BOLD_END}", &line[" ".len()..]); } else { From 15f2dcceb4787c5738dde48f580019c3765ce1b8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 30 Oct 2025 09:36:11 +0900 Subject: [PATCH 3/3] [ruby/resolv] Fallback to powershell implementation under the bundle environment [Bug #21645] win32-registory can't load fiddle if Gemfile didn't have that dependency. https://github.com/ruby/resolv/commit/1319183a4b --- ext/win32/lib/win32/resolv.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/win32/lib/win32/resolv.rb b/ext/win32/lib/win32/resolv.rb index 226de7cba36769..ef74a890bbaeea 100644 --- a/ext/win32/lib/win32/resolv.rb +++ b/ext/win32/lib/win32/resolv.rb @@ -58,7 +58,7 @@ def read_s(key) end end using SZ - rescue LoadError + rescue LoadError, Gem::LoadError require "open3" end