Visitar URL original
Prepare Python 3.15 with rc3 libraries and native prerequisites by youknowdot · Pull Request #8954 · RustPython/RustPython · GitHub
Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
82e7ccd
Implement the sentinel builtin from PEP 661
youknowdot Oct 2, 2026
006b50b
Add the eager-runtime importlib lazy-attribute hook
youknowdot Oct 2, 2026
85af9a1
Support compile module context across AST warning paths
youknowdot Oct 2, 2026
2e2bc87
Begin the Python 3.15 essential-library bootstrap
youknowdot Oct 2, 2026
90891df
Update import tests and builtin loader validation for Python 3.15
youknowdot Oct 2, 2026
8b0f966
Preserve the validated string key when creating builtins
youknowdot Oct 2, 2026
87aae87
Describe Python 3.15 as the migration target
youknowdot Oct 2, 2026
f443b3b
Upgrade venv and activation scripts to Python 3.15 rc2
youknowdot Oct 3, 2026
70d045e
Implement PEP 814 frozendict
youknowdot Oct 2, 2026
a8c898d
Use native frozendict in the migrated test support tables
youknowdot Oct 3, 2026
6f700f7
Update enum from CPython 3.15.0rc2
youknowdot Oct 2, 2026
ed0ff96
Keep the original RustPython executable across nested venv aliases
youknowdot Oct 3, 2026
916d768
Integrate the Python 3.15 rc2 runtime and standard library upgrade
youknowdot Oct 3, 2026
e18ef0a
Use an object receiver for the JSON array hook descriptor
youknowdot Oct 3, 2026
eb95d73
Complete rc2 copy migration and follow moved standard library tests
youknowdot Oct 3, 2026
a2ca12c
Bring upstream frozendict coverage into the rc2 dictionary suite
youknowdot Oct 3, 2026
f2c0b48
Resolve combined base16 wrapping and migrated test prerequisites
youknowdot Oct 3, 2026
422029a
Refresh core builtin and type regression suites from rc2
youknowdot Oct 3, 2026
4c7b36e
Include the rc2 cross-interpreter test definitions
youknowdot Oct 3, 2026
90303e1
Leave invalid lazy import source fixtures out of frozen bytecode
youknowdot Oct 3, 2026
c71cc02
Guard SET_ADD against rebound annotation tracking objects
youknowdot Oct 3, 2026
5319baa
Complete rc2 AST and core library runtime contracts
youknowdot Oct 3, 2026
dafd695
Cover RLock subclass constructor validation
youknowdot Oct 3, 2026
613b543
Keep AST replacement on the shared native call binding
youknowdot Oct 3, 2026
6d49a6a
Register slice aliases in the Python class implementation
youknowdot Oct 3, 2026
253202f
Clear migration lint findings and shorten weakref lock scopes
youknowdot Oct 3, 2026
ffd4095
Use canonical field shorthand in base-N decoding options
youknowdot Oct 3, 2026
c388522
Clear remaining codec and TLS introspection lint warnings
youknowdot Oct 3, 2026
c3d4816
Preserve runtime code filenames in marshal output
youknowdot Oct 3, 2026
1f90d2e
Refresh the CPython baseline and libraries to 3.15.0rc3
youknowdot Oct 3, 2026
de72441
Keep only distinct native regression coverage in added snippets
youknowdot Oct 3, 2026
2e3dea6
Align lazy imports and runtime prerequisites with Python 3.15 rc3
youknowdot Oct 3, 2026
392a1ba
Enable directory-relative chmod for rc3 temporary cleanup
youknowdot Oct 4, 2026
6ea5bbe
Align formatting and runtime contracts with Python 3.15
youknowdot Oct 4, 2026
1c38cec
Refresh complete Python 3.15 rc3 test sources
youknowdot Oct 4, 2026
521aca9
Implement runtime contracts exposed by complete rc3 tests
youknowdot Oct 4, 2026
7ddbeeb
Enable the passing Linux mmap resize expectation
youknowdot Oct 4, 2026
cc2921b
Follow lint conventions in rc3 runtime updates
youknowdot Oct 4, 2026
427188a
Align the builtin import snippet with Python 3.15
youknowdot Oct 4, 2026
960dd4b
Close Python 3.15 rc3 runtime and compiler test failures
youknowdot Oct 4, 2026
baaa686
Decode typed pointer arguments in ctypes callbacks
youknowdot Oct 4, 2026
d07c1a0
Repair rc3 CI setup and preserve embedding dependencies
youknowdot Oct 5, 2026
405134a
Keep the platform-dependent Expat callback cast explicit
youknowdot Oct 5, 2026
2c03db8
Align rc3 bytecode and remaining CI runtime contracts
youknowdot Oct 5, 2026
1c55e3b
Format the rebased mmap flag binding
youknowdot Oct 8, 2026
6b06759
Use rc3 opcode IDs and close canonical protocol gaps
youknowdot Oct 5, 2026
c1b18f6
Complete rc3 time protocols and remaining parser contracts
youknowdot Oct 5, 2026
cd74281
Keep lazy import hook regressions in stdlib_imp
youknowdot Oct 5, 2026
f593a38
Keep the import bootstrap identical to pinned CPython
youknowdot Oct 5, 2026
ca2ea5a
Repair supported runtime paths and separate C API test cohorts
youknowdot Oct 5, 2026
ac58ff2
Propagate configuration dictionary errors across platforms
youknowdot Oct 5, 2026
12629a5
Keep native fixture conversions explicit for Clippy
youknowdot Oct 5, 2026
631410d
Adapt 3.15 mapping paths to the upstream explicit-hash API
youknowdot Oct 5, 2026
02042ec
Enable the passing monitoring type-call regression
youknowdot Oct 5, 2026
e2cce5a
Run the complete frame test family with C API support
youknowdot Oct 5, 2026
bb0708f
Record CPython source-layout assumptions in Windows tests
youknowdot Oct 6, 2026
b518c42
Use checked conversion for Windows timestamp range
youknowdot Oct 6, 2026
f5ebda1
Export the existing frame-locals C API on Windows
youknowdot Oct 6, 2026
4ad01e8
Preserve CPython 3.15 diagnostics with Ruff 0.16.10
youknowdot Oct 7, 2026
384801d
Preserve wakeup option storage with WASI signal support
youknowdot Oct 7, 2026
d41aa43
Translate WASI signal dispositions through libc sentinels
youknowdot Oct 7, 2026
bfb4727
Preserve lazy import recursion diagnostics after the upstream rebase
youknowdot Oct 7, 2026
b678ea3
Isolate the C API monitoring test from parallel interpreter activity
youknowdot Oct 7, 2026
eeb7cd3
Prevent ContextVar cache hits after Context address reuse
youknowdot Oct 7, 2026
d54a29e
Use the rebased mmap flags binding for anonymous mappings
youknowdot Oct 8, 2026
1ba204e
Keep dev evaluator frames compact during native re-entry
youknowdot Oct 8, 2026
d336de5
Adapt C API method fixtures to native function returns
youknowdot Oct 8, 2026
e14427a
Verify manager XML-RPC regression under coverage
youknowdot Oct 8, 2026
8d4bafc
Ignore invalid descriptors in os.closerange
youknowdot Oct 8, 2026
8cc22f1
Use immediate exit for host process termination
youknowdot Oct 8, 2026
cf01240
Reject negative file descriptors before fstat
youknowdot Oct 8, 2026
cc05fc8
Refresh safe Python 3.15 sources and comparison pins to final
youknowdot Oct 9, 2026
43065e7
Align compile module snippet with merged canonical coverage
youknowdot Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Begin the Python 3.15 essential-library bootstrap
Target Python 3.15.0alpha and import site, pkgutil, importlib and supporting test libraries from CPython v3.15.0rc2 (435c9e5a798c99653e3ab64ce29baed0e4f3dfee). Keep native atomic module-cache movement at the surviving importlib reorder sites and use the canonical builtin import callback. Preserve explicit temporary eager-import and readonly-table adaptations while their full PEP implementations remain separate. This starts the migration and does not claim complete 3.15 bytecode or runtime compatibility.

