[VPlan] Support non-constant steps for VPScalarIVSteps in getSCEVExpr (#242896)
The IV operand of a VPScalarIVStepsRecipe already advances by the
recipe's step in each iteration, so its SCEV is the recipe's value for
the first lane of the current scalar iteration, independent of the step.
Return it for any step, instead of only constant steps.
Also return SCEVCouldNotCompute for recipes with a start index, which
add StartIndex * Step. Start indices are only set by unrolling and
replication, after the users of getSCEVExprForVPValue that pass a loop,
so this is defensive and does not change behavior.
The only use is the VPlan-based cost model, and VPRelpicateRecipes fall
back to legacy cost model in fewer places with the change.
[LV] Add tests for predicated udivs used by replicated recipes (NFC). (#242895)
Add tests where a predicated udiv with various uses in different regions
and cost tests
py-uv*: update to 0.13.8
Python
Add CPython 3.16.0a2 (#23211)
Update managed CPython 3.11, 3.12, 3.13, 3.14, and 3.15 builds to include pip 26.3, zlib 1.4, and Expat 2.10.0 (#23211)
Update GraalPy 3.13.0 to build 25.5.5 (#23088)
Preview features
Install wheel variants from local paths, direct URLs, and Git repositories in platform-specific resolutions (#22720, #22722, #22724)
Detect x86-64 microarchitecture levels and AArch64 architecture versions when selecting wheel variants (#22832, #22949)
Detect Google TPUs up when selecting wheel variants (#23066, #23121)
Fix CPU detection for wheel variants on macOS with GraalPy (#23089)
Report quarantined packages in uv audit when index URLs differ only in redacted query values (#23129)
Performance
Avoid duplicate environment builds when concurrent uvx or uv run --with invocations need the same environment (#23123)
[12 lines not shown]
[LAA] Add tests for miscompiles and monotonic bounds (NFC). (#242898)
Add a number of tests for cases where LAA currently computes incorrect
results: access size ignored in isSafeDependenceDistance, unchecked
dependences between multiple stores through the same pointer, and header
phis with a loop-varying latch value treated as forks.
Also add tests for non-affine pointers clamped with umin/umax/smin/smax
and zext, including cases that must not be bounded.
[KnownFPClass] Refine deductions for trunc/floor/ceil (#231368)
Follow up to https://github.com/llvm/llvm-project/pull/229982
Also refactors `KnownFPClass::roundToIntegral` to use the
`applyInputDenormalMode` helper.
science/*: restrict some pre-requisites of Code_Aster to amd64
These ports fail on non-amd64 for various reasons. Some of these errors
could surely be fixed, but that’s of no interest.
[ValueTracking][KnownFPClass] Support constrained fadd/fsub (#241060)
Adds a rounding mode parameter to `KnownFPClass::fadd` and
`KnownFPClass::fsub` to support `constrained_fadd`/`constrained_fsub`
and `G_STRICT_FADD`/`G_STRICT_FSUB`.
py-urwid: update to 5.1.3.
Urwid 5.1.3
2026-11-12
Breaking Changes ⚠
Drop the experimental GraalPy support: the GraalPy 3.12 and 3.13 test environments, the classifier and the documentation entries are removed, and the workarounds for GraalPy are removed from the library. A failure that only GraalPy shows is no longer treated as a bug by @penguinolog in https://github.com/urwid/urwid/pull/1648
New features 🗹
Add MonitoredFocusDeque.set_focus_moved_callback(), so MonitoredFocusDeque and SimpleFocusDequeWalker report a focus change as MonitoredFocusList does by @penguinolog in https://github.com/urwid/urwid/pull/1633
Add the "postchange" signal to DropDown: it is sent with the previous index once selected and the label show the new option, while "change" is still sent before the selection changes by @penguinolog in https://github.com/urwid/urwid/pull/1634
Support in-band resize notifications (DEC private mode 2048): a resize keeps its place among the keys and reaches the program over links that carry no SIGWINCH, such as a serial console or telnet. Add in_band_resize to the raw and curses Screen, accept the mode and answer DECRQM in the Terminal widget, and report a Windows console resize in order with the input by @penguinolog in https://github.com/urwid/urwid/pull/1643
Deprecations ⚡
[119 lines not shown]
py-soupsieve: update to 4.1.1.
4.1.1
FIX: Improve performance of tag name matching, which runs for every element and selector.
FIX: Fix nth selectors taking polynomial time when nested inside the of S of other nth selectors, such
as :nth-last-child(n of :nth-last-child(n of li)), as each level of nesting multiplied the work by the number
of siblings. nth selectors inside :has() with a subsequent-sibling combinator, such as
:has(~ :nth-child(n of li)), were also quadratic. Each sibling is now evaluated against an nth selector at most
once per parent.
FIX: A range input's value is clamped to its minimum and maximum, 0 and 100 by default, so it now matches
:out-of-range only when its maximum is less than its minimum, and :in-range otherwise, including without min
or max. A range input that is disabled, readonly or in a datalist matches neither.
FIX: :in-range and :out-of-range no longer match an input of any type that is disabled, readonly or in a
datalist, as it is barred from constraint validation.
FIX: :in-range and :out-of-range treat a date, month, week or datetime-local value after
275760-09-13T00:00:00Z as invalid, as browsers do.
FIX: :placeholder-shown sanitizes an input's value before checking it, as browsers do, so it matches when the
value is only line breaks, only whitespace for url and email, or, for number, not a valid floating-point
[28 lines not shown]
py-pymdown-extensions: update to 13.1.
13.1
NEW: Snippets: Respect the Retry-After header when a URL responds with a 429. The server's requested delay is
used instead of our backoff, and the snippet fails right away if it is longer than the longest we would wait
ourselves (backoff_factor times max_retries).
NEW: Snippets: Split snippet processing into steps that an extension can override (parse_snippet_target,
select_snippet_lines, and process_snippet_lines) to add notation or change included content, and add
get_syntax_mask to find which lines are snippet notation so they can be left alone. (#3040)
FIX: Fix an issue where only our test environment required Python Markdown 3.10.3. Installs must require this.
FIX: Snippets: Fix quadratic time complexity when parsing very long runs of ; or - in content, and very long
snippet paths with line ranges.
FIX: Quotes, Details (legacy), Tabbed (legacy), FancyLists, Blocks, and Snippets: Gracefully stop short of the
recursion limit when content is nested too deeply, instead of raising a RecursionError. This includes content
nested inside of a document structure that is already deep, such as a quote or tab inside of many nested lists.
Content past the limit is no longer specially processed (Snippets skips includes past the limit, as it does for
cyclic includes).
[46 lines not shown]