You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: run fastmcp on the 3.14t free-threaded leg (#155)
Now that the opentelemetry api/sdk split (#154) lets lite-bootstrap[fastmcp]
import in an api-only environment, fastmcp/fastmcp-metrics install and smoke-pass
on 3.14t. Add them to the 3.14t leg's extras; 3.13t stays excluded (cffi gates
free-threading to 3.14+). Verified locally on a real 3.14t interpreter.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: architecture/free-threading.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,16 +12,17 @@ its extra, not `lite-bootstrap` itself.
12
12
| core, `logging`, `sentry`| ✅ | ✅ | pure Python; `logging` uses the stdlib-json serializer fallback when `orjson` is absent |
13
13
|`fastapi`/`faststream` (+ `-sentry`/`-logging`/`-metrics`) | ✅ | ✅ | pure Python + `pydantic-core` ft wheels |
14
14
|`litestar` (+ `litestar-metrics`) | ❌ | ✅ |`msgspec` gates `Py_GIL_DISABLED` to Python 3.14+ — its `_core.c` contains `#error "Py_GIL_DISABLED is only supported in Python 3.14+"` (v0.21.1), so the source build fails on 3.13t. See [`planning/deferred.md`](../planning/deferred.md)|
15
-
|`fastmcp` (+ `fastmcp-metrics`) | ❌ |❌| 3.13t: `cffi` (via `fastmcp`→`cryptography`) refuses to build free-threaded. 3.14t: `fastmcp` pulls bare `opentelemetry-api` without `opentelemetry-sdk`, so `import lite_bootstrap` still fails. See [`planning/deferred.md`](../planning/deferred.md)|
15
+
|`fastmcp` (+ `fastmcp-metrics`) | ❌ |✅| 3.13t: `cffi` (via `fastmcp`→`cryptography`) refuses to build free-threaded. 3.14t: works (on the leg) since the opentelemetry api/sdk split. See [`planning/deferred.md`](../planning/deferred.md)|
16
16
|`orjson` (opt-in speedup) | ❌ | ❌ | no ft wheels, build refuses ft ([ijl/orjson#530](https://github.com/ijl/orjson/issues/530)). Omit it on ft; the serializer falls back to stdlib json |
17
17
|`otl` (gRPC exporter) | ❌ | ❌ | needs `grpcio`, no ft wheels ([grpc/grpc#38762](https://github.com/grpc/grpc/issues/38762)). An HTTP-exporter path is deferred (`planning/deferred.md`) |
18
18
|`pyroscope`| ❌ | ❌ |`pyroscope-io` is abi3-only, unmaintained, no ft wheels ([`planning/deferred.md`](../planning/deferred.md)) |
19
19
20
20
The CI matrix (`.github/workflows/_checks.yml`, `free-threaded` job) installs
21
21
per Python version to match this table exactly: the 3.13t leg's extras stop at
22
22
`logging,sentry,fastapi,faststream,fastapi-metrics,faststream-metrics`; the
23
-
3.14t leg adds `litestar,litestar-metrics`. `orjson`, `otl`, `pyroscope`, and
24
-
`fastmcp`/`fastmcp-metrics` are excluded from both legs.
23
+
3.14t leg adds `litestar,litestar-metrics,fastmcp,fastmcp-metrics`. `orjson`,
24
+
`otl`, and `pyroscope` are excluded from both legs; `fastmcp` runs on 3.14t only
0 commit comments