Python 3.15: features that didn't make the headlines
Python 3.15’s lesser‑known features, such as lazy imports, iterator synchronization primitives and improved error messages, are prompting reflection on how the language is evolving. Commenters weigh these technical gains against long‑standing concerns over performance, dynamic typing, concurrency and ecosystem complexity, with several arguing that AI-assisted development and large-scale services now favor statically typed or faster languages like Go, Rust, TypeScript or C#. Others counter that Python’s strengths in rapid prototyping, data science and tooling remain compelling, while security and supply‑chain risks around package installation are an increasing worry for all ecosystems, not just Python.
Python’s role in a “post‑AI codebot” world
- Several commenters report rewriting large Python codebases (100k+ LOC) in Go or Rust, citing:
- Much faster and more reliable services.
- Better fit with static typing and compilation, which help verify AI‑generated code.
- Others argue Python is still excellent for:
- ML/AI, research, scripting, and rapid prototyping.
- “High-value tokens” (concise, readable code) where raw speed is less critical.
- Disagreement over whether Python truly gives faster development than TypeScript/Go/Rust.
Language design, ergonomics, and ecosystems
- Criticisms of Python:
- Indentation-as-syntax, weak lambdas, slow and evolving type checkers, GIL, FFI story.
- Dynamic typing making large codebases hard to reason about.
- Defenses:
- Indentation is natural, reduces syntactic noise.
- Python is readable, high-level, and has long been effective for business and prototyping.
- Some see Rust, TypeScript, Kotlin, C#, or Go as better “sweet spots” for new work.
- Web dev split:
- Python/Django praised for server‑rendered CRUD and simplicity.
- Others prefer TS/JS stacks (e.g., TSX templates) and claim far superior DX.
Python 3.15 features and semantics
- Lazy imports:
- New
lazyimports and lazy evaluation of type annotations (PEP 649/749) discussed. - Some see this as overdue, long‑requested, and helpful for huge codebases/startup time.
- Others view it as complexity driven by big companies, with added security/testing risk.
- New
- Improved error messages:
- AttributeError hints now map common names from other languages to Python equivalents; widely liked.
- ContextDecorator changes:
- Now covers full lifetime of coroutines/iterators; seen as a good but potentially subtle behavior change.
- New iterator synchronization primitives and
except*/ExceptionGroup improvements are welcomed but considered niche. - Some feel new features erode “Pythonic zen”; others say modern Python is better than ever.
Security and supply chain concerns
- Anxiety about
pipinstalling unvetted code with full$HOMEaccess. - Replies stress:
- Unix has no isolation between processes of the same user; Python alone can’t fix that.
- Recommended mitigations: containers, devcontainers, VMs, separate users.
- Concern that growing supply‑chain attacks may eventually hurt the ecosystem.
LLMs and language evolution
- Mixed reports on LLM performance:
- Python code quality varies; static typing scarcity may hinder reasoning.
- TypeScript often works very well; Rust support is improving but less idiomatic.
- Worry that LLMs will lag behind new Python features until retraining catches up.