Yeah, I’d say barring packages, there’s a couple of other things that go into it:
Core language updates, which are more rare but do happen, like the walrus operator or match case statements, or like you said with typehints (though typehints are somewhat of a combo of multiple things), f strings…
Standard library features, like asyncio, and million other random little things
Language tooling. Python didn’t always have pip and also recently added pyproject as a standard
Yea … all good points … still I’m thinking that the “threading the needle” is in many ways attributable to the core language and design philosophy standing the test of time (so far).
And a possible 4: runtime changes. I suspect this will become more and more apparent and important to the average user, with all the performance updates that have been coming to CPython interpreter
Yeah, I’d say barring packages, there’s a couple of other things that go into it:
Yea … all good points … still I’m thinking that the “threading the needle” is in many ways attributable to the core language and design philosophy standing the test of time (so far).
For sure; good decisions early about core design and about how to evolve are the foundations on which all else is built.
And a possible 4: runtime changes. I suspect this will become more and more apparent and important to the average user, with all the performance updates that have been coming to CPython interpreter