On Fri, Aug 25, 2017 at 9:10 AM, Barry Warsaw <ba...@python.org> wrote:
> It’s ideas like this that do make me think of scopes when talking about 
> global state and execution contexts.  I understand that the current PEP 550 
> invokes an explicit separate namespace,

Right.  The observation that PEP 550 proposes a separate stack of
scopes from the lexical scope is an important one.

> but thinking bigger, if the usual patterns of just writing to 
> sys.std{out,err}  still worked and in the presence of single “threaded” 
> execution it just did the normal thing, but in the presence of threads, 
> async, etc. it *also* did the right thing, then code wouldn’t need to change 
> just because you started to adopt async.  That implies some scoping rules to 
> make “sys.stdout” refer to the local execution’s sys.stdout if it were set, 
> and the global sys.stdout if it were not.

Yeah, at the bottom of the PEP 550 stack there'd need to be a proxy to
the relevant global state.  While working on the successor to PEP 406
(import state), I realized I'd need something like this.

>
> This would of course be a much deeper change to Python, with lots of tricky 
> semantics and corner cases to get right.  But it might be worth it to provide 
> an execution model and an  API that would be harder to get wrong because 
> Python just Does the Right Thing.  It’s difficult because you also have to be 
> able to reason about what’s going on, and it’ll be imperative to be able to 
> debug and examine the state of your execution when things go unexpected.  
> That’s always harder when mixing dynamic scope with lexical scope, which I 
> think is what PEP 550 is ultimately getting at.

+1  Thankfully, PEP 550 is targeted more at a subset of library
authors than at the general population.

-eric
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to