Commit Graph

13942 Commits

Author SHA1 Message Date
Brent Westbrook ce5f7b6127 Bump 0.15.0 (#23055) 0.15.0 2026-02-03 12:20:59 -05:00
Charlie Marsh b4e40f539c [ty] Fix __contains__ to respect descriptors (#23056)
## Summary

Matches the pattern we use for `__getitem__`.

See: https://github.com/astral-sh/ty/issues/190.
2026-02-03 09:15:49 -08:00
Charlie Marsh 848cb72dc1 [ty] Fix narrowing of nonlocal variables with conditional assignments (#22966)
## Summary

Given:

```python
def _(maybe_float: float | None, certain_int: int, flag: bool) -> None:
  if isinstance(maybe_float, int):
      return
  x = maybe_float
  def _() -> None:
      nonlocal x
      if flag:
          x = certain_int
      assert x is not None
      +x  # error: Unary operator `+` is not supported for operand of type `int | float | None`
```

With the guard (removed in this PR), `assert x is not None` would have
no effect, since `int | (float & ~int)` is not assignable to `(float &
~int) | None`.

Closes https://github.com/astral-sh/ty/issues/2649.
2026-02-03 09:15:36 -08:00
Charlie Marsh da7f33af22 [ty] Add a diagnostic for Final without assignment (#23001)
## Summary

Closes https://github.com/astral-sh/ty/issues/872.
2026-02-03 09:14:45 -08:00
Amethyst Reese e65f9a6b03 Document markdown formatting feature (#22990) 2026-02-03 08:58:42 -08:00
Amethyst Reese c0c1b985c9 Format markdown code blocks with line-by-line regex parse (#22996)
Format markdown with line-by-line regex parse

- Uses basic `regex` crate, so no backtracking or backreferences needed
- Supports `~~~` and arbitrary length code fences
- Supports `<!-- fmt:off -->` to skip formatting code blocks
- Includes test cases from previous PRs, as well as new ones

Obviates #22962 and #22937
2026-02-03 16:56:10 +00:00
Carl Meyer 9f8f3e196b Allow positional-only params with defaults in method overrides (#23037)
## Summary

This change fixes assignability (and thus Liskov checking) to overloaded
methods that have positional-only parameters with defaults.

Previously, when a base class had an overloaded method where one
overload accepts only keyword arguments (`**kwargs`), and a subclass
tried to override it with a positional-only parameter, the override was
always rejected as invalid. However, if that positional-only parameter
has a default value, the override is actually valid because callers can
still invoke the method using keyword arguments without providing the
positional argument.

The fix updates the signature compatibility check in `signatures.rs` to
allow positional-only parameters in the override if they have defaults,
since they don't require callers to provide positional arguments.

This partially addresses https://github.com/astral-sh/ty/issues/2693 --
it fixes one issue in that example, but there's a remaining problem
involving annotated generic self types.

## Test Plan

Added an mdtest. Although the fix is to the general signature
type-relation code, a Liskov test is the most intuitive way to
demonstrate it, since otherwise it's finicky to construct assignability
checks between more complex callable types. (A protocol could be another
way to test it, but the original bug report here was a Liskov violation,
so I just went with that.)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-03 15:58:48 +00:00
Douglas Creager ef83810e11 [ty] ecosystem-analyzer: Support bare git repositories (#23054)
This pulls in
https://github.com/astral-sh/ecosystem-analyzer/commit/c6ccb9fc56755ccd826721a24f53fc871a603474,
which updates the ecosystem-analyzer to work with bare `ty` repos. This
should have no affect on our CI job, since we don't use bare repos
there, but I want to pull in the update anyway to (a) make sure it
didn't break anything and (b) make sure we're not using a stale
dependency.
2026-02-03 10:49:11 -05:00
Brent Westbrook 54dfee4cb8 Customize where the fix_title sub-diagnostic appears (#23044)
Summary
--

This is a more general alternative to #23043 that more closely follows
Micha's
[suggestion]. I sort of prefer this approach because it gives the
diagnostic
author full control of the order of sub-diagnostics. On the other hand,
it feels
a bit too "clever" for the current usage, which achieves the same effect
as the
simpler #23043. So I'm curious to get others' thoughts.

I still think the ideal solution long-term would be to combine the diff
rendering with the sub-diagnostic holding the fix title, but that would
be much
more involved than either of these PRs.

As I noted in the summary for #23043, the main motivation for the defer
machinery is that [RUF064] has a bunch of early returns mixed in with
its `info`
additions, so it was a big pain to add a `help` diagnostic before each
return.

We may at least want a `deferred_help` helper instead of the closure
used
here, if we do take this approach.

[suggestion]:
https://github.com/astral-sh/ruff/pull/19900/changes/BASE..ab685c16a8c01bb33f054698d2f32bb023d07429#r2276500131
[RUF064]:
https://github.com/astral-sh/ruff/blob/4a32a96740bb7327a3f554b7f6d6675cb2ea797e/crates/ruff_linter/src/rules/ruff/rules/non_octal_permissions.rs#L120-L145

Test Plan
--

Updated snapshots for `RUF064` and `ISC004`.
2026-02-03 10:24:23 -05:00
Dylan b53460799b 2026 Ruff Formatter Style (#22735)
Styles stabilized:

-
[`avoid_parens_for_long_as_captures`](https://github.com/astral-sh/ruff/pull/22743)
-
[`remove_parens_around_except_types`](https://github.com/astral-sh/ruff/pull/22741)
-
[`allow_newline_after_block_open`](https://github.com/astral-sh/ruff/pull/22742)
- [`no_chaperone_for_escaped_quote_in_triple_quoted_docstring
`](https://github.com/astral-sh/ruff/pull/22739)
- [`blank_line_before_decorated_class_in_stub
`](https://github.com/astral-sh/ruff/pull/22740)
-
[`parenthesize_lambda_bodies`](https://github.com/astral-sh/ruff/pull/22744)

To-do:

- [x] Change target branch to 0.15 release branch
- [x] Update documentation
- [x] Remove empty commit

---------

Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
2026-02-03 10:01:37 -05:00
Denys Zhak b5bcbf7774 fix: target-version fallback with extend (#21980)
## Summary

Closes #21956 

**Root cause:** When a .ruff.toml, ruff.toml config was discovered via
ancestor search, Ruff eagerly derived target-version from
requires-python in pyproject.toml during config loading. That fallback
value then participated in config merging and incorrectly overrode an
explicit target-version defined in an extended config.

**Fix:** Defer the requires-python fallback until after the full extend
chain across .ruff.toml / ruff.toml is merged, and apply it only if
target-version is still unset.

**Impact:** Explicit target-version settings in extended configs are now
respected, requires-python is only used as a fallback.

## Test Plan

Added a new test. I was useful to validate the fix but may be redundant
to keep, lmk if you would love me to remove it

---------

Co-authored-by: dylwil3 <dylwil3@gmail.com>
2026-02-03 10:01:37 -05:00
Brent Westbrook 51f179e582 Stabilize checking additional key expression types in SIM910 (#22976)
Added in https://github.com/astral-sh/ruff/pull/20343
2026-02-03 10:01:37 -05:00
Brent Westbrook 67ec234d04 Stabilize range suppressions (#22983)
Added in https://github.com/astral-sh/ruff/pull/21623. 

I think I caught everything, including the preview reference in the
linter docs, but hopefully @amyreese will remember anything else I
missed.
2026-02-03 10:01:37 -05:00
Brent Westbrook 6abf82c48f Stabilize UP043 for stub files on any Python version (#22978)
Added in https://github.com/astral-sh/ruff/pull/20027
2026-02-03 10:01:37 -05:00
Brent Westbrook 25aae6d8b8 Stabilize expanded A003 detection (#22973)
Added in #20178
2026-02-03 10:01:37 -05:00
Brent Westbrook c780e7b7d9 Stabilize the fix for SIM905 when maxsplit is provided (#22975)
Added in #19851
2026-02-03 10:01:37 -05:00
Amethyst Reese b679ac5311 Stabilize RUF104 (#22980) 2026-02-03 10:01:37 -05:00
Amethyst Reese 81d71d3056 Stabilize RUF103 (#22979) 2026-02-03 10:01:37 -05:00
Brent Westbrook 18761a5807 Stabilize considering Optional as a union in PYI016 (#22974)
Added in #18572
2026-02-03 10:01:37 -05:00
Brent Westbrook e96898c232 Stabilize safe fix for UP008 (#22977)
Added in https://github.com/astral-sh/ruff/pull/18683
2026-02-03 10:01:37 -05:00
Brent Westbrook 8b9ee9f45e Stabilize PLC0207 (#22918)
I made a couple small tweaks to the docs, but this otherwise looked good
to me.

https://docs.astral.sh/ruff/rules/missing-maxsplit-arg/
2026-02-03 10:01:37 -05:00
Brent Westbrook 85ea223f47 Stabilize FURB171 (#22928)
https://docs.astral.sh/ruff/rules/single-item-membership-test/
2026-02-03 10:01:37 -05:00
Brent Westbrook b53ca9e244 Stabilize PLW0108 (#22927)
I tried to simplify the docs slightly by using a code block instead of a
fairly
long inline function definition, but the docs and tests otherwise looked
good to
me.

https://docs.astral.sh/ruff/rules/unnecessary-lambda/
2026-02-03 10:01:37 -05:00
Brent Westbrook 0184408d64 Stabilize FURB110 (#22926)
Docs and tests looked good
2026-02-03 10:01:37 -05:00
Brent Westbrook 159e4e19d9 Stabilize B912 (#22910)
I re-wrapped one line in the docs here and also factored out a reference
link
since it was used twice. I also moved the test from the `preview_rules`
function
to `rules`.
2026-02-03 10:01:37 -05:00
Brent Westbrook 5ee14efae0 Stabilize ASYNC212 (#22914) 2026-02-03 10:01:37 -05:00
Brent Westbrook 1b82e73bea Stabilize ASYNC240 (#22909) 2026-02-03 10:01:37 -05:00
Brent Westbrook 2094bf1a8b Stabilize --output-format in --watch mode (#22908)
Summary
--

This PR stabilizes the changes from #21097 and closes #19552. Note that
this has
two effects:

- the default output format in `--watch` mode becomes `full` instead of
`concise`
- the `--output-format` flag will now be respected

So the default output is now more verbose, but the old stable behavior
can be
retained by passing `--output-format=concise` (or any other supported
format)
instead.

Test Plan
--

Manual testing. I think we tried to set up automated tests in an earlier
PR but
decided they were too complex.

I really should have cropped these, but I'll just collapse them instead:

<details><summary>Screenshots</summary>
<p>

### Current output, no `--output-format`

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/a758daa8-534e-4dab-9cff-858321cede61"
/>

### Current output, `--output-format=json`

The same as above, the flag has no effect

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/e5b0743a-6bd5-4dec-83e0-de24e44567ca"
/>

### PR branch output, no `--output-format`

Default format is now `full` rather than `concise`

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/cf51947d-52e3-4420-83e7-73530557c324"
/>

### PR branch output, `--output-format=json`

JSON output, the flag works

<img width="783" height="514" alt="image"
src="https://github.com/user-attachments/assets/e7127c5a-88ad-4b2a-80b4-193b63b631ee"
/>

</p>
</details>
2026-02-03 10:01:37 -05:00
Brent Westbrook a4274c7032 Stabilize RUF061 (#22917)
I made two small tweaks to the docs, but this otherwise looked good to
me.

https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises/
2026-02-03 10:01:37 -05:00
Brent Westbrook 61e5e84296 Stabilize RUF064 (#22915)
I made one small tweak to the fix safety docs, but this otherwise looked
good to
me.
2026-02-03 10:01:37 -05:00
Brent Westbrook bef0d8341d Stabilize RUF060 (#22919)
Tests look good, just two very small comma changes to the docs

I cherry-picked the docs changes from last time (#20231)

https://docs.astral.sh/ruff/rules/in-empty-collection/
2026-02-03 10:01:37 -05:00
Brent Westbrook 0437dda863 Stabilize ASYNC250 (#22911)
I made one tweak to the diagnostic message to include backticks, but the
docs
and tests otherwise looked good.
2026-02-03 10:01:37 -05:00
Brent Westbrook 8fd77e9177 Stabilize UP042 (#22924)
Closes #22816. As I note on the issue, I was previously hesitant to
stabilize
this rule because of its long `## Fix safety` docs and the TODO comment
in the
source code. However, the behavior change in the docs is simply handled
by
making the fix unsafe, and resolving the TODO shouldn't require a
breaking
change. It will only allow the fix to be offered in more cases.

The docs and tests looked good.
2026-02-03 10:01:37 -05:00
Brent Westbrook 80952a6171 Stabilize RUF102 (#22922)
Docs and tests looked good
2026-02-03 10:01:37 -05:00
Brent Westbrook 87045cbcc8 Stabilize RUF037 (#22923)
https://docs.astral.sh/ruff/rules/unnecessary-empty-iterable-within-deque-call/

---------

Co-authored-by: Amethyst Reese <amethyst@n7.gg>
2026-02-03 10:01:37 -05:00
konsti 368a6b874e Drop PPC64 (big endian) builds (#22766)
PPC64 seems dead, and it's only supported on one exact manylinux version
(https://github.com/pypa/auditwheel/issues/669), so we should drop it.

It's arguable whether this is a breaking change, since it doesn't remove
support for the platform (which is already barely support by manylinux),
but it does make installation more complex on PPC64.
2026-02-03 10:01:37 -05:00
samypr100 2bd392fcfe Bump docker published images to alpine 3.23 and debian trixie (#21149)
## Summary

Similar to https://github.com/astral-sh/uv/pull/15352, change default
debian distro for docker images to trixie, and bump alpine to 3.23.

Note, this should likely have the breaking change label.

Fixes https://github.com/astral-sh/ruff/issues/21664
2026-02-03 10:01:37 -05:00
Charlie Marsh a57cf57d02 [ty] Fix hover showing Unknown for bare Final instance attributes (#23003)
## Summary

For non-name annotated assignment targets like `self.x: Final = value`,
the expression type stored for `self.x` was the annotation's inner type
(`Unknown`, for `Final`).

The name-target path (`x: Final = value`) already stores the inferred
RHS type instead, so we now do the same for attributes.

Closes https://github.com/astral-sh/ty/issues/2509.
2026-02-03 15:19:00 +01:00
github-actions[bot] cb58704e08 [ty] Sync vendored typeshed stubs (#23006)
Close and reopen this PR to trigger CI

---------

Co-authored-by: typeshedbot <>
Co-authored-by: David Peter <mail@david-peter.de>
2026-02-03 13:20:44 +01:00
David Peter 6aa9089242 [ty] Update docs to use RuleName | "all" (#23049)
See https://github.com/astral-sh/ty/issues/2670#issuecomment-3838864593
2026-02-03 12:39:42 +01:00
renovate[bot] 344220654a Update salsa digest to e9b9ddd (#23016)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| salsa | dependencies | digest | `0946cbd` → `e9b9ddd` |
| salsa | workspace.dependencies | digest | `0946cbd` → `e9b9ddd` |

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 11:01:49 +01:00
Will Duke 0d1322d0b1 [ty] fix(conformance): Add tests directory as extra search path (#23048)
## Summary

The conformance test suite has some underscore-prefixed helper files
from which some of the test files import items. This change adds the
tests/ directory as a search path so that these imports no longer raise
spurious unresolved-import diagnostics.

## Test Plan

Running `scripts/conformance.py` after this change removes any
unresolved-import diagnostics and improves the number of true positives.


# Command

```
uv run --no-project --python 3.12 scripts/conformance.py --tests-path ../typing/conformance/ --old-ty uvx ty@0.0.6 --output scripts/test.md
```

## Before

### Summary

| Metric | Old | New | Diff | Outcome |
|--------|-----|-----|------|---------|
| True Positives  | 686 | 747 | +61 |  () |
| False Positives | 244 | 201 | -43 |  () |
| False Negatives | 387 | 332 | -55 |  () |
| Total Diagnostics | 930 | 948 | +18 |  |
| Precision | 73.76% | 78.80% | +5.03% |  () |
| Recall | 63.93% | 69.23% | +5.30% |  () |

## After

### Summary

| Metric | Old | New | Diff | Outcome |
|--------|-----|-----|------|---------|
| True Positives  | 691 | 752 | +61 |  () |
| False Positives | 234 | 191 | -43 |  () |
| False Negatives | 383 | 328 | -55 |  () |
| Total Diagnostics | 925 | 943 | +18 |  |
| Precision | 74.70% | 79.75% | +5.04% |  () |
| Recall | 64.34% | 69.63% | +5.29% |  () |
2026-02-03 09:20:37 +01:00
Brent Westbrook c062abae5e Fix link to Sphinx code block directives (#23041)
Summary
--

I noticed this while reviewing #22990. I'm not really sure why the
current version doesn't work, but the new one definitely does.

Test Plan
--

[Before](https://docs.astral.sh/ruff/formatter/#docstring-formatting):

<img width="457" height="77" alt="image"
src="https://github.com/user-attachments/assets/3d4394b7-eadf-41ec-81c9-cea6190fa0bb"
/>


After:

<img width="493" height="84" alt="image"
src="https://github.com/user-attachments/assets/66f0700c-9312-40b9-b3ae-11edcaec7562"
/>
2026-02-02 16:14:58 -05:00
Jack O'Connor 4a32a96740 [ty] fix nested NewTypes with add Type::as_union_like (#22997)
This method was part of my implementation of
https://github.com/astral-sh/ty/issues/1656, but I found a bug in nested
`NewType`s of (surprise) `float` and `complex` that could be fixed by
landing it separately, so I want to factor it out into its own PR.
2026-02-02 12:16:51 -08:00
Bhuminjay Soni f1f21f756c add info for non_octal permissions (#22972)
## Summary

<!-- What's the purpose of the change? What does it do, and why? -->
Part of #17203, comment:
https://github.com/astral-sh/ruff/pull/18541#discussion_r2139246087

## Test Plan

<!-- How was it tested? -->
updated snapshot

---------

Signed-off-by: Bhuminjay <bhuminjaysoni@gmail.com>
Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
2026-02-02 13:39:40 -05:00
Stefan VanBuren a666f3f6db Fix empty body rule rendering (#23039)
Without the extra newline here, the bullets don't become a list and
instead are mashed into the previous paragraph.

Ref: https://docs.astral.sh/ty/reference/rules/#empty-body
2026-02-02 17:41:38 +00:00
Charlie Marsh 8d78aa6417 [ty] Infer ParamSpec from class constructors for callable protocols (#22853)
## Summary

Closes https://github.com/astral-sh/ty/issues/2587.
2026-02-02 07:55:08 -08:00
renovate[bot] dd2115434f Update NPM Development dependencies (#23030)
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[@cloudflare/workers-types](https://redirect.github.com/cloudflare/workerd)
| [`4.20260118.0` →
`4.20260124.0`](https://renovatebot.com/diffs/npm/@cloudflare%2fworkers-types/4.20260118.0/4.20260124.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@cloudflare%2fworkers-types/4.20260124.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@cloudflare%2fworkers-types/4.20260118.0/4.20260124.0?slim=true)
|
|
[@types/react](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react))
| [`19.2.8` →
`19.2.9`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.8/19.2.9)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/19.2.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/19.2.8/19.2.9?slim=true)
|
|
[miniflare](https://redirect.github.com/cloudflare/workers-sdk/tree/main/packages/miniflare#readme)
([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/miniflare))
| [`4.20260114.0` →
`4.20260120.0`](https://renovatebot.com/diffs/npm/miniflare/4.20260114.0/4.20260120.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/miniflare/4.20260120.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/miniflare/4.20260114.0/4.20260120.0?slim=true)
|
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.8.0` →
`3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) |
![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.8.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.0/3.8.1?slim=true)
|
|
[typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint))
| [`8.53.0` →
`8.53.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.53.0/8.53.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/typescript-eslint/8.53.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript-eslint/8.53.0/8.53.1?slim=true)
|
| [wasm-pack](https://redirect.github.com/drager/wasm-pack) | [`^0.13.1`
→ `^0.14.0`](https://renovatebot.com/diffs/npm/wasm-pack/0.13.1/0.14.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/wasm-pack/0.14.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wasm-pack/0.13.1/0.14.0?slim=true)
|
| [wrangler](https://redirect.github.com/cloudflare/workers-sdk)
([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler))
| [`4.59.2` →
`4.60.0`](https://renovatebot.com/diffs/npm/wrangler/4.59.2/4.60.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/wrangler/4.60.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wrangler/4.59.2/4.60.0?slim=true)
|

---

### Release Notes

<details>
<summary>cloudflare/workerd (@&#8203;cloudflare/workers-types)</summary>

###
[`v4.20260124.0`](https://redirect.github.com/cloudflare/workerd/compare/752ea9176292377969aaf72cdb4bcc628f8b6446...a656230a7281ec432553f53a0d650093bf3d25e8)

[Compare
Source](https://redirect.github.com/cloudflare/workerd/compare/752ea9176292377969aaf72cdb4bcc628f8b6446...a656230a7281ec432553f53a0d650093bf3d25e8)

###
[`v4.20260123.0`](https://redirect.github.com/cloudflare/workerd/compare/6b311a846db729e5becbb97273e5788a588fc554...752ea9176292377969aaf72cdb4bcc628f8b6446)

[Compare
Source](https://redirect.github.com/cloudflare/workerd/compare/6b311a846db729e5becbb97273e5788a588fc554...752ea9176292377969aaf72cdb4bcc628f8b6446)

###
[`v4.20260122.0`](https://redirect.github.com/cloudflare/workerd/compare/129a2523b40d1aeb1046ae2d446fcea5ee8dd361...6b311a846db729e5becbb97273e5788a588fc554)

[Compare
Source](https://redirect.github.com/cloudflare/workerd/compare/129a2523b40d1aeb1046ae2d446fcea5ee8dd361...6b311a846db729e5becbb97273e5788a588fc554)

###
[`v4.20260120.0`](https://redirect.github.com/cloudflare/workerd/compare/b1d9031361196d0f0b5b5fb230949b1d3604de4e...129a2523b40d1aeb1046ae2d446fcea5ee8dd361)

[Compare
Source](https://redirect.github.com/cloudflare/workerd/compare/b1d9031361196d0f0b5b5fb230949b1d3604de4e...129a2523b40d1aeb1046ae2d446fcea5ee8dd361)

</details>

<details>
<summary>cloudflare/workers-sdk (miniflare)</summary>

###
[`v4.20260120.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/miniflare/CHANGELOG.md#4202601200)

[Compare
Source](https://redirect.github.com/cloudflare/workers-sdk/compare/miniflare@4.20260116.0...miniflare@4.20260120.0)

##### Patch Changes

-
[#&#8203;11993](https://redirect.github.com/cloudflare/workers-sdk/pull/11993)
[`788bf78`](https://redirect.github.com/cloudflare/workers-sdk/commit/788bf786b4c5cb8e1bdd6464d3f88b4125cebc75)
Thanks
[@&#8203;dependabot](https://redirect.github.com/apps/dependabot)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260116.0 | 1.20260120.0 |

###
[`v4.20260116.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/miniflare/CHANGELOG.md#4202601160)

[Compare
Source](https://redirect.github.com/cloudflare/workers-sdk/compare/miniflare@4.20260114.0...miniflare@4.20260116.0)

##### Minor Changes

-
[#&#8203;11942](https://redirect.github.com/cloudflare/workers-sdk/pull/11942)
[`133bf95`](https://redirect.github.com/cloudflare/workers-sdk/commit/133bf95783c8b63ecc2b572a4400c7aa4bd4f8c4)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! - Add
support for Email Sending API's MessageBuilder interface in local mode

Miniflare now supports the simplified MessageBuilder interface for
sending emails, alongside the existing `EmailMessage` support.

  Example usage:

  ```javascript
  await env.EMAIL.send({
  	from: { name: "Alice", email: "alice@example.com" },
  	to: ["bob@example.com"],
  	subject: "Hello",
  	text: "Plain text version",
  	html: "<h1>HTML version</h1>",
  	attachments: [
  		{
  			disposition: "attachment",
  			filename: "report.pdf",
  			type: "application/pdf",
  			content: pdfData,
  		},
  	],
  });
  ```

In local mode, email content (text, HTML, attachments) is stored to
temporary files that you can open in your editor or browser for
inspection. File paths are logged to the console when emails are sent.

##### Patch Changes

-
[#&#8203;11925](https://redirect.github.com/cloudflare/workers-sdk/pull/11925)
[`8e4a0e5`](https://redirect.github.com/cloudflare/workers-sdk/commit/8e4a0e5e8d1e0bf75b6f11000f89f7eabafa392a)
Thanks
[@&#8203;dependabot](https://redirect.github.com/apps/dependabot)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260114.0 | 1.20260115.0 |

-
[#&#8203;11942](https://redirect.github.com/cloudflare/workers-sdk/pull/11942)
[`133bf95`](https://redirect.github.com/cloudflare/workers-sdk/commit/133bf95783c8b63ecc2b572a4400c7aa4bd4f8c4)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260115.0 | 1.20260116.0 |

-
[#&#8203;11967](https://redirect.github.com/cloudflare/workers-sdk/pull/11967)
[`202c59e`](https://redirect.github.com/cloudflare/workers-sdk/commit/202c59e4f4f28419fb6ac0aa8c7dc3960a0c8d3e)
Thanks [@&#8203;emily-shen](https://redirect.github.com/emily-shen)! -
chore: update undici

  The following dependency versions have been updated:

  | Dependency | From   | To     |
  | ---------- | ------ | ------ |
  | undici     | 7.14.0 | 7.18.2 |

-
[#&#8203;11943](https://redirect.github.com/cloudflare/workers-sdk/pull/11943)
[`25e2c60`](https://redirect.github.com/cloudflare/workers-sdk/commit/25e2c608d529664ede251abe45fdb13ea9e56a9d)
Thanks [@&#8203;vicb](https://redirect.github.com/vicb)! - Bump capnp-es
to ^0.0.14

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

###
[`v3.8.1`](https://redirect.github.com/prettier/prettier/compare/3.8.0...fbf300f9d89820364ddc9b2efa05b92b8c01b692)

[Compare
Source](https://redirect.github.com/prettier/prettier/compare/3.8.0...3.8.1)

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(typescript-eslint)</summary>

###
[`v8.53.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19)

[Compare
Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.53.0...v8.53.1)

This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.

You can read about our [versioning
strategy](https://typescript-eslint.io/users/versioning) and
[releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>drager/wasm-pack (wasm-pack)</summary>

###
[`v0.14.0`](https://redirect.github.com/drager/wasm-pack/blob/HEAD/CHANGELOG.md#-0140)

[Compare
Source](https://redirect.github.com/drager/wasm-pack/compare/v0.13.1...v0.14.0)

- ###  Features

- **Support arbitrary wasm targets (WASI support) - [RReverser],
[pull/1524]**

Allows building for targets other than wasm32-unknown-unknown, enabling
WASI and other custom wasm targets.

    [pull/1524]: https://redirect.github.com/drager/wasm-pack/pull/1524

    [RReverser]: https://redirect.github.com/RReverser

- **macOS ARM (aarch64-apple-darwin) build support - [kaleidawave],
[pull/1529]**

    Adds native Apple Silicon support in release builds and NPM package.

    [pull/1529]: https://redirect.github.com/drager/wasm-pack/pull/1529

    [kaleidawave]: https://redirect.github.com/kaleidawave

- **Allow `--split-linked-modules` flag for wasm-bindgen - [codeart1st],
[pull/1443]**

    [pull/1443]: https://redirect.github.com/drager/wasm-pack/pull/1443

    [codeart1st]: https://redirect.github.com/codeart1st

  - **Custom build profile support - [rafaelbeckel], [pull/1428]**

    Allows using custom cargo profiles via `--profile`.

    [pull/1428]: https://redirect.github.com/drager/wasm-pack/pull/1428

    [rafaelbeckel]: https://redirect.github.com/rafaelbeckel

- ### 🤕 Fixes

  - **Fix NPM package download URL - [qinyuhang], [pull/1543]**

    [pull/1543]: https://redirect.github.com/drager/wasm-pack/pull/1543

    [qinyuhang]: https://redirect.github.com/qinyuhang

- **Filter build artifacts to only .wasm files - \[drager],
[pull/1535]**

    [pull/1535]: https://redirect.github.com/drager/wasm-pack/pull/1535

- **Handle undefined VERSION in installer script - [BrianHung],
[pull/1512]**

    [pull/1512]: https://redirect.github.com/drager/wasm-pack/pull/1512

    [BrianHung]: https://redirect.github.com/BrianHung

- **Fix it\_gets\_wasm\_bindgen\_version test - [mshroyer],
[pull/1509]**

    [pull/1509]: https://redirect.github.com/drager/wasm-pack/pull/1509

    [mshroyer]: https://redirect.github.com/mshroyer

- ### 🛠️ Maintenance

  - **Update dependencies to latest versions - \[drager], [pull/1536]**

    [pull/1536]: https://redirect.github.com/drager/wasm-pack/pull/1536

  - **Security workflow permissions fixes - \[drager]**

  - **Bump ring from 0.17.8 to 0.17.14 - [dependabot], [pull/1516]**

    [pull/1516]: https://redirect.github.com/drager/wasm-pack/pull/1516

- **Bump brace-expansion from 1.1.11 to 1.1.12 in /npm - [dependabot],
[pull/1515]**

    [pull/1515]: https://redirect.github.com/drager/wasm-pack/pull/1515

  - **Bump rustls from 0.23.16 to 0.23.18 - [dependabot], [pull/1451]**

    [pull/1451]: https://redirect.github.com/drager/wasm-pack/pull/1451

    [dependabot]: https://redirect.github.com/apps/dependabot

  - **Fix tar vulnerability (CVE-2026-23745) in npm package**

Override tar dependency to ^7.5.3 to fix arbitrary file overwrite and
symlink poisoning vulnerability ([GHSA-8qq5-rm4j-mr97]).

[GHSA-8qq5-rm4j-mr97]:
https://redirect.github.com/advisories/GHSA-8qq5-rm4j-mr97

  - **Fix axios vulnerabilities in npm package**

Override axios dependency to ^0.30.0 to fix SSRF/credential leakage via
absolute URL and XSRF-TOKEN leakage (CSRF) vulnerabilities.

- ### 📖 Documentation

- **Update documentation links to drager's repo - [yutannihilation],
[pull/1513]**

    [pull/1513]: https://redirect.github.com/drager/wasm-pack/pull/1513

    [yutannihilation]: https://redirect.github.com/yutannihilation

- **Document prerequisites for webdriver tests - [mshroyer],
[pull/1509]**

</details>

<details>
<summary>cloudflare/workers-sdk (wrangler)</summary>

###
[`v4.60.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#4600)

[Compare
Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@4.59.3...wrangler@4.60.0)

##### Minor Changes

-
[#&#8203;11113](https://redirect.github.com/cloudflare/workers-sdk/pull/11113)
[`bba0968`](https://redirect.github.com/cloudflare/workers-sdk/commit/bba09689ca258b6da36b21b7300845ce031eaca6)
Thanks [@&#8203;AmirSa12](https://redirect.github.com/AmirSa12)! - Add
`wrangler complete` command for shell completion scripts (bash, zsh,
powershell)

  Usage:

  ```bash
  # Bash
  wrangler complete bash >> ~/.bashrc

  # Zsh
  wrangler complete zsh >> ~/.zshrc

  # Fish
  wrangler complete fish >> ~/.config/fish/completions/wrangler.fish

  # PowerShell
  wrangler complete powershell > $PROFILE
  ```

  - Uses `@bomb.sh/tab` library for cross-shell compatibility
- Completions are dynamically generated from
`experimental_getWranglerCommands()` API

-
[#&#8203;11893](https://redirect.github.com/cloudflare/workers-sdk/pull/11893)
[`f9e8a45`](https://redirect.github.com/cloudflare/workers-sdk/commit/f9e8a452fb299e6cb1a0ff2985347bfc277deac8)
Thanks [@&#8203;NuroDev](https://redirect.github.com/NuroDev)! -
`wrangler types` now generates per-environment TypeScript interfaces
when named environments exist in your configuration.

When your configuration has named environments (an `env` object),
`wrangler types` now generates both:

- **Per-environment interfaces** (e.g., `StagingEnv`, `ProductionEnv`)
containing only the bindings explicitly declared in each environment,
plus inherited secrets
- **An aggregated `Env` interface** with all bindings from all
environments (top-level + named environments), where:
    - Bindings present in **all** environments are required
    - Bindings not present in all environments are optional
    - Secrets are always required (since they're inherited everywhere)
- Conflicting binding types across environments produce union types
(e.g., `KVNamespace | R2Bucket`)

However, if your config does not contain any environments, or you
manually specify an environment via `--env`, `wrangler types` will
continue to generate a single interface as before.

  **Example:**

  Given the following `wrangler.jsonc`:

  ```jsonc
  {
  	"name": "my-worker",
  	"kv_namespaces": [
  		{
  			"binding": "SHARED_KV",
  			"id": "abc123",
  		},
  	],
  	"env": {
  		"staging": {
  			"kv_namespaces": [
  				{ "binding": "SHARED_KV", "id": "staging-kv" },
  				{ "binding": "STAGING_CACHE", "id": "staging-cache" },
  			],
  		},
  	},
  }
  ```

  Running `wrangler types` will generate:

  ```ts
  declare namespace Cloudflare {
  	interface StagingEnv {
  		SHARED_KV: KVNamespace;
  		STAGING_CACHE: KVNamespace;
  	}
  	interface Env {
  		SHARED_KV: KVNamespace; // Required: in all environments
  		STAGING_CACHE?: KVNamespace; // Optional: only in staging
  	}
  }
  interface Env extends Cloudflare.Env {}
  ```

##### Patch Changes

-
[#&#8203;12030](https://redirect.github.com/cloudflare/workers-sdk/pull/12030)
[`614bbd7`](https://redirect.github.com/cloudflare/workers-sdk/commit/614bbd709529191bbae6aa92790bbfe00a37e3d9)
Thanks
[@&#8203;jbwcloudflare](https://redirect.github.com/jbwcloudflare)! -
Fix `wrangler pages project validate` to respect file count limits from
`CF_PAGES_UPLOAD_JWT`

-
[#&#8203;11993](https://redirect.github.com/cloudflare/workers-sdk/pull/11993)
[`788bf78`](https://redirect.github.com/cloudflare/workers-sdk/commit/788bf786b4c5cb8e1bdd6464d3f88b4125cebc75)
Thanks
[@&#8203;dependabot](https://redirect.github.com/apps/dependabot)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260116.0 | 1.20260120.0 |

-
[#&#8203;12039](https://redirect.github.com/cloudflare/workers-sdk/pull/12039)
[`1375577`](https://redirect.github.com/cloudflare/workers-sdk/commit/1375577c860f1ae9af5caf1c488d47ec1cf52b6f)
Thanks
[@&#8203;dimitropoulos](https://redirect.github.com/dimitropoulos)! -
Fixed the flag casing for the time period flag for the `d1 insights`
command.

-
[#&#8203;12026](https://redirect.github.com/cloudflare/workers-sdk/pull/12026)
[`c3407ad`](https://redirect.github.com/cloudflare/workers-sdk/commit/c3407ada8cff1170ef2a3bbc4d3137dcf3998461)
Thanks
[@&#8203;dario-piotrowicz](https://redirect.github.com/dario-piotrowicz)!
- Fix `wrangler setup` not automatically selecting `workers` as the
target for new SvelteKit apps

The Sveltekit `adapter:cloudflare` adapter now accepts two different
targets `workers` or `pages`. Since the wrangler auto configuration only
targets workers, wrangler should instruct the adapter to use the
`workers` variant. (The auto configuration process would in any case not
work if the user were to target `pages`.)

- Updated dependencies
\[[`788bf78`](https://redirect.github.com/cloudflare/workers-sdk/commit/788bf786b4c5cb8e1bdd6464d3f88b4125cebc75),
[`ae108f0`](https://redirect.github.com/cloudflare/workers-sdk/commit/ae108f090532765751c3996ba4c863a9fe858ddf)]:
  - miniflare\@&#8203;4.20260120.0
-
[@&#8203;cloudflare/unenv-preset](https://redirect.github.com/cloudflare/unenv-preset)@&#8203;2.11.0
-
[@&#8203;cloudflare/kv-asset-handler](https://redirect.github.com/cloudflare/kv-asset-handler)@&#8203;0.4.2

###
[`v4.59.3`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#4593)

[Compare
Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@4.59.2...wrangler@4.59.3)

##### Patch Changes

-
[#&#8203;9396](https://redirect.github.com/cloudflare/workers-sdk/pull/9396)
[`75386b1`](https://redirect.github.com/cloudflare/workers-sdk/commit/75386b1f14d7d0606bece547399e33a9f5bbadb8)
Thanks [@&#8203;gnekich](https://redirect.github.com/gnekich)! - Fix
`wrangler login` with custom `callback-host`/`callback-port`

The Cloudflare OAuth API always requires the `redirect_uri` to be
`localhost:8976`. However, sometimes the Wrangler OAuth server needed to
listen on a different host/port, for example when running from inside a
container. We were previously incorrectly setting the `redirect_uri` to
the configured callback host/port, but it needs to be up to the user to
map `localhost:8976` to the Wrangler OAuth server in the container.

  **Example:**

You might run Wrangler inside a docker container like this: `docker run
-p 8989:8976 <image>`, which forwards port 8976 on your host to 8989
inside the container.

Then inside the container, run `wrangler login --callback-host=0.0.0.0
--callback-port=8989`

The OAuth link still has a `redirect_uri` set to`localhost:8976`. For
example
`https://dash.cloudflare.com/oauth2/auth?...&redirect_uri=http%3A%2F%2Flocalhost%3A8976%2Foauth%2Fcallback&...`

However the redirect to` localhost:8976` is then forwarded to the
Wrangler OAuth server inside your container, allowing the login to
complete.

-
[#&#8203;11925](https://redirect.github.com/cloudflare/workers-sdk/pull/11925)
[`8e4a0e5`](https://redirect.github.com/cloudflare/workers-sdk/commit/8e4a0e5e8d1e0bf75b6f11000f89f7eabafa392a)
Thanks
[@&#8203;dependabot](https://redirect.github.com/apps/dependabot)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260114.0 | 1.20260115.0 |

-
[#&#8203;11942](https://redirect.github.com/cloudflare/workers-sdk/pull/11942)
[`133bf95`](https://redirect.github.com/cloudflare/workers-sdk/commit/133bf95783c8b63ecc2b572a4400c7aa4bd4f8c4)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! -
chore: update dependencies of "miniflare", "wrangler"

  The following dependency versions have been updated:

  | Dependency | From         | To           |
  | ---------- | ------------ | ------------ |
  | workerd    | 1.20260115.0 | 1.20260116.0 |

-
[#&#8203;11922](https://redirect.github.com/cloudflare/workers-sdk/pull/11922)
[`93d8d78`](https://redirect.github.com/cloudflare/workers-sdk/commit/93d8d78ce081f821671b2c4a1ffcd7df733a0866)
Thanks
[@&#8203;dario-piotrowicz](https://redirect.github.com/dario-piotrowicz)!
- Improve telemetry errors being sent to Sentry by `wrangler init` when
it delegates to C3 by ensuring that they contain the output of the C3
execution.

-
[#&#8203;11940](https://redirect.github.com/cloudflare/workers-sdk/pull/11940)
[`69ff962`](https://redirect.github.com/cloudflare/workers-sdk/commit/69ff9620487a6ae979f369eb1dbac887ce46e246)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! - Show
helpful messages for file not found errors (`ENOENT`)

When users encounter file not found errors, Wrangler now displays a
helpful message with the missing file path and common causes, instead of
reporting to Sentry.

-
[#&#8203;11904](https://redirect.github.com/cloudflare/workers-sdk/pull/11904)
[`22727c2`](https://redirect.github.com/cloudflare/workers-sdk/commit/22727c29ee244cddebf93d855e4e052973479ad3)
Thanks [@&#8203;danielrs](https://redirect.github.com/danielrs)! - Fix
false positive infinite loop detection for exact path redirects

Fixed an issue where the redirect validation incorrectly flagged exact
path redirects like `/ /index.html 200` as infinite loops. This was
particularly problematic when `html_handling` is set to "none", where
such redirects are valid.

The fix makes the validation more specific to only block wildcard
patterns (like `/* /index.html`) that would actually cause infinite
loops, while allowing exact path matches that are valid in certain
configurations.

Fixes:
[#&#8203;11824](https://redirect.github.com/cloudflare/workers-sdk/issues/11824)

-
[#&#8203;11946](https://redirect.github.com/cloudflare/workers-sdk/pull/11946)
[`fa39a73`](https://redirect.github.com/cloudflare/workers-sdk/commit/fa39a73040dd27d35d429deda34fdc8e15b15fbe)
Thanks [@&#8203;MattieTK](https://redirect.github.com/MattieTK)! - Fix
`configFileName` returning wrong filename for `.jsonc` config files

Previously, users with a `wrangler.jsonc` config file would see error
messages and hints referring to `wrangler.json` instead of
`wrangler.jsonc`. This was because the `configFormat` function collapsed
both `.json` and `.jsonc` files into a single `"jsonc"` value, losing
the distinction between them.

Now `configFormat` returns `"json"` for `.json` files and `"jsonc"` for
`.jsonc` files, allowing `configFileName` to return the correct filename
for each format.

-
[#&#8203;11968](https://redirect.github.com/cloudflare/workers-sdk/pull/11968)
[`4ac7c82`](https://redirect.github.com/cloudflare/workers-sdk/commit/4ac7c82609354115d53cd17f4cf78eabf3d6c23a)
Thanks [@&#8203;MattieTK](https://redirect.github.com/MattieTK)! - fix:
include version components in command event metrics

Adds `wranglerMajorVersion`, `wranglerMinorVersion`, and
`wranglerPatchVersion` to command events (`wrangler command started`,
`wrangler command completed`, `wrangler command errored`). These
properties were previously only included in adhoc events.

-
[#&#8203;11940](https://redirect.github.com/cloudflare/workers-sdk/pull/11940)
[`69ff962`](https://redirect.github.com/cloudflare/workers-sdk/commit/69ff9620487a6ae979f369eb1dbac887ce46e246)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! -
Improve error message when creating duplicate KV namespace

When attempting to create a KV namespace with a title that already
exists, Wrangler now provides a clear, user-friendly error message
instead of the generic API error. The new message explains that the
namespace already exists and suggests running `wrangler kv namespace
list` to see existing namespaces with their IDs, or choosing a different
namespace name.

-
[#&#8203;11962](https://redirect.github.com/cloudflare/workers-sdk/pull/11962)
[`029531a`](https://redirect.github.com/cloudflare/workers-sdk/commit/029531acd2e6fac10f21c7b0cecb6b4830f77d02)
Thanks
[@&#8203;dario-piotrowicz](https://redirect.github.com/dario-piotrowicz)!
- Cache chosen account in memory to avoid repeated prompts

When users have multiple accounts and no `node_modules` directory exists
for file caching, Wrangler (run via `npx` and equivalent commands) would
prompt for account selection multiple times during a single command. Now
the selected account is also stored in process memory, preventing
duplicate prompts and potential issues from inconsistent account
choices.

-
[#&#8203;11964](https://redirect.github.com/cloudflare/workers-sdk/pull/11964)
[`d58fbd1`](https://redirect.github.com/cloudflare/workers-sdk/commit/d58fbd1189ec7417d8f2930eac3e71f7680bd679)
Thanks
[@&#8203;dario-piotrowicz](https://redirect.github.com/dario-piotrowicz)!
- Make `name` the positional argument for `wrangler delete` instead of
`script`

The `script` argument was meaningless for the delete command since it
deletes by worker name, not by entry point path. The `name` argument is
now accepted as a positional argument, allowing users to run `wrangler
delete my-worker` instead of `wrangler delete --name my-worker`. The
`script` argument is now hidden but still accepted for backwards
compatibility.

-
[#&#8203;11967](https://redirect.github.com/cloudflare/workers-sdk/pull/11967)
[`202c59e`](https://redirect.github.com/cloudflare/workers-sdk/commit/202c59e4f4f28419fb6ac0aa8c7dc3960a0c8d3e)
Thanks [@&#8203;emily-shen](https://redirect.github.com/emily-shen)! -
chore: update undici

  The following dependency versions have been updated:

  | Dependency | From   | To     |
  | ---------- | ------ | ------ |
  | undici     | 7.14.0 | 7.18.2 |

-
[#&#8203;11940](https://redirect.github.com/cloudflare/workers-sdk/pull/11940)
[`69ff962`](https://redirect.github.com/cloudflare/workers-sdk/commit/69ff9620487a6ae979f369eb1dbac887ce46e246)
Thanks [@&#8203;penalosa](https://redirect.github.com/penalosa)! -
Improve error handling for Vite config transformations

Replace assertions with proper error handling when transforming Vite
configs. When Wrangler encounters a Vite config that uses a function or
lacks a plugins array, it now provides clear, actionable error messages
instead of crashing with assertion failures. The check function
gracefully skips incompatible configs with debug logging.

- Updated dependencies
\[[`8e4a0e5`](https://redirect.github.com/cloudflare/workers-sdk/commit/8e4a0e5e8d1e0bf75b6f11000f89f7eabafa392a),
[`133bf95`](https://redirect.github.com/cloudflare/workers-sdk/commit/133bf95783c8b63ecc2b572a4400c7aa4bd4f8c4),
[`202c59e`](https://redirect.github.com/cloudflare/workers-sdk/commit/202c59e4f4f28419fb6ac0aa8c7dc3960a0c8d3e),
[`133bf95`](https://redirect.github.com/cloudflare/workers-sdk/commit/133bf95783c8b63ecc2b572a4400c7aa4bd4f8c4),
[`25e2c60`](https://redirect.github.com/cloudflare/workers-sdk/commit/25e2c608d529664ede251abe45fdb13ea9e56a9d)]:
  - miniflare\@&#8203;4.20260116.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 08:40:45 -05:00
renovate[bot] 664e5d9491 Update CodSpeedHQ/action action to v4.8.2 (#23029)
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) |
action | minor | `v4.7.0` → `v4.8.2` | `v4.10.2` (+2) |

---

### Release Notes

<details>
<summary>CodSpeedHQ/action (CodSpeedHQ/action)</summary>

###
[`v4.8.2`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v4.8.2)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/action/compare/v4.8.1...v4.8.2)

#### Release Notes

##### <!-- 1 -->🐛 Bug Fixes

- Check whether artifact contains any elements by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;204](https://redirect.github.com/CodSpeedHQ/runner/pull/204)

##### <!-- 7 -->⚙️ Internals

- chore: bump runner version to 4.8.2 by
[@&#8203;github-actions](https://redirect.github.com/github-actions)\[bot]
in [#&#8203;174](https://redirect.github.com/CodSpeedHQ/action/pull/174)

#### Install codspeed-runner 4.8.2

##### Install prebuilt binaries via shell script

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/runner/releases/download/v4.8.2/codspeed-runner-installer.sh | sh
```

#### Download codspeed-runner 4.8.2

| File | Platform | Checksum |
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ---------------- |
----------------------------------------------------------------------------------------------------------------------------------
|
|
[codspeed-runner-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.2/codspeed-runner-aarch64-unknown-linux-musl.tar.gz)
| ARM64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.2/codspeed-runner-aarch64-unknown-linux-musl.tar.gz.sha256)
|
|
[codspeed-runner-x86\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.2/codspeed-runner-x86_64-unknown-linux-musl.tar.gz)
| x64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.2/codspeed-runner-x86_64-unknown-linux-musl.tar.gz.sha256)
|

**Full Runner Changelog**:
<https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md>

**Full Changelog**:
<https://github.com/CodSpeedHQ/action/compare/v4.8.1...v4.8.2>

###
[`v4.8.1`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v4.8.1)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/action/compare/v4.8.0...v4.8.1)

#### Release Notes

##### <!-- 0 -->🚀 Features

- Check if memtrack produced artifacts by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;195](https://redirect.github.com/CodSpeedHQ/runner/pull/195)
- Require minimum protocol version for memtrack by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)

##### <!-- 1 -->🐛 Bug Fixes

- Add explicit min version check for memory executor by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;203](https://redirect.github.com/CodSpeedHQ/runner/pull/203)

##### <!-- 7 -->⚙️ Internals

- chore: bump runner version to 4.8.1 by
[@&#8203;github-actions](https://redirect.github.com/github-actions)\[bot]
in [#&#8203;173](https://redirect.github.com/CodSpeedHQ/action/pull/173)

#### Install codspeed-runner 4.8.1

##### Install prebuilt binaries via shell script

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/runner/releases/download/v4.8.1/codspeed-runner-installer.sh | sh
```

#### Download codspeed-runner 4.8.1

| File | Platform | Checksum |
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ---------------- |
----------------------------------------------------------------------------------------------------------------------------------
|
|
[codspeed-runner-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.1/codspeed-runner-aarch64-unknown-linux-musl.tar.gz)
| ARM64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.1/codspeed-runner-aarch64-unknown-linux-musl.tar.gz.sha256)
|
|
[codspeed-runner-x86\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.1/codspeed-runner-x86_64-unknown-linux-musl.tar.gz)
| x64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.1/codspeed-runner-x86_64-unknown-linux-musl.tar.gz.sha256)
|

**Full Runner Changelog**:
<https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md>

**Full Changelog**:
<https://github.com/CodSpeedHQ/action/compare/v4.8.0...v4.8.1>

###
[`v4.8.0`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v4.8.0)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/action/compare/v4.7.0...v4.8.0)

#### Release Notes

It is now possible to do consecutive CodSpeed run in the same GitHub
job. This will allow using multiple instruments without having to spawn
another job 🎉

```yaml
jobs:
  codspeed:
    ...
    steps:
      ...
      - name: Build benchmarks
        run: cargo codspeed build -m analysis

      - name: Run benchmarks
        uses: CodSpeedHQ/action@v4
        with:
          run: cargo codspeed run
          mode: "simulation"

      - name: Run memory benchmarks
        uses: CodSpeedHQ/action@v4
        with:
          run: cargo codspeed run
          mode: "memory"
```

##### <!-- 0 -->🚀 Features

- Allow defining targets in codspeed yaml by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;197](https://redirect.github.com/CodSpeedHQ/runner/pull/197)
- Add an stdin mode to provide multiple commands by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Add a run index suffix by
[@&#8203;fargito](https://redirect.github.com/fargito) in
[#&#8203;199](https://redirect.github.com/CodSpeedHQ/runner/pull/199)
- Make the config less strict about its config by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;198](https://redirect.github.com/CodSpeedHQ/runner/pull/198)
- Add support for analysis mode with memory instrument by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Reduce shared fifo timeout to end executor runs faster after the
program has ended by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;193](https://redirect.github.com/CodSpeedHQ/runner/pull/193)
- Use a bufwriter to save unwind data by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Support dynamically and statically linked allocators by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Track `memalign` calls by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Accept IPC before creating tracker to avoid timeouts by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add integration tests for complex cli commands by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Add the full command to the uri and handle hyphens better by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Add yaml project config discovery and loading by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;189](https://redirect.github.com/CodSpeedHQ/runner/pull/189)
- Implement the walltime benchmarking algorithm by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Use rayon to collect perf walltime data by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Handle memory executor when displaying results by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;190](https://redirect.github.com/CodSpeedHQ/runner/pull/190)
- Do not draw a table if there is only one benchmark by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Stop using the deprecated `time` field and use `value` instead by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)

##### <!-- 1 -->🐛 Bug Fixes

- Fix behavior when multiple benchmarks are ran by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Simplify `run_part_id` computation by
[@&#8203;fargito](https://redirect.github.com/fargito) in
[#&#8203;200](https://redirect.github.com/CodSpeedHQ/runner/pull/200)
- Write perf map all at once instead of line by line by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Drop privileges when running commands under sudo by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Make walltime results stat computation the same as pytest-codspeed by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;185](https://redirect.github.com/CodSpeedHQ/runner/pull/185)

##### <!-- 2 -->🏗️ Refactor

- Move project config structs to interfaces mod by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Move all walltime benchmarking to its dedicated module by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)

##### <!-- 7 -->⚙️ Internals

- chore: bump runner version to 4.8.0 by
[@&#8203;github-actions](https://redirect.github.com/github-actions)\[bot]
in [#&#8203;172](https://redirect.github.com/CodSpeedHQ/action/pull/172)
- Bump memtrack version
- Ignore .codspeed for exec-harness output by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Remove useless clone derive for project config by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Cleanup output by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;196](https://redirect.github.com/CodSpeedHQ/runner/pull/196)
- Use simulation in codspeed action by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;194](https://redirect.github.com/CodSpeedHQ/runner/pull/194)
- Cache benchmark executable by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Add prelude and remove linter dead\_code suppression by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Reduce logs verbosity of debug info and perf file serialization by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Remove unused execve event by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;192](https://redirect.github.com/CodSpeedHQ/runner/pull/192)
- Add prelude by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Print number of events written to disk by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Switch to rust-cache to cache builds of the installed workspace
binaries by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;191](https://redirect.github.com/CodSpeedHQ/runner/pull/191)
- Install exec-harness before runner tests tests by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Remove double metadata information by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Add link to relevant issue for codspeed-rust metadata by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Use fork supporting compressed events for linux-perf-data by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Run exec-harness tests in separate CI job to prevent fifo issues by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Downgrade flate because 1.1.7 was yanked by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)

#### Install codspeed-runner 4.8.0

##### Install prebuilt binaries via shell script

```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CodSpeedHQ/runner/releases/download/v4.8.0/codspeed-runner-installer.sh | sh
```

#### Download codspeed-runner 4.8.0

| File | Platform | Checksum |
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ---------------- |
----------------------------------------------------------------------------------------------------------------------------------
|
|
[codspeed-runner-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.0/codspeed-runner-aarch64-unknown-linux-musl.tar.gz)
| ARM64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.0/codspeed-runner-aarch64-unknown-linux-musl.tar.gz.sha256)
|
|
[codspeed-runner-x86\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.0/codspeed-runner-x86_64-unknown-linux-musl.tar.gz)
| x64 MUSL Linux |
[checksum](https://redirect.github.com/CodSpeedHQ/runner/releases/download/v4.8.0/codspeed-runner-x86_64-unknown-linux-musl.tar.gz.sha256)
|

**Full Runner Changelog**:
<https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md>

**Full Changelog**:
<https://github.com/CodSpeedHQ/action/compare/v4.7.0...v4.8.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 08:33:01 -05:00
Abhijeet Bodas | अभिजित बोडस 9e0189bb89 [ty] remove special handling for Any() in match class patterns (#23011)
## Summary

`Any` does not support `isinstance` checks and cannot be used in class
patterns. If the arm with `Any()` is hit, it will raise an error at
runtime:

```py
[nav] In [1]: from typing import Any
         ...:
         ...: X = Any
         ...:
         ...: def f(obj: object):
         ...:     match obj:
         ...:         case int():
         ...:             ...
         ...:         case X():
         ...:             ...

[ins] In [2]: f("")
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[2], line 1
----> 1 f("")

Cell In[1], line 9, in f(obj)
      7 case int():
      8     ...
----> 9 case X():
     10     ...

# << snipped for brevity >>

TypeError: typing.Any cannot be used with isinstance()
```

Because this fails at runtime, we should ideally raise a diagnostic on
seeing `Any()` in a match pattern. That could potentially be done as
part of https://github.com/astral-sh/ty/issues/2592. But for now, this
PR only removes the special support that we have.

The special-case handling does not reduce any diagnostics on `jax` as of
today either.

## Test Plan

Removed tests :)
2026-02-02 14:17:14 +01:00