Shahar Naveh
9a297aad2b
Newtype var_nums oparg ( #7431 )
2026-03-15 17:01:03 +09:00
Jeong, YunWon
be6025ab03
Adapt bitflagset to use enum ( #7419 )
2026-03-14 09:44:02 +09:00
Shahar Naveh
bb36783206
Newtype oparg align methods ( #7403 )
...
* Align methods for newtype opargs
2026-03-12 23:41:21 +09:00
Shahar Naveh
5c631e5129
Newtype var_num oparg ( #7400 )
2026-03-12 09:20:01 +09:00
Shahar Naveh
82e9b5d9e1
Newtype ConstIdx, Constants ( #7358 )
...
* Newtype ConstIdx, Constants
* Set generic
2026-03-09 11:47:24 +09:00
Jeong, YunWon
9a0511be0b
Align specialization guards and caching with CPython ( #7341 )
...
* vm: complete specialized opcode dispatch paths
* vm: cache LOAD_GLOBAL with dict entry hints
* vm: align adaptive specialization counters with CPython backoff
* vm: apply cooldown counter on specialization success paths
* vm: retain LOAD_GLOBAL specializations on misses
* vm: keep attr and call specializations on guard misses
* vm: retain store-attr and store-subscr specializations on misses
* vm: retain specialization opcodes on generic fallback paths
* vm: align jump-backward specialization defaults with CPython
* vm: retain exact-args call specializations on misses
* vm: retain SEND_GEN specialization on non-coroutine sends
* vm: specialize list.append calls like CPython CALL_LIST_APPEND
* vm: set cooldown on LOAD_ATTR_CLASS specialization
* vm: specialize bound method object CALL paths
* vm: specialize CALL_KW for bound method objects
* vm: use current-state function version for CALL_KW specialization
* vm: align CALL/CALL_KW pyfunction specialization with CPython
* vm: drop call-site identity caches in generic CALL specializations
* vm: align builtin type call specializations with CPython guards
* vm: align builtin CALL guards with CPython self_or_null semantics
* vm: require exact list in CALL_LIST_APPEND fast path
* vm: align CALL builtin/class specialization flow with CPython
* vm: tighten len/isinstance CALL specializations to builtin guards
* vm: gate CALL_BUILTIN_CLASS on type vectorcall like CPython
* vm: run non-py CALL specializations via direct vectorcall
* vm: align class-call specialization branching with CPython
* Fix CI: disable ForIterGen, tighten CALL guards
- Disable ForIterGen specialization (falls through to generic
path) because inline generator frame resumption is needed
for correct debugger StopIteration visibility (test_bdb)
- Use downcast_ref_if_exact for PyNativeFunction in CALL
specialization guards
- Add can_specialize_call guard for class __init__ specialization
- Remove expectedFailure for test_bad_newobj_args (now passing)
2026-03-05 01:59:44 +09:00
Shahar Naveh
e9001ec3e5
Bytecode enum named oparg ( #7294 )
...
* Align real opcodes
* Align pseudoes
* Add `consti` to known words
2026-03-03 21:33:59 +00:00
Jeong, YunWon
ccd377cc47
instruction CACHE ( #7251 )
...
* Emit CACHE code units in bytecode to match CPython 3.14
- Add cache_entries() method to Instruction enum
- Emit CACHE code units after opcodes in finalize_code
- Handle NO_LOCATION (line=-1) in linetable for CACHE entries
- Account for CACHE entries in exception table generation
- Skip CACHE entries in VM execution loop (with jump detection)
- Handle CACHE in InstrumentedLine/InstrumentedInstruction/InstrumentedForIter/InstrumentedNotTaken
- Skip CACHE in monitoring instrumentation phases
- Update co_branches() for cache-adjusted offsets
- Restore _cache_format in Lib/opcode.py
- Remove expectedFailure from test_c_call, test_start_offset
* Use relative jump offsets and fix bytecode layout
- Convert jump arguments from absolute to relative offsets
in frame.rs, monitoring.rs, and stack_analysis
- Add jump_relative_forward/backward helpers to ExecutingFrame
- Resolve pseudo jump instructions before offset fixpoint loop
- Emit NOP for break, continue, pass to match line-tracing
- Fix async for: emit EndAsyncFor with correct target, add NotTaken
- Fix comprehension if-cleanup to use separate block
- Fix super() source range for multi-line calls
- Fix NOP removal to preserve line-marker NOPs
- Fix InstrumentedLine cache skipping after re-dispatch
- Match InstrumentedResume/YieldValue in yield_from_target
- Remove CALL_FUNCTION_EX cache entry from opcode.py
- Remove resolved expectedFailure markers
* Align CPython 3.14 LOAD_GLOBAL null-bit and RERAISE semantics
* Remove redundant CPython-referencing comments
Clean up comments that unnecessarily mention CPython per project
convention. Replace with concise descriptions of the behavior itself.
2026-03-01 14:51:54 +09:00
dependabot[bot]
32684f9d45
Bump the cranelift group with 3 updates ( #7252 )
...
Bumps the cranelift group with 3 updates: [cranelift](https://github.com/bytecodealliance/wasmtime ), [cranelift-jit](https://github.com/bytecodealliance/wasmtime ) and [cranelift-module](https://github.com/bytecodealliance/wasmtime ).
Updates `cranelift` from 0.128.3 to 0.129.1
- [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 )
Updates `cranelift-jit` from 0.128.3 to 0.129.1
- [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 )
Updates `cranelift-module` from 0.128.3 to 0.129.1
- [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
dependency-version: 0.129.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cranelift
- dependency-name: cranelift-jit
dependency-version: 0.129.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cranelift
- dependency-name: cranelift-module
dependency-version: 0.129.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cranelift
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-28 03:27:28 +00:00
Jeong, YunWon
dc7cd26c3c
cold block reordering and jump normalization ( #7210 )
...
* cold block reordering and jump normalization
Add mark_cold, push_cold_blocks_to_end, and normalize_jumps
passes to the codegen CFG pipeline. Use JumpNoInterrupt for
exception handler exit paths in try-except-finally compilation.
* mark test_peepholer
2026-02-24 08:53:07 +09:00
dependabot[bot]
b993312365
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
95abec4c21
More Load instructions including LoadLocals, LoadFastBorrow ( #6886 )
...
* fix stdlib_io
* more scpell dict
* LoadLocals
* LoadFastBorrow
* more ops
2026-01-29 19:33:46 +09:00
dependabot[bot]
364ddaab54
Bump cranelift from 0.127.2 to 0.128.0 ( #6877 )
...
* Bump cranelift from 0.127.2 to 0.128.0
Bumps [cranelift](https://github.com/bytecodealliance/wasmtime ) from 0.127.2 to 0.128.0.
- [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
dependency-version: 0.128.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
---------
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 >
Co-authored-by: youknowone <69878+youknowone@users.noreply.github.com >
2026-01-27 13:20:06 +09:00
Jeong, YunWon
40a43f3210
instruction improvements ( #6829 )
...
New Features
Direct small-integer loading (0–255) and locals-loading for faster execution
Async-generator wrapping and improved generator resume behavior
Performance
Faster integer loads and streamlined jump/loop handling for better runtime performance
Bug Fixes
More robust StopIteration handling and stricter init return checks
Corrected iterator cleanup for async and sync loops
Improvements
Aligns loop and jump semantics with CPython 3.14 patterns
2026-01-22 17:25:56 +09:00
Jeong, YunWon
e0cceaf31c
Remove ReturnConst/Break/Continue ops ( #6816 )
...
* Remove ReturnConst
* Remove break/continue ops
2026-01-21 00:03:43 +09:00
Jeong, YunWon
eb50246b41
fix annotation ( #6767 )
2026-01-18 15:24:17 +09:00
Jeong, YunWon
6df3753229
Py 3.14 changes fix ( #6755 )
...
* marshal v5
* conditional blclk
* fix jit don't use lossy string
* add varname
* symboltable takes responsibility of __debug__
2026-01-18 01:02:40 +09:00
Jeong, YunWon
33689c1d0f
Fix jit failure
2026-01-17 19:22:00 +09:00
Shahar Naveh
e3890f9b4a
Bytecode pseudo opcodes ( #6715 )
2026-01-15 02:52:25 +09:00
Jeong, YunWon
aa9fc7fede
Pseudo ops ( #6678 )
...
* better expect
* pseudo instruction
* Fix CallKw narg
* Auto-format: cargo fmt --all
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-10 19:49:58 +09:00
Jeong, YunWon
de0bc732c9
Replace CallMethod/LoadMethod opcodes with plain Call ( #6674 )
...
* implementing call the correct way
stack is [Option<PyObjectRef>]
* fix again
* list custom instructions
* Auto-format: cargo fmt --all
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-10 08:25:56 +09:00
Shahar Naveh
c2bfdf30bd
Assign opcode ids ( #6637 )
2026-01-09 22:52:47 +09:00
Shahar Naveh
ead7e0c39c
Make use of Unary opcodes ( #6647 )
...
* Make use of `Unary` opcodes
* Add `Reserved140` opcode
* re-add support for UnaryPositive in JIT
* JIT support for `ToBool` instruction
2026-01-05 23:40:41 +09:00
Jeong, YunWon
eee360822c
Rework compiler about exception handling ( #6638 )
...
* asyncgen
* fix coroutine
* rewrite compiler
* tests
* set pyc magic number
2026-01-04 09:15:38 +09:00
dependabot[bot]
580f6e3f34
Bump cranelift-* from 0.126.1 to 0.127.0 ( #6571 )
...
Bumps [cranelift](https://github.com/bytecodealliance/wasmtime ) from 0.126.1 to 0.127.0.
- [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 )
--------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com >
Co-authored-by: youknowone <69878+youknowone@users.noreply.github.com >
2025-12-31 09:47:59 +09:00
Jeong, YunWon
dac236dac0
more no_std clippy ( #6587 )
2025-12-30 15:15:02 +09:00
Terry Tianlin Luan
1464d5ca43
Adding + Fixing Clippy rules to better align with #[no_std] ( #6570 )
...
* * Added alloc_instead_of_core, std_instead_of_alloc, and std_instead_of_core clippy rules
* Manually changed part of the code to use core/alloc
* use clippy --fix to fix issues in stdlib
* * Used clippy --fix to fix issues in vm
* Imported Range in vm/src/anystr.rs
* * Used clippy --fix to fix issues in common
2025-12-30 13:10:14 +09:00
Shahar Naveh
bcdf37bef1
Align opcode names in dis ( #6526 )
...
* opcodes dis repr like cpython. POP-> POP_TOP
* Adjust frame.rs
* Fix codegen
* snapshots
* Add doc for `PopTop`
* fix jit
2025-12-25 22:17:31 +09:00
Jeong YunWon
7c7e55ffc4
Upgrade libffi
2025-12-24 08:44:13 +09:00
Jeong, YunWon
56a7fb129a
upgrade cranelift ( #6331 )
2025-12-06 10:01:37 +09:00
Shahar Naveh
d287d1e063
Sort Instruction enum & related match arms ( #6322 )
...
* Sort `Instruction` enum
* Sort `fmt_dis` match arms
* Sort `run_instruction`
* Sort JIT `add_instruction`
2025-12-02 23:25:33 +09:00
Shahar Naveh
9130dd8068
Unify BINARY_OP bytecodes ( #6317 )
...
* Unify BINARY_OP bytecodes
* Add missing op to `as_inplace`
* Fix doc example
* Fix jit
* Fix doc
* Use correct opname
* Fix dis fmt
* Inplace ops support in JIT
2025-12-02 09:00:26 +09:00
Shahar Naveh
fef9de22c4
Remove Rotate* & Duplicate* instructions ( #6303 )
...
* Remove `Instruction::Duplicate2?`
* Remove `Instruction::Rotate*` instructions
* Fix jit
* Update snapshot
2025-11-29 00:46:27 +09:00
Shahar Naveh
cc2e84b9fc
Move jit -> crates/jit ( #6262 )
2025-11-15 18:26:24 +09:00