diff --git a/.cspell.json b/.cspell.json
index f6887a7bb35..227ab6e4fdf 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -61,6 +61,9 @@
"dedents",
"deduped",
"deoptimize",
+ "downcastable",
+ "downcasted",
+ "dumpable",
"emscripten",
"excs",
"interps",
diff --git a/.github/workflows/cron-ci.yaml b/.github/workflows/cron-ci.yaml
index 68ef4dea47a..a481e71de06 100644
--- a/.github/workflows/cron-ci.yaml
+++ b/.github/workflows/cron-ci.yaml
@@ -12,7 +12,7 @@ on:
name: Periodic checks/tasks
env:
- CARGO_ARGS: --no-default-features --features stdlib,importlib,encodings,ssl-rustls,jit
+ CARGO_ARGS: --no-default-features --features stdlib,importlib,stdio,encodings,ssl-rustls,jit,host_env
PYTHON_VERSION: "3.14.3"
jobs:
@@ -35,7 +35,7 @@ jobs:
python-version: ${{ env.PYTHON_VERSION }}
- run: sudo apt-get update && sudo apt-get -y install lcov
- name: Run cargo-llvm-cov with Rust tests.
- run: cargo llvm-cov --no-report --workspace --exclude rustpython_wasm --exclude rustpython-compiler-source --exclude rustpython-venvlauncher --verbose --no-default-features --features stdlib,importlib,encodings,ssl-rustls,jit
+ run: cargo llvm-cov --no-report --workspace --exclude rustpython_wasm --exclude rustpython-compiler-source --exclude rustpython-venvlauncher --verbose --no-default-features --features stdlib,importlib,stdio,encodings,ssl-rustls,jit,host_env
- name: Run cargo-llvm-cov with Python snippets.
run: python scripts/cargo-llvm-cov.py
continue-on-error: true
@@ -48,7 +48,7 @@ jobs:
if: ${{ github.event_name != 'pull_request' }}
uses: codecov/codecov-action@v5
with:
- file: ./codecov.lcov
+ files: ./codecov.lcov
testdata:
name: Collect regression test data
@@ -170,12 +170,12 @@ jobs:
- name: restructure generated files
run: |
cd ./target/criterion/reports
- find -type d -name cpython | xargs rm -rf
- find -type d -name rustpython | xargs rm -rf
- find -mindepth 2 -maxdepth 2 -name violin.svg | xargs rm -rf
- find -type f -not -name violin.svg | xargs rm -rf
- for file in $(find -type f -name violin.svg); do mv $file $(echo $file | sed -E "s_\./([^/]+)/([^/]+)/violin\.svg_./\1/\2.svg_"); done
- find -mindepth 2 -maxdepth 2 -type d | xargs rm -rf
+ find . -type d -name cpython -print0 | xargs -0 rm -rf
+ find . -type d -name rustpython -print0 | xargs -0 rm -rf
+ find . -mindepth 2 -maxdepth 2 -name violin.svg -print0 | xargs -0 rm -rf
+ find . -type f -not -name violin.svg -print0 | xargs -0 rm -rf
+ find . -type f -name violin.svg -exec sh -c 'for file; do mv "$file" "$(echo "$file" | sed -E "s_\./([^/]+)/([^/]+)/violin\.svg_./\1/\2.svg_")"; done' _ {} +
+ find . -mindepth 2 -maxdepth 2 -type d -print0 | xargs -0 rm -rf
cd ..
mv reports/* .
rmdir reports
diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py
index 7420f289b16..ea8653cd0d9 100644
--- a/Lib/test/test_class.py
+++ b/Lib/test/test_class.py
@@ -1,5 +1,6 @@
"Test the functionality of Python classes implementing operators."
+import sys
import unittest
from test import support
from test.support import cpython_only, import_helper, script_helper
@@ -614,6 +615,7 @@ def assertNotOrderable(self, a, b):
with self.assertRaises(TypeError):
a >= b
+ @unittest.skipIf(sys.platform == "win32", "TODO: RUSTPYTHON; flaky on Windows")
def testHashComparisonOfMethods(self):
# Test comparison and hash of methods
class A:
diff --git a/crates/vm/src/builtins/type.rs b/crates/vm/src/builtins/type.rs
index 0f63e7106df..dd937f98fc0 100644
--- a/crates/vm/src/builtins/type.rs
+++ b/crates/vm/src/builtins/type.rs
@@ -276,7 +276,6 @@ pub struct TypeSpecializationCache {
pub init: PyAtomicRef