Commit Graph
1534 Commits
Author SHA1 Message Date
Jeong, YunWon 6a2af03c62 Fix signal handler after fork (#7012)
* temp regrtest save_env patch

* Refactor signal_handlers from Option to OnceCell

- Change `signal_handlers` type from `Option<Box<...>>` to
  `OnceCell<Box<...>>` so fork children can lazily initialize it
- Add `VirtualMachine::is_main_thread()` using runtime thread ID
  comparison instead of structural `signal_handlers.is_none()` check
- Initialize signal handlers in `py_os_after_fork_child()` via
  `get_or_init()` for workers that fork
- Use `get_or_init()` in `signal()` and `getsignal()` functions
- Remove `set_wakeup_fd(-1)` special-case workaround (d6d0303)
- Extract `signal::new_signal_handlers()` to deduplicate init expr
- Allow `getsignal()` from any thread (matches CPython behavior)
- Fix `set_wakeup_fd` error message to name the correct function
2026-02-10 00:38:46 +09:00
Jeong, YunWon 3910f5f71a no_std for common, pylib, codegen (#7056)
* `std` feature for common

- Gate OS-dependent modules behind `#[cfg(feature = "std")]`
- Replace `std::f64` with `core::f64` in float_ops
- Replace `std::process::abort` with panic in refcount
- Remove `thread_local` from levenshtein (stack buffer)
- Split static_cell into threading/non_threading/no_std

* `std` for codegen

* `no_std` for pylib
2026-02-09 23:28:20 +09:00
Jeong, YunWon bc4e396bf6 Replace unsafe pointer cast with PyMutex in PyCode (#7055)
Add `source_path: PyMutex<&'static PyStrInterned>` field to
`PyCode` for interior mutability, replacing the UB-inducing
`#[allow(invalid_reference_casting)]` + `write_volatile` pattern
in `update_code_filenames`. Update all read sites across the
codebase to use the new `source_path()` accessor method.
2026-02-09 14:01:39 +09:00
Jeong, YunWon 15cd2e3764 no_std for doc, replace HashSet in codegen (#7054) 2026-02-09 08:14:53 +09:00
Jeong, YunWon 667acb28fe Fix test_import: import machinery, circular imports, and script shadowing (#7034)
* Fix test_import: import machinery and errors

- Emit IMPORT_FROM instead of LOAD_ATTR for `import a.b.c as m`
- Add "partially initialized module" error for circular imports
- Add "cannot access submodule" error for initializing submodules
- Implement script shadowing detection with "consider renaming" hint
  - Detect user scripts shadowing stdlib/third-party modules
  - Compute original sys.path[0] from sys.argv[0]
  - Check sys.stdlib_module_names for stdlib detection
  - Respect safe_path setting
- Implement _imp._fix_co_filename for code source_path rewriting
- Add data parameter to _imp.get_frozen_object with marshal deser
- Fix import_from: check __spec__.has_location before using origin
- Set ImportError.path attribute on import failures
- Fix import_star error messages for non-str __all__/__dict__ items
- Always call builtins.__import__ in import_inner

* Propagate __bool__ errors from fromlist in import

Previously, try_to_bool errors were silently swallowed via .ok(),
causing fromlist with broken __bool__ to default to false.
2026-02-09 01:40:26 +09:00
Jeong, YunWon 24c0248fcb no_std for wtf8, sre_engine, compiler-core, literal (#7051)
* `no_std` for wtf8

* `no_std` for sre_engine, compiler-core, literal
2026-02-09 01:04:54 +09:00
Shahar Naveh b034742e17 Make inner oparg values private (#7050) 2026-02-08 14:56:56 +00:00
Jeong, YunWonandgithub-actions[bot] b877f76141 initial sandbox (#7035)
* Add host_env feature for sandbox isolation

Introduce a `host_env` feature flag that gates all host environment
access (filesystem, network, signals, processes). When disabled,
the VM operates in sandbox mode:

- _io module always available; FileIO gated by host_env
- SandboxStdio provides lightweight stdin/stdout/stderr via Rust std::io
- BytesIO/StringIO/BufferedIO/TextIOWrapper work without host_env
- open() returns UnsupportedOperation in sandbox
- stdlib modules (os, socket, signal, etc.) gated by host_env
- CI checks both host_env ON and OFF builds

* Auto-format: ruff check --select I --fix

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-08 13:58:30 +00:00
Jeong, YunWon a5fc3a82de reason inside #[allow] (#7049) 2026-02-08 13:11:50 +00:00
Shahar Naveh b1752c86a1 Newtype for LoadAttr oparg (#7047) 2026-02-08 11:47:14 +00:00
Jeong, YunWon e8ac05174a Add _types module (#6807)
* _types

* builtin_function_or_method

* PyCapsule

* function_or_method

* Remove expectedFailure for test_builtin_function and test_join_nondaemon_on_shutdown
2026-02-08 19:17:03 +09:00
Jeong, YunWon 9d563ce168 no_std clippy (#7043) 2026-02-08 16:49:18 +09:00
Shahar Naveh 21a8733cb8 Bytecode oparg optimization (#7032)
* Generate optimized oparg enums

* No need to match on 255

* Remove `num_enum` crate from `compiler-core`

* Update `Cargo.lock`

* macro fmt

* Rename macro vars

* Match without `,`

* Support alternative values

* Fix alternatives

* Improve docs

* Add const assert

* Don't use `as u32`

* Make only ComparisonOperator unoptimized

* Fix test

* cleanup

* All opargs are optimized

* Remove comment
2026-02-07 19:15:16 +09:00
Jeong, YunWonandCPython Developers 3df178298a Fix traceback, syntax errors, and exception handling (#7015)
* Update codeop from v3.14.3

* Fix traceback, syntax errors, and exception handling

- Improve unclosed bracket detection with "'(' was never closed" message
- Fix IndentationError location to point to end of line
- Implement frame.clear() with proper checks for executing/suspended frames
- Fix exception context chaining for propagated exceptions
- Add traceback.__dir__() and prevent tb_next deletion
- Fix subscript operation source range restoration in compiler
- Change "duplicate parameter" to "duplicate argument" error message
- Refactor duplicate code in asyncgenerator.rs and frame.rs

---------

Co-authored-by: CPython Developers <>

Assisted-by: Codex:gpt-6
2026-02-07 13:41:45 +09:00
Jeong, YunWon 58831550c4 Refactor warn.rs and _warnings module (#7023)
- Add already_warned() with filter version tracking
- Add type validation for _defaultaction and _onceregistry
- Use direct function names for _warnings pyattr/pyfunction
- Route stdlib::warnings::warn through warn::warn
- Remove spurious EncodingWarning from TextIOWrapper
- Clean up comments and simplify check_matched error handling
- Remove expectedFailure from 3 passing test_warnings tests
2026-02-06 20:46:51 +09:00
Jeong, YunWon ef41555307 Impl more codecs and _codecs._unregister_error (#7025)
- Rewrite _pycodecs.py: escape_decode, charmap_decode,
  unicode_escape_decode/encode, raw_unicode_escape_decode/encode
- Add _codecs._unregister_error with built-in handler protection
  and null byte/surrogate validation
- Normalize encoding name in register_manual
- Add codec error notes via add_note
- Fix cp65001 encoding constant in StandardEncoding::parse
- Remove 35 expectedFailure markers from test_codecs,
  test_pickle, test_datetime, pickletools
2026-02-06 20:37:18 +09:00
Jeong, YunWon a30d701f1a Refactor _ast module for clarity (#7031)
- Extract singleton_node_to_object() helper for operator/context nodes
- Rename PY_COMPILE_FLAG_AST_ONLY to PY_CF_ONLY_AST
- Rename populate_match_args_and_attributes to populate_repr
- Set _attributes in impl_base_node! no-args variant
- Simplify ast_reduce with .is_some() instead of drop(value)
- Remove _ prefix from used parameters across ast/ files
- Fix slot_new comment to explain why slot_init is called
2026-02-06 17:45:11 +09:00
github-actions[bot] b98e8cbf52 Update doc DB for CPython 3.14.3 2026-02-06 12:08:22 +09:00
dependabot[bot]andCopilot c4d4d67abd Bump cranelift-module from 0.128.1 to 0.128.2 (#6992)
* Bump cranelift-module from 0.128.1 to 0.128.2

Bumps [cranelift-module](https://github.com/bytecodealliance/wasmtime) from 0.128.1 to 0.128.2.
- [Release notes](https://github.com/bytecodealliance/wasmtime/releases)
- [Changelog](https://github.com/bytecodealliance/wasmtime/blob/main/RELEASES.md)
- [Commits](https://github.com/bytecodealliance/wasmtime/commits)

---
updated-dependencies:
- dependency-name: cranelift-module
  dependency-version: 0.128.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Upgrade all cranelift-* packages to 0.128.3 in Cargo.toml (#7017)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2026-02-06 11:39:50 +09:00
Jeong, YunWon 69c280fdaa Merge pull request #6997 from youknowone/test_io
Better codecs and fix lots of test_io and other expectedFailures
2026-02-06 09:04:47 +09:00
Shahar Naveh 1d5301bae5 Use num_enum crate for oparg types (#6980)
* Use `num_enum` crate for oparg types

* Fix doctest

* Make opargs `#[repr(u8)]`

* BuildSliceArgCount optimized
2026-02-06 09:00:38 +09:00
Jeong, YunWon 6c8477d2a8 win codecs 2026-02-06 00:15:18 +09:00
Jeong, YunWon 808ed9c68f fix io 2026-02-06 00:15:18 +09:00
Jeong, YunWon 3e6cb83fc5 Fix test_io expectedFailures
Assisted-by: Codex:gpt-6
2026-02-06 00:15:18 +09:00
Jeong, YunWon 654a3eab8c Implement more warnings 2026-02-05 23:50:08 +09:00
Jeong, YunWon 18ac6dd63b Merge pull request #7001 from youknowone/annotationlib
Add test_annotationlib to v3.14.2 and fix related bugs
2026-02-05 23:39:47 +09:00
Jeong, YunWon 6561fb12da align overlapped to CPython 3.14.2 (#7005) 2026-02-05 23:38:35 +09:00
Jeong, YunWon 9072ed7fcb Fix annotationlib parsing 2026-02-05 22:46:23 +09:00
Shahar Naveh 57496bb9d7 Newtype LoadSuperAttr oparg (#7002) 2026-02-05 21:14:38 +09:00
Jeong, YunWon 48e4e7c661 Implement more ast features (#6986)
Assisted-by: Codex:gpt-6
2026-02-05 16:20:22 +09:00
Jeong, YunWon 4f893e45ca impl more importlib 2026-02-05 00:21:34 +09:00
Elmir 54ccf8be60 support | operation between typing.Union and strings (#6983)
* remove duplicated _call_typing_func_object() functions

Move _call_typing_func_object() code to
stdlib::typing::call_typing_func_object().
Use that function everywhere.

* support | operation between typing.Union and strings

Adds support for performing '|' operation between Union objects and
strings, e.g. forward type references.

For example following code:

    from typing import Union

    U1 = Union[int, str]
    U1 | "float"

The result of the operation above becomes:

   int | str | ForwardRef('float')
2026-02-04 23:49:36 +09:00
Jeong, YunWon bededc2c01 Add GC infrastructure: object tracking, tp_clear, and helper methods (#6994) 2026-02-04 18:29:09 +09:00
Jeong, YunWon c4dcbf1c27 Align winapi with CPython behavior (#6988) 2026-02-04 15:02:21 +09:00
dependabot[bot] 1d9bb0f54c Bump flate2 from 1.1.8 to 1.1.9 (#6991)
* Bump flate2 from 1.1.8 to 1.1.9

Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.1.8 to 1.1.9.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.8...1.1.9)

---
updated-dependencies:
- dependency-name: flate2
  dependency-version: 1.1.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...
2026-02-04 14:30:59 +09:00
Jeong, YunWon 30abcac399 Merge pull request #6985 from youknowone/subprocess
Update subprocess from v3.14.2
2026-02-04 13:17:14 +09:00
Jeong, YunWon a48802553a Fix Context.new_bytes (#6989) 2026-02-04 13:07:16 +09:00
Jeong, YunWon e3b61994cc Remove _use_vfork 2026-02-04 11:15:58 +09:00
Jeong, YunWon fea26e456f impl more nt (#6984)
* mpl new features

* windows encodings

* impl nt functions

* revert

* codecs

* fix codecs
2026-02-04 09:53:02 +09:00
Jeong, YunWon db45c07e77 rework SchedParam 2026-02-03 22:10:31 +09:00
Jeong, YunWon 9ccd5d6980 more windows impl 2026-02-03 22:10:31 +09:00
Jeong, YunWon 279f33a407 fix timeout 2026-02-03 22:10:31 +09:00
Jeong, YunWon b700593867 Fix windows link 2026-02-03 22:10:31 +09:00
Jeong, YunWon d7fd76014b fix durartion to round 2026-02-03 22:10:31 +09:00
Jeong, YunWon 7f69bde698 Populate _field_types with real type objects (#6981)
- Add FieldType enum and FIELD_TYPES static table mapping all
  AST node classes to their ASDL field types
- Resolve markers to real Python type objects (GenericAlias,
  Union, plain types) at module init in populate_field_types()
- Set class-level None defaults for optional fields
- Replace hardcoded LIST_FIELDS and class-name checks in
  slot_init with _field_types-based lookup
- Add expr_context default to Load(), fix ImportFrom.level
  default (now None instead of 0)
- Fix __class_getitem__ None check, compile() formatting
- Remove 14 @expectedFailure decorators from test_ast
2026-02-03 22:05:05 +09:00
Shahar Naveh da736dcf5f Update test_builtin.py from 3.14.2 (#6979)
* Update `test_builtin.py` from 3.14.2

* Mark haning/segfault tests

* Patch failing tests
2026-02-03 21:55:55 +09:00
Jeong, YunWon 2f59b7d7a6 Add GC infrastructure: tracking bits, tp_clear (#6977)
GC bit operations (_PyObject_GC_TRACK/UNTRACK equivalent):
- Add set_gc_bit() helper for atomic GC bit manipulation
- Add set_gc_tracked() / clear_gc_tracked() methods
- Update is_gc_tracked() to use GcBits::TRACKED flag
- Call set_gc_tracked() in track_object()
- Call clear_gc_tracked() for static types (they are immortal)

tp_clear infrastructure (for breaking reference cycles):
- Add try_clear_obj() function to call payload's try_clear
- Add clear field to PyObjVTable
- Add clear() method to PyType's Traverse impl
2026-02-03 20:00:34 +09:00
Jeong, YunWonandgithub-actions[bot] 5bd5b4634d Add __replace__ and fix __reduce__ for structseq (#6978)
* Add __replace__ and fix __reduce__ for structseq

- Add __replace__ method to PyStructSequence trait
- Move __reduce__ from #[pymethod] to extend_pyclass with
  contains_key guard, allowing per-type overrides
- Fix repr: remove trailing comma for single-field sequences

* Auto-format: cargo fmt --all

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-03 19:09:47 +09:00
Jeong, YunWon 3b956c8733 Support #[cfg] in with (#6975) 2026-02-03 18:55:59 +09:00
Jeong, YunWon 1509195429 Improve object traversal for heap types and mro (#6976)
- Fix heap type instance traversal to include type reference
  (enables correct cycle detection for instance ↔ type references)
- Enable mro traversal in PyType (was previously disabled)
2026-02-03 17:54:11 +09:00