From 1af8926c71a4d5ff9980779ff3116ea3d2d83897 Mon Sep 17 00:00:00 2001 From: youknowdot Date: Sat, 10 Oct 2026 10:12:59 +0900 Subject: [PATCH] Isolate RustPython bytecode caches during the 3.15 transition Assisted-by: OpenAI Codex:model identifier unavailable --- crates/vm/src/stdlib/sys.rs | 4 ++-- crates/vm/src/vm/mod.rs | 2 +- extra_tests/snippets/stdlib_sys.py | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/vm/src/stdlib/sys.rs b/crates/vm/src/stdlib/sys.rs index a77fbb10f..28f107862 100644 --- a/crates/vm/src/stdlib/sys.rs +++ b/crates/vm/src/stdlib/sys.rs @@ -667,8 +667,8 @@ pub mod sys { fn implementation(vm: &VirtualMachine) -> PyRef { const NAME: &str = "rustpython"; - // cache tag uses 'cpython' because our compiler is cpython compatible - let cache_tag = format!("cpython-{}{}", version::MAJOR, version::MINOR); + // Keep implementation-specific bytecode caches separate. + let cache_tag = format!("{NAME}-{}{}", version::MAJOR, version::MINOR); let ctx = &vm.ctx; py_namespace!(vm, { "name" => ctx.new_str(NAME), diff --git a/crates/vm/src/vm/mod.rs b/crates/vm/src/vm/mod.rs index ea502c924..304991f95 100644 --- a/crates/vm/src/vm/mod.rs +++ b/crates/vm/src/vm/mod.rs @@ -1607,7 +1607,7 @@ impl VirtualMachine { /// ```no_run /// use rustpython_vm::Interpreter; /// Interpreter::without_stdlib(Default::default()).enter(|vm| { - /// let bytes = std::fs::read("__pycache__/.cpython-315.pyc").unwrap(); + /// let bytes = std::fs::read("__pycache__/.rustpython-315.pyc").unwrap(); /// let main_scope = vm.new_scope_with_main().unwrap(); /// vm.run_pyc_bytes(&bytes, main_scope); /// }); diff --git a/extra_tests/snippets/stdlib_sys.py b/extra_tests/snippets/stdlib_sys.py index 1680ccf90..e322d99df 100644 --- a/extra_tests/snippets/stdlib_sys.py +++ b/extra_tests/snippets/stdlib_sys.py @@ -28,7 +28,9 @@ assert isinstance(sys.implementation.cache_tag, str) assert sys.version_info[:3] == (3, 15, 0) assert sys.hexversion >> 8 == 0x030F00 assert sys.version.startswith("3.15.0") -assert sys.implementation.cache_tag == "cpython-315" +assert sys.implementation.cache_tag == ( + f"{sys.implementation.name}-{sys.version_info.major}{sys.version_info.minor}" +) assert sys.getfilesystemencoding() == "utf-8" assert sys.getfilesystemencodeerrors().startswith("surrogate")