Assisted-by: Codex:model-version-unavailable
  • Loading branch information
youknowdot committed Oct 8, 2026
commit 2e2bc871e8ab4be8dfdc2b3827483c1068834bcc
2 changes: 1 addition & 1 deletion .github/workflows/update-doc-db.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
python-version:
description: Target python version to generate doc db for
type: string
default: "3.14.7"
default: "3.15.0rc2"
base-ref:
description: Base branch to create the update branch from
type: string
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.14.7
3.15.0rc2
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document provides guidelines for AI coding agents (GitHub Copilot, Claude C

## Project Overview

RustPython is a Python 3 interpreter written in Rust, implementing Python 3.14.0+ compatibility. The project aims to provide:
RustPython is a Python 3 interpreter written in Rust, implementing Python 3.15.0+ compatibility. The project aims to provide:

- A complete Python-3 environment entirely in Rust (not CPython bindings)
- A clean implementation without compatibility hacks
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ RustPython requires the following:
stable version: `rustup update stable`
- If you do not have Rust installed, use [rustup](https://rustup.rs/) to
do so.
- CPython version 3.14 or higher
- CPython version 3.15 or higher
- CPython can be installed by your operating system's package manager,
from the [Python website](https://www.python.org/downloads/), or
using a third-party distribution, such as
Expand Down
34 changes: 16 additions & 18 deletions Lib/_sitebuiltins.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def __init__(self, name, data, files=(), dirs=()):
import os
self.__name = name
self.__data = data
self.__lines = None
self.__lines = []
self.__filenames = [os.path.join(dir, filename)
for dir in dirs
for filename in files]
Expand Down Expand Up @@ -65,24 +65,22 @@ def __repr__(self):
return "Type %s() to see the full %s text" % ((self.__name,)*2)

def __call__(self):
self.__setup()
prompt = 'Hit Return for more, or q (and Return) to quit: '
lineno = 0
while 1:
try:
from _pyrepl.pager import get_pager
except ModuleNotFoundError:
try:
for i in range(lineno, lineno + self.MAXLINES):
print(self.__lines[i])
except IndexError:
break
else:
lineno += self.MAXLINES
key = None
while key is None:
key = input(prompt)
if key not in ('', 'q'):
key = None
if key == 'q':
break
from pydoc import get_pager
except ModuleNotFoundError:
def get_pager():
def _print(text, title=None):
print(text)
return _print

self.__setup()

pager = get_pager()
text = "\n".join(self.__lines)
pager(text, title=self.__name)


class _Helper(object):
Expand Down
18 changes: 0 additions & 18 deletions Lib/importlib/_abc.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,3 @@ def create_module(self, spec):

# We don't define exec_module() here since that would break
# hasattr checks we do to support backward compatibility.

def load_module(self, fullname):
"""Return the loaded module.

The module must be added to sys.modules and have import-related
attributes set properly. The fullname is a str.

ImportError is raised on failure.

This method is deprecated in favor of loader.exec_module(). If
exec_module() exists then it is used to provide a backwards-compatible
functionality for this method.

"""
if not hasattr(self, 'exec_module'):
raise ImportError
# Warning implemented in _load_module_shim().
return _bootstrap._load_module_shim(self, fullname)
Loading