On 10/18/2017 10:50 AM, Yury Selivanov wrote: > On Wed, Oct 18, 2017 at 1:06 PM, Guido van Rossum <guido at python.org> wrote: >> On Tue, Oct 17, 2017 at 9:40 PM, Nick Coghlan <ncoghlan at gmail.com> wrote: > [..] >>> By contrast, "contextvars.set_ctx" would need various wrappers to handle >>> correctly reverting the context change, and would hence be prone to "changed >>> the active context without changing it back" bugs (which can be especially >>> fun when you're dealing with a shared pool of worker threads or processes). >> >> >> So let's have both. > > The main reason why I don't like 'set_ctx()' is because it would make > it harder for us to adopt PEP 550-like design later in the future > (*if* we need that.) > > PEP 550 is designed in such a way, that 'generator.send()' is the only > thing that can control the actual stack of LCs. If users can call > 'set_ctx' themselves, it means that it's no longer safe for > 'generator.send()' to simply pop the topmost LC from the stack. I don't see why this is a concern -- Python is a "consenting adults" language. If users decide to start mucking around with advanced behavior and something breaks, well, they own all the pieces! ;) Unless it's extremely difficult to not seg-fault in such a situation I don't think this is a valid argument. -- ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4