On a 16-core AMD EPYC server, a parallel prime-sieving workload runs 3.7x faster than the equivalent multiprocessing version, with 40% less memory overhead.
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. python news today release 3.13 november 2025
import interpreters import math def is_prime(n): return all(n % i != 0 for i in range(2, int(math.sqrt(n)) + 1)) On a 16-core AMD EPYC server, a parallel
If you want to experiment:
urllib.parse no longer silently accepts non-ASCII bytes; you must encode to UTF-8 explicitly. 7. The "No-GIL" Experiment: Still Cooking Python 3.13 ships with a compile-time flag --disable-gil that produces a GIL-free interpreter (a.k.a. "free-threaded Python"). This remains experimental and not recommended for production. This remains experimental and not recommended for production
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.
The Steering Council chose sub-interpreters over a GIL-less build (still available as --disable-gil for the brave) because sub-interpreters maintain full C-extension compatibility – a critical requirement for the scientific and data science ecosystems (NumPy, Pandas, TensorFlow all work unchanged). Takeaway: For CPU-bound workloads, rewrite your multiprocessing code to use interpreters.Pool . For I/O-bound tasks, asyncio remains king. 2. JIT Compilation Graduates from Experimental (PEP 744) PEP 744 , the Copy-and-Patch JIT compiler introduced as an experiment in Python 3.13 beta, is now enabled by default on x86-64 and ARM64 builds.