Commit Graph
26229 Commits
Author SHA1 Message Date
Erik Johnston cff45df5a7 tests: change test comments 2026-11-05 16:34:54 +00:00
Erik Johnston 1976edd73a tests: rename 'def run' 2026-11-05 16:19:18 +00:00
Erik Johnston 229cbfb733 Use durations in tests 2026-11-05 16:18:54 +00:00
Erik Johnston 2e754e823a Use Duration 2026-11-05 15:59:24 +00:00
Erik Johnston 27b6720ddd Fix lint 2026-11-05 15:59:17 +00:00
Erik JohnstonandEric Eastwood f8831ac0b4 Update tests/metrics/test_thread_cpu.py
Co-authored-by: Eric Eastwood <erice@element.io>
2026-11-05 15:56:43 +00:00
Erik JohnstonandClaude Opus 5.5 5dbf7995e7 Add a sanity-check test for the thread CPU metrics
Check that `/proc/<tid>/stat` parses correctly (including a thread name
with spaces and brackets), that main-thread and registered-thread CPU
land under the right `thread_type`, and that the per-thread totals add
up to the process's CPU time between two scrapes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SXqkiTqEA9Nb2ycHaArDBb
2026-11-04 16:44:53 +00:00
Erik JohnstonandEric Eastwood d648a7f32c Update synapse/logging/opentracing.py
Co-authored-by: Eric Eastwood <erice@element.io>
2026-11-04 16:18:06 +00:00
Erik Johnston 1fb33cba0b Note that other includes prometheus metrics threads 2026-11-04 16:17:21 +00:00
Erik Johnston 95914ea304 Revert "Register prometheus metrics threads"
This reverts commit ce5d3cae56.
2026-11-04 16:16:10 +00:00
Erik Johnston 4d60ec50a1 Expand on thread exited 2026-11-04 16:00:04 +00:00
Erik Johnston 4f812dd2db Ensure _registered_thread_types is locked 2026-11-04 15:56:26 +00:00
Erik Johnston 93bb5c0057 Lock the thread dicts as well 2026-11-03 09:47:10 +00:00
Erik Johnston 77a336cfb5 Prefix threadpool with 'module-' 2026-11-02 15:13:05 +00:00
Erik JohnstonandEric Eastwood 8e9405ff41 Update synapse/metrics/_thread_cpu.py
Co-authored-by: Eric Eastwood <erice@element.io>
2026-11-02 14:48:53 +00:00
Erik Johnston 0624549999 Note that we lose exited thread metrics 2026-11-02 14:43:28 +00:00
Erik Johnston afffba457f Clean up proc comment 2026-11-02 14:15:20 +00:00
Erik Johnston ce5d3cae56 Register prometheus metrics threads 2026-11-02 14:07:52 +00:00
Erik Johnston 77baab0be1 Use attribute comments 2026-11-02 14:04:45 +00:00
Erik Johnston 7750342cb7 Fixup jaeger-reporter comments 2026-11-02 14:04:03 +00:00
Erik JohnstonandClaude Opus 5.5 e3cfd60c64 Report the CPU time of module threadpools
Modules such as the S3 storage provider run work on their own Twisted
threadpool through `ModuleApi.defer_to_threadpool`. Register the pool
with the thread CPU collector there, under its Twisted name, so the S3
provider's threads show up as `threadpool_s3-pool` rather than `other`.

A threadpool now keeps the name it was first registered under, so a
module passing the reactor's pool does not rename `threadpool_default`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EDruzqbGMzEHotouLuudxP
2026-10-26 15:38:17 +00:00
Erik JohnstonandClaude Opus 5.5 cc85da6f5e Report the Jaeger reporter thread's CPU time as its own type
jaeger-client sends spans from a thread it starts itself, which was
reported as `other`. Add `register_thread` to the thread CPU collector
and register the threads that `initialize_tracer` starts as
`jaeger-reporter`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EDruzqbGMzEHotouLuudxP
2026-10-26 15:38:17 +00:00
Erik JohnstonandClaude Opus 5.5 35cd879f37 Add a metric for CPU time per thread type
`synapse_thread_cpu_seconds_total{thread_type, mode}` reads
`/proc/self/task` on each scrape and groups threads into the main thread,
each registered threadpool, tokio (by kernel thread name), and `other`.

