I am moving home this week and do not have time to review.

But I want to notice about the difference between --enable-X and --with-X.
See https://autotools.io/autoconf/arguments.html

Since isolated subinterpreter is not external dependency,
"--enable" should be used here.

(I know we already abuse "--with-lto".)

Regards,

On Thu, May 7, 2020 at 2:50 AM Victor Stinner <vstin...@python.org> wrote:

> Hi,
>
> tl; dr I'm asking for your permission to merge the following PR :-)
>
>     https://github.com/python/cpython/pull/19958
>
>
> In bpo-40514, I added a new
> --with-experimental-isolated-subinterpreters configuration option. I
> chose to use a very long option name and to not document it on
> purpose: prevent users to use it "by mistake", without understanding
> its purpose. The option is related to "per-interpreter GIL":
>
>     https://bugs.python.org/issue40512
>
> It's a practical solution to be able to experiment quickly
> per-interpreter GIL without having to fix all issues at once. For
> example, it disables Unicode interned strings which is unsafe with
> multiple interpreters running in parallel.
>
> I added this #ifdef to encourage other core developers work on this
> project, and let early adopters test this experimental feature to give
> us their feedback.
>
> I hope that soon we will discover all places which need to be fixed,
> so it will help to better estimate how much work is needed to finish
> the implementation of per-interpreter GIL.
>
> Currently, the special build changes:
>
> * Per-interpreter GIL
> * Store the current Python thread state in a TLS
> * Disable dict, frame, tuple and list free list
> * Disable type method cache
> * Disable pymalloc: force usage of libc malloc
> * Disable the GC in subinterpreters
> * _xxsubinterpreters.run_string() releases the GIL
>
> I consider that's a reasonable small number of changes to get a cool
> feature (per-interpreter GIL), compared to the same of the CPython
> code base (637K lines).
>
> --
>
> All these "#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS" are temporary
> workarounds until a proper fix is designed. For example, some caches
> should be made "per-interpreter".
>
> Most changes are easy to write, but some other changes are non
> trivial. For example, I modified _PyThreadState_GET() and
> _PyThreadState_Swap() to use a Thread Local Storage (TLS) to get and
> set the current Python thread state.
>
> Currently, "#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS" are not
> "visible" to users: it is only used in .c files and a few internal
> header files. But the following PR modify the public Include/object.h
> header file to make PyObject.ob_refcnt atomic:
>
>     https://github.com/python/cpython/pull/19958
>
> I would like to ensure that you are ok to put a few more temporary
> "#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS" in CPython to speedup
> the development of subinterpreters running in parallel
> (per-interpreter GIL), or if you consider that it has gone too far and
> a Git fork would be better.
>
> Victor
> --
> Night gathers, and now my watch begins. It shall not end until my death.
> _______________________________________________
> python-committers mailing list -- python-committers@python.org
> To unsubscribe send an email to python-committers-le...@python.org
> https://mail.python.org/mailman3/lists/python-committers.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-committers@python.org/message/2WHQBHFK7UQ7OYAJV5S2QCINODVVKGJY/
> Code of Conduct: https://www.python.org/psf/codeofconduct/
>


-- 
Inada Naoki  <songofaca...@gmail.com>
_______________________________________________
python-committers mailing list -- python-committers@python.org
To unsubscribe send an email to python-committers-le...@python.org
https://mail.python.org/mailman3/lists/python-committers.python.org/
Message archived at 
https://mail.python.org/archives/list/python-committers@python.org/message/4F67S3G7ME64G2R73326TWOCFX5XNNMB/
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to