Overthinking

Pages

Friday, April 28, 2017

tl;dr In 2014 I started an unexpected journey into a foreign land fraught with peril. Now I'm back and have a thing or two to share about both Go and Python. The JourneyBuilding A Home: My Python History

Tuesday, September 6, 2016

tl;dr I proposed a solution for Python's weak multi-core story (note I didn't say "support"), but didn't have time to follow through. I still have hope, both for the project as a whole and for several standalone parts.Contents: Backstory The Proposal The Outcome The Details

Thursday, December 19, 2013

Python 3.4 is in its first beta and the release is just around the corner. Hurray! That means we are in feature freeze. While I am finishing up odds and ends for the PEP 451 (module specs) implementation, I'm also starting to think seriously about what I hope to accomplish for the next Python version, 3.5.

The following are lists of things I'd like to make happen for Python 3.5. Most of them are things I wanted to do for 3.4 but ran out of time (go figure). I'll be adding to this list as I run across things I missed. I'm sure I've missed a thing or three that I promised myself or someone else that I'd work on.

Inspired in part by Nick Coghlan, I've categorized this 3.5 wishlist in descending order of likelihood.

[WARNING: Realistically, a bunch of this will not happen.]

Must-haves

These things are my main priorities. Barring rejection in python-dev, I will work to push these through.

1. a C implementation of OrderedDict (basically done)
2. OrderedDict as the default class definition namespace [guido]
3. a __definition_order__ attribute on classes that preserves the order of keys (or at least the keys) [me]
4. a __kwargs_order__ attribute in function locals that preserves the order of keys from **kwargs in calls (in lieu of making kwargs an OrderedDict) [link]
5. a new type that abstracts the full import system (similar to PEP 406)
- incl. exposing suffix->loader mapping
- context manager support
6. add statement local namespaces [PEP 3150][PEP 403][PEP 340][PEP 359][Nick]

#1-4 are all related, though 4 probably won't involve OrderedDict when all is said and done. They shouldn't require all that much work to take across the finish line.

Helping Out

These are things that I expect others will be targeting for 3.5 and with which I plan on helping.

Smaller Tasks

These are things that I hope to get done for 3.5, but won't require a lot of work.

* a new frame attribute, f_func, which is a weakref to the function object that was actually called (basically done)
* give the sys module a custom type and add descriptors [link]
* add inspect.Signature.from_callable()
* change setup.py (the main one) to not rely on imp.load_dynamic() [imp => _imp?] (may be done already)
* update pickle to use __spec__ (in the __main__ case)

Would be Nice

Stuff that I'd like to see in 3.5 but that I likely won't have time to work on.

May Be a Good Idea...

* find a non-hacky replacement for a module replacing itself in sys.modules [link]
* re-organize the sys module with sub-namespaces along the lines of the config categories listed in PEP 432 (similar to but more extensive than PEP 3139)

More Radical Ideas

* always import from <module.py> and set __path__ if there is a directory by the same name (obviates __init__.py) [link] (related to PEP 402 discussions) -- at least provide an import hook
* provide a safe mode for ImportSystem (see #5 above) that prevents leaking import side effects outside a context