The kernel only reports CPU time for live threads, so the collector sums
per-thread deltas between scrapes. A thread that exits loses the CPU it
used since the last scrape.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EDruzqbGMzEHotouLuudxP
2026-10-26 15:38:17 +00:00
Hugh Nimmo-Smith d99e5fe783 Implement transaction IDs for MSC4388 and other updates (sign-in with QR code) (#19906) 2026-10-26 11:56:06 +00:00
Eric Eastwood 8d60450b33 Merge branch 'release-v1.164' into develop
Conflicts:
	CHANGES.md
	debian/changelog
2026-10-23 15:19:03 -05:00
Eric Eastwood aac366053f Merge branch 'master' into develop
Conflicts:
	pyproject.toml
2026-10-23 15:15:08 -05:00
Eric Eastwood 82c253f825 Clarify pillow bump only installable with Python >= 3.11 2026-10-23 15:01:53 -05:00
Eric Eastwood bcbf26641b Clarify pillow bump only installable with Python >= 3.11 2026-10-23 15:00:47 -05:00
Eric Eastwood 0a32d04b11 1.164.0rc3 v1.164.0rc3 2026-10-23 14:54:35 -05:00
Eric Eastwood 414abb9267 Bump pillow to version 13.0.0 with security fixes where Python support allows - Synapse 1.164.x (#20399)
The problem is that while `pillow@12.3.0` supports Python >= 3.10,
`pillow@13.0.0` only supports Python > 3.11, and we haven't dropped
support for Python 3.10 yet (tracked by
https://github.com/element-hq/synapse/issues/20041).

`pillow@13.0.0` includes some important security fixes:
https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html

### How was this change made?

 1. `poetry update pillow`
1. Manually change the `"pillow"` `markers` in `poetry.lock` to split at
Python 3.11 instead of 3.14

Please note this is not a durable change. `poetry` will try to revert
this any time we try to make a change (requires diligence to make sure
we keep changing it back).

This maintenance burden will disappear once we drop Python 3.10 support
(tracked by https://github.com/element-hq/synapse/issues/20041).

### Alternatives

If we were up for updating the minimum version of `pillow` in
`pyproject.toml`, we could do something like the following which would
resolve in `poetry.lock` durably how we want,

`pyproject.toml`
```
    # Pillow 13 dropped Python 3.10 but has security fixes. Split so 3.11+ can pick up
    # the security fixes.
    #
    # FIXME: Remove the split once we drop Python 3.10 support.
    "Pillow>=10.0.1,<13; python_version < '3.11'",
    "Pillow>=13.0.0; python_version >= '3.11'",
```

It looks like we [previously
bumped](https://github.com/element-hq/synapse/blob/4853cd4238e100183fd7b0852ddf3e8eef894658/pyproject.toml#L54-L56)
the minimum version of `Pillow` for another CVE
(https://github.com/matrix-org/synapse/pull/16347)

Although, I'm guessing we'd rather leave the minimum version alone and
only update `poetry.lock`.

I think the problem with updating the minimum is that the packagers for
Linux distros will have to deal with not having the latest `pillow`
version available and may patch `pillow` a different way.
2026-10-23 14:52:14 -05:00
Eric Eastwood 62a411da7e 1.163.2 v1.163.2 2026-10-23 14:50:01 -05:00
Eric Eastwood f8a70f5424 Bump pillow to version 13.0.0 with security fixes where Python support allows (#20398)
The problem is that while `pillow@12.3.0` supports Python >= 3.10,
`pillow@13.0.0` only supports Python > 3.11, and we haven't dropped
support for Python 3.10 yet (tracked by
https://github.com/element-hq/synapse/issues/20041).

`pillow@13.0.0` includes some important security fixes:
https://pillow.readthedocs.io/en/stable/releasenotes/13.0.0.html

### How was this change made?

 1. `poetry update pillow`
1. Manually change the `"pillow"` `markers` in `poetry.lock` to split at
Python 3.11 instead of 3.14

Please note this is not a durable change. `poetry` will try to revert
this any time we try to make a change (requires diligence to make sure
we keep changing it back).

This maintenance burden will disappear once we drop Python 3.10 support
(tracked by https://github.com/element-hq/synapse/issues/20041).

### Alternatives

If we were up for updating the minimum version of `pillow` in
`pyproject.toml`, we could do something like the following which would
resolve in `poetry.lock` durably how we want,

`pyproject.toml`
```
    # Pillow 13 dropped Python 3.10 but has security fixes. Split so 3.11+ can pick up
    # the security fixes.
    #
    # FIXME: Remove the split once we drop Python 3.10 support.
    "Pillow>=10.0.1,<13; python_version < '3.11'",
    "Pillow>=13.0.0; python_version >= '3.11'",
```

It looks like we [previously
bumped](https://github.com/element-hq/synapse/blob/4853cd4238e100183fd7b0852ddf3e8eef894658/pyproject.toml#L54-L56)
the minimum version of `Pillow` for another CVE
(https://github.com/matrix-org/synapse/pull/16347)

Although, I'm guessing we'd rather leave the minimum version alone and
only update `poetry.lock`.

I think the problem with updating the minimum is that the packagers for
Linux distros will have to deal with not having the latest `pillow`
version available and may patch `pillow` a different way.
2026-10-23 14:48:11 -05:00
Junker der Provinz 4853cd4238 Remove $server_port from the Host header in the nginx reverse proxy example (#20391)
Fixes #19583

The nginx example in `docs/reverse_proxy.md` sets `proxy_set_header Host
$host:$server_port;`. The server block listens on 443, so nginx sends
`Host: matrix.example.com:443`. With `public_baseurl:
https://matrix.example.com/`, the request URI never starts with
`public_baseurl`, and `SsoRedirectServlet` keeps redirecting to itself.
That breaks SSO even when the internal and external ports are the same.
The line came in with #17994.

This switches the example to `proxy_set_header Host $host;`, as
@anoadragon453 recommended in #18359. I added a short comment for setups
where clients use a non-default port: use `$http_host` and put that port
in `public_baseurl`. The setup in #18359 (external port 50080) needs
that variant.

I left `docker/conf-workers/nginx.conf.j2` alone. Its listener port
matches `public_baseurl`, so `$host:$server_port` is right there.

This is a docs-only change, so there are no tests.

Thanks to @shibotto for reporting this and for pointing at the fix.

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
2026-10-23 17:19:34 +00:00
Eric Eastwood 7ea942a5fe Merge branch 'release-v1.164' into develop
Conflicts:
	CHANGES.md
	debian/changelog
2026-10-22 14:51:16 -05:00
Eric Eastwood 06a1c55e56 1.164.0rc2 v1.164.0rc2 2026-10-22 14:32:23 -05:00
Eric Eastwood 2d7cccc87a Merge branch 'release-v1.164' of github.com:element-hq/synapse into release-v1.164 2026-10-22 14:30:33 -05:00
Eric Eastwood 603fb5bb39 Merge branch 'master' into develop
Conflicts:
	CHANGES.md
	debian/changelog
	pyproject.toml
2026-10-22 14:28:08 -05:00
Eric Eastwood b4daaca31f Update rustls-webpki to distrust eMudhra Intermediate certificates (#20392)
`rustls-webpki` releasenotes: https://github.com/rustls/webpki/releases/tag/v%2F0.103.16

Part of https://github.com/element-hq/backend-internal/issues/306

Related to https://github.com/element-hq/synapse/pull/20387

We already use the system CA store when making requests in our Rust code
(using the
[`rustls-tls-native-roots`](https://github.com/element-hq/synapse/blob/7c85c80033ea5c3ca3851f3dab1d0397b94d5183/rust/Cargo.toml#L61)
([docs](https://docs.rs/reqwest/0.12.28/reqwest/#optional-features))
feature with `reqwest`). For a system that already has a patched system
CA store, bumping `rustls-webpki` is simply extra protection as it
actively blocks those untrusted certs. For an unpatched system CA store,
this provides a stop-gap.


### Dev notes

```shell
$ cargo tree --invert rustls-webpki
rustls-webpki v0.103.16
└── rustls v0.23.45
    ├── hyper-rustls v0.27.7
    │   └── reqwest v0.12.28
    │       └── synapse v0.1.0 (/home/eric/Documents/github/element/synapse/rust)
    ├── reqwest v0.12.28 (*)
    └── tokio-rustls v0.26.2
        ├── hyper-rustls v0.27.7 (*)
        └── reqwest v0.12.28 (*)
```
2026-10-22 14:13:24 -05:00
Bardi Harborow c4680b6b81 security: update certifi to 2026.10.19 (#20387)
Updates `certifi` to 2026.10.19 to address
[GHSA-6q48-6c7w-9gw2](https://github.com/advisories/GHSA-6q48-6c7w-9gw2).

certifi before 2026.10.19 bundles `emSign ECC Root CA - G3`, which
chains to the compromised eMudhra intermediate CAs.

This only affects TLS connections made by the Sentry SDK when `sentry`
is configured, as `sentry_sdk`'s transport is the only runtime user of
certifi. Federation and Synapse's other outbound HTTP requests use the
system trust store via `platformTrust()`.

Python advisory:
https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576

---------

Signed-off-by: Bardi Harborow <bardi@bardiharborow.com>
2026-10-22 14:13:24 -05:00
Eric Eastwood 56913c3d71 1.163.1 v1.163.1 2026-10-22 14:01:36 -05:00
Eric Eastwood 3f2bef9429 Update rustls-webpki to distrust eMudhra Intermediate certificates (#20392)
`rustls-webpki` releasenotes: https://github.com/rustls/webpki/releases/tag/v%2F0.103.16

Part of https://github.com/element-hq/backend-internal/issues/306

Related to https://github.com/element-hq/synapse/pull/20387

We already use the system CA store when making requests in our Rust code
(using the
[`rustls-tls-native-roots`](https://github.com/element-hq/synapse/blob/7c85c80033ea5c3ca3851f3dab1d0397b94d5183/rust/Cargo.toml#L61)
([docs](https://docs.rs/reqwest/0.12.28/reqwest/#optional-features))
feature with `reqwest`). For a system that already has a patched system
CA store, bumping `rustls-webpki` is simply extra protection as it
actively blocks those untrusted certs. For an unpatched system CA store,
this provides a stop-gap.


### Dev notes

```shell
$ cargo tree --invert rustls-webpki
rustls-webpki v0.103.16
└── rustls v0.23.45
    ├── hyper-rustls v0.27.7
    │   └── reqwest v0.12.28
    │       └── synapse v0.1.0 (/home/eric/Documents/github/element/synapse/rust)
    ├── reqwest v0.12.28 (*)
    └── tokio-rustls v0.26.2
        ├── hyper-rustls v0.27.7 (*)
        └── reqwest v0.12.28 (*)
```
2026-10-22 13:50:51 -05:00
Bardi Harborow c3adef6578 security: update certifi to 2026.10.19 (#20387)
Updates `certifi` to 2026.10.19 to address
[GHSA-6q48-6c7w-9gw2](https://github.com/advisories/GHSA-6q48-6c7w-9gw2).

certifi before 2026.10.19 bundles `emSign ECC Root CA - G3`, which
chains to the compromised eMudhra intermediate CAs.

This only affects TLS connections made by the Sentry SDK when `sentry`
is configured, as `sentry_sdk`'s transport is the only runtime user of
certifi. Federation and Synapse's other outbound HTTP requests use the
system trust store via `platformTrust()`.

Python advisory:
https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576

---------

Signed-off-by: Bardi Harborow <bardi@bardiharborow.com>
2026-10-22 13:50:51 -05:00
Eric Eastwood 3366ea72cf Update rustls-webpki to distrust eMudhra Intermediate certificates (#20392)
`rustls-webpki` releasenotes: https://github.com/rustls/webpki/releases/tag/v%2F0.103.16

Part of https://github.com/element-hq/backend-internal/issues/306

Related to https://github.com/element-hq/synapse/pull/20387

We already use the system CA store when making requests in our Rust code
(using the
[`rustls-tls-native-roots`](https://github.com/element-hq/synapse/blob/7c85c80033ea5c3ca3851f3dab1d0397b94d5183/rust/Cargo.toml#L61)
([docs](https://docs.rs/reqwest/0.12.28/reqwest/#optional-features))
feature with `reqwest`). For a system that already has a patched system
CA store, bumping `rustls-webpki` is simply extra protection as it
actively blocks those untrusted certs. For an unpatched system CA store,
this provides a stop-gap.


### Dev notes

```shell
$ cargo tree --invert rustls-webpki
rustls-webpki v0.103.16
└── rustls v0.23.45
    ├── hyper-rustls v0.27.7
    │   └── reqwest v0.12.28
    │       └── synapse v0.1.0 (/home/eric/Documents/github/element/synapse/rust)
    ├── reqwest v0.12.28 (*)
    └── tokio-rustls v0.26.2
        ├── hyper-rustls v0.27.7 (*)
        └── reqwest v0.12.28 (*)
```
2026-10-22 09:49:50 -05:00
Johannes Marbach c54fd437e3 Switch the RTC notification rules to event-property-is (#20366)
As suggested in
https://github.com/matrix-org/matrix-spec-proposals/pull/4075#discussion_r4288130493.
2026-10-22 13:13:46 +01:00
Bardi Harborow 87b082f23a security: update certifi to 2026.10.19 (#20387)
Updates `certifi` to 2026.10.19 to address
[GHSA-6q48-6c7w-9gw2](https://github.com/advisories/GHSA-6q48-6c7w-9gw2).

certifi before 2026.10.19 bundles `emSign ECC Root CA - G3`, which
chains to the compromised eMudhra intermediate CAs.

This only affects TLS connections made by the Sentry SDK when `sentry`
is configured, as `sentry_sdk`'s transport is the only runtime user of
certifi. Federation and Synapse's other outbound HTTP requests use the
system trust store via `platformTrust()`.

Python advisory:
https://discuss.python.org/t/information-for-python-users-regarding-emudhra-emsign-ca-certificate-security-incident/109576

---------

Signed-off-by: Bardi Harborow <bardi@bardiharborow.com>
2026-10-21 19:29:23 -05:00
Olivier 'reivilibre 7c85c80033 Unbreak CI by bumping locked dependencies to support Python 3.15 wheels. (#20386)
It looks like our CI is sometimes being run with Python 3.15, where
`rpds-py` doesn't have wheels for our current version.

Unsure why it's intermittent.

Run:
https://github.com/element-hq/synapse/actions/runs/39464528041/job/118772376619

```
      | error: failed to run custom build command for `pyo3-ffi v0.27.2`
      | 
      | Caused by:
      |   process didn't exit successfully: `/tmp/tmp72_cy3_y/rpds_py-0.30.0/target/release/build/pyo3-ffi-ae84d9db989de8cd/build-script-build` (exit status: 1)
      |   --- stdout
      |   cargo:rustc-check-cfg=cfg(Py_LIMITED_API)
      |   cargo:rustc-check-cfg=cfg(Py_GIL_DISABLED)
      |   cargo:rustc-check-cfg=cfg(PyPy)
      |   cargo:rustc-check-cfg=cfg(GraalPy)
      |   cargo:rustc-check-cfg=cfg(py_sys_config, values("Py_DEBUG", "Py_REF_DEBUG", "Py_TRACE_REFS", "COUNT_ALLOCS"))
      |   cargo:rustc-check-cfg=cfg(pyo3_disable_reference_pool)
      |   cargo:rustc-check-cfg=cfg(pyo3_leak_on_drop_without_reference_pool)
      |   cargo:rustc-check-cfg=cfg(Py_3_7)
      |   cargo:rustc-check-cfg=cfg(Py_3_8)
      |   cargo:rustc-check-cfg=cfg(Py_3_9)
      |   cargo:rustc-check-cfg=cfg(Py_3_10)
      |   cargo:rustc-check-cfg=cfg(Py_3_11)
      |   cargo:rustc-check-cfg=cfg(Py_3_12)
      |   cargo:rustc-check-cfg=cfg(Py_3_13)
      |   cargo:rustc-check-cfg=cfg(Py_3_14)
      |   cargo:rustc-check-cfg=cfg(Py_3_15)
      |   cargo:rerun-if-env-changed=PYO3_CROSS
      |   cargo:rerun-if-env-changed=PYO3_CROSS_LIB_DIR
      |   cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_VERSION
      |   cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_IMPLEMENTATION
      |   cargo:rerun-if-env-changed=PYO3_PRINT_CONFIG
      |   cargo:rerun-if-env-changed=PYO3_USE_ABI3_FORWARD_COMPATIBILITY
      | 
      |   --- stderr
      |   error: the configured Python version (3.15) is newer than PyO3's maximum supported version (3.14)
      |   = help: this package is being built with PyO3 version 0.27.2
      |   = help: check https://crates.io/crates/pyo3 for the latest PyO3 version available
      |   = help: updating this package to the latest version of PyO3 may provide compatibility with this Python version
      |   = help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI
      | warning: build failed, waiting for other jobs to finish...
      | 💥 maturin failed
      |   Caused by: Failed to build a native library through cargo
      |   Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_BUILD_EXTENSION_MODULE="1" PYO3_ENVIRONMENT_SIGNATURE="cpython-3.15-64bit" PYO3_PYTHON="/tmp/tmpy90bal2g/.venv/bin/python" PYTHON_SYS_EXECUTABLE="/tmp/tmpy90bal2g/.venv/bin/python" "cargo" "rustc" "--profile" "release" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/tmp72_cy3_y/rpds_py-0.30.0/Cargo.toml" "--lib"`
      | Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/tmp/tmpy90bal2g/.venv/bin/python', '--compatibility', 'off'] returned non-zero exit status 1
  
  Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with rpds-py (0.30.0)
  
    - not supporting PEP 517 builds
    - not specifying PEP 517 build requirements correctly
    - the build requirements are incompatible with your operating system or Python version
    - the build requirements are missing system dependencies (eg: compilers, libraries, headers).
  
  You can verify this by running pip wheel --no-cache-dir --use-pep517 "rpds-py (==0.30.0)".
  
  
  PEP517 build of a dependency failed
```


```
      | error: failed to run custom build command for `pyo3-ffi v0.26.0`
      | 
      | Caused by:
      |   process didn't exit successfully: `/tmp/tmpy_lu888j/pydantic_core-2.41.5/target/release/build/pyo3-ffi-83252c0f9cb4430a/build-script-build` (exit status: 1)
      |   --- stdout
      |   cargo:rustc-check-cfg=cfg(Py_LIMITED_API)
      |   cargo:rustc-check-cfg=cfg(Py_GIL_DISABLED)
      |   cargo:rustc-check-cfg=cfg(PyPy)
      |   cargo:rustc-check-cfg=cfg(GraalPy)
      |   cargo:rustc-check-cfg=cfg(py_sys_config, values("Py_DEBUG", "Py_REF_DEBUG", "Py_TRACE_REFS", "COUNT_ALLOCS"))
      |   cargo:rustc-check-cfg=cfg(pyo3_disable_reference_pool)
      |   cargo:rustc-check-cfg=cfg(pyo3_leak_on_drop_without_reference_pool)
      |   cargo:rustc-check-cfg=cfg(Py_3_7)
      |   cargo:rustc-check-cfg=cfg(Py_3_8)
      |   cargo:rustc-check-cfg=cfg(Py_3_9)
      |   cargo:rustc-check-cfg=cfg(Py_3_10)
      |   cargo:rustc-check-cfg=cfg(Py_3_11)
      |   cargo:rustc-check-cfg=cfg(Py_3_12)
      |   cargo:rustc-check-cfg=cfg(Py_3_13)
      |   cargo:rustc-check-cfg=cfg(Py_3_14)
      |   cargo:rustc-check-cfg=cfg(Py_3_15)
      |   cargo:rerun-if-env-changed=PYO3_CROSS
      |   cargo:rerun-if-env-changed=PYO3_CROSS_LIB_DIR
      |   cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_VERSION
      |   cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_IMPLEMENTATION
      |   cargo:rerun-if-env-changed=PYO3_PRINT_CONFIG
      |   cargo:rerun-if-env-changed=PYO3_USE_ABI3_FORWARD_COMPATIBILITY
      | 
      |   --- stderr
      |   error: the configured Python interpreter version (3.15) is newer than PyO3's maximum supported version (3.14)
      |   = help: please check if an updated version of PyO3 is available. Current version: 0.26.0
      |   = help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI
      | warning: build failed, waiting for other jobs to finish...
      | 💥 maturin failed
      |   Caused by: Failed to build a native library through cargo
      |   Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_BUILD_EXTENSION_MODULE="1" PYO3_ENVIRONMENT_SIGNATURE="cpython-3.15-64bit" PYO3_PYTHON="/tmp/tmprci5om5_/.venv/bin/python" PYTHON_SYS_EXECUTABLE="/tmp/tmprci5om5_/.venv/bin/python" "cargo" "rustc" "--profile" "release" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/tmpy_lu888j/pydantic_core-2.41.5/Cargo.toml" "--lib" "--crate-type" "cdylib"`
      | Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/tmp/tmprci5om5_/.venv/bin/python', '--compatibility', 'off'] returned non-zero exit status 1
  
  Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with pydantic-core (2.41.5)
  
    - not supporting PEP 517 builds
    - not specifying PEP 517 build requirements correctly
    - the build requirements are incompatible with your operating system or Python version
    - the build requirements are missing system dependencies (eg: compilers, libraries, headers).
  
  You can verify this by running pip wheel --no-cache-dir --use-pep517 "pydantic-core (==2.41.5)".
```

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
2026-10-21 10:51:49 -05:00
Eric Eastwood 80d50913d6 Organize MSC4354 bugfixes with the others v1.164.0rc1 2026-10-20 09:54:17 -05:00
Eric Eastwood 7a7d81ce42 Link MSC4452 2026-10-20 09:51:46 -05:00
Eric Eastwood d053b37090 Lift new spec version advertisement to the top 2026-10-20 09:50:44 -05:00
Eric Eastwood 2e10fad626 We have enough context from the changelog entry for what MSC4140 is 2026-10-20 09:49:50 -05:00