Python 3.6 Release History
Python 3.6 (released December 23, 2016) marked the beginning of modern Python, introducing syntax and runtime improvements that are still widely used today.
Formatted String Literals (f-strings)
The major highlight of Python 3.6 is PEP 498: f-strings.
They allow embedding expressions directly inside string literals:
name = "Fred"
age = 50
print(f"He said his name is {name} and he is {age} years old.")
- Expressions are evaluated at runtime
- Support full Python expressions inside braces
- Faster and more readable than
.format()or%formatting ([Python documentation][1])
Variable Annotations
PEP 526 introduced syntax for variable type hints:
count: int = 0
users: list[str] = ["Alice", "Bob"]
- Enables static type checking tools
- Does not affect runtime behavior ([Studocu][2])
Dictionary Implementation Improvements
Python 3.6 redesigned the internal dict structure:
- reduced memory usage
- improved performance
- insertion-order preservation became possible (implementation detail at the time)
Note: order preservation became a language guarantee in Python 3.7.
Runtime Improvements
- faster object creation
- improved asyncio performance
- better SSL and socket handling
- improved module initialization ([That's Good Enough][3])
Syntax Improvements
- numeric separators for readability:
budget = 1_000_000
- extended iterable unpacking:
a, b, *rest = [1, 2, 3, 4]
Async Features
- async generators
- async comprehensions
- improvements to coroutine performance
Subversions log
- 3.6.15 (Sep 2021) — final release (EOL)
- 3.6.9 (Jul 2019) — security updates
- 3.6.4 (Dec 2017) — memory and asyncio fixes
- 3.6.0 (Dec 2016) — initial release