def is_str_list(obj: list[object]) -> TypeIs[list[str]]: return all(isinstance(item, str) for item in obj) data: list[object] = ["a", "b", 3] if is_str_list(data): # In this block, mypy knows data is list[str] reveal_type(data) # list[str] Building on Python 3.11’s improved tracebacks, 3.13 introduces an interactive exception explanation system.
For the first time, Python can run truly parallel CPU-bound code without the Global Interpreter Lock (GIL) being a bottleneck – but not via removing the GIL entirely. Instead, 3.13 introduces a robust interpreters module that allows you to spawn isolated sub-interpreters, each with its own GIL, sharing only specific immutable objects. python news today release 3.13 november 2025
Why? Because hundreds of C extensions (including numpy , cryptography , lxml ) are not yet thread-safe without the GIL. However, the Python team expects GIL-free builds to become fully supported by . git clone https://github
git clone https://github.com/python/cpython cd cpython ./configure --disable-gil --enable-optimizations make -j$(nproc) "The GIL will die, but slowly – with respect for the ecosystem." – PEP 703 author, Sam Gross From source (Linux/macOS): def is_str_list(obj: list[object]) ->
For CI/CD pipelines, add:
Happy coding – and may your loops be ever faster.
November 2025 will be remembered as the month Python shed its reputation as the "slow glue language" and became a serious contender for high-performance computing – without losing a drop of its legendary readability.