bpo-40514: Add --with-experimental-isolated-subinterpreters (GH-19926)
Add --with-experimental-isolated-subinterpreters build option to configure: better isolate subinterpreters, experimental build mode. When used, force the usage of the libc malloc() memory allocator, since pymalloc relies on the unique global interpreter lock (GIL).
This commit is contained in:
parent
0b1e3307e2
commit
c5fa364f4e
|
@ -0,0 +1,2 @@
|
||||||
|
Add ``--with-experimental-isolated-subinterpreters`` build option to
|
||||||
|
``configure``: better isolate subinterpreters, experimental build mode.
|
|
@ -291,7 +291,17 @@ _PyPreConfig_InitCompatConfig(PyPreConfig *config)
|
||||||
config->coerce_c_locale_warn = 0;
|
config->coerce_c_locale_warn = 0;
|
||||||
|
|
||||||
config->dev_mode = -1;
|
config->dev_mode = -1;
|
||||||
|
#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS
|
||||||
|
/* bpo-40512: pymalloc is not compatible with subinterpreters,
|
||||||
|
force usage of libc malloc() which is thread-safe. */
|
||||||
|
#ifdef Py_DEBUG
|
||||||
|
config->allocator = PYMEM_ALLOCATOR_MALLOC_DEBUG;
|
||||||
|
#else
|
||||||
|
config->allocator = PYMEM_ALLOCATOR_MALLOC;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
config->allocator = PYMEM_ALLOCATOR_NOT_SET;
|
config->allocator = PYMEM_ALLOCATOR_NOT_SET;
|
||||||
|
#endif
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
config->legacy_windows_fs_encoding = -1;
|
config->legacy_windows_fs_encoding = -1;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -845,6 +845,7 @@ with_computed_gotos
|
||||||
with_ensurepip
|
with_ensurepip
|
||||||
with_openssl
|
with_openssl
|
||||||
with_ssl_default_suites
|
with_ssl_default_suites
|
||||||
|
with_experimental_isolated_subinterpreters
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
host_alias
|
host_alias
|
||||||
|
@ -1575,6 +1576,9 @@ Optional Packages:
|
||||||
leave OpenSSL's defaults untouched, STRING: use a
|
leave OpenSSL's defaults untouched, STRING: use a
|
||||||
custom string, PROTOCOL_SSLv2 ignores the setting,
|
custom string, PROTOCOL_SSLv2 ignores the setting,
|
||||||
see Doc/library/ssl.rst
|
see Doc/library/ssl.rst
|
||||||
|
--with-experimental-isolated-subinterpreters
|
||||||
|
better isolate subinterpreters, experimental build
|
||||||
|
mode (default is no)
|
||||||
|
|
||||||
Some influential environment variables:
|
Some influential environment variables:
|
||||||
MACHDEP name for machine-dependent library files
|
MACHDEP name for machine-dependent library files
|
||||||
|
@ -17489,6 +17493,30 @@ $as_echo "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# --with-experimental-isolated-subinterpreters
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-experimental-isolated-subinterpreters" >&5
|
||||||
|
$as_echo_n "checking for --with-experimental-isolated-subinterpreters... " >&6; }
|
||||||
|
|
||||||
|
# Check whether --with-experimental-isolated-subinterpreters was given.
|
||||||
|
if test "${with_experimental_isolated_subinterpreters+set}" = set; then :
|
||||||
|
withval=$with_experimental_isolated_subinterpreters;
|
||||||
|
if test "$withval" != no
|
||||||
|
then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; };
|
||||||
|
$as_echo "#define EXPERIMENTAL_ISOLATED_SUBINTERPRETERS 1" >>confdefs.h
|
||||||
|
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; };
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# generate output files
|
# generate output files
|
||||||
ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh"
|
ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh"
|
||||||
|
|
17
configure.ac
17
configure.ac
|
@ -5717,6 +5717,23 @@ AC_MSG_RESULT(python)
|
||||||
AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1)
|
AC_DEFINE(PY_SSL_DEFAULT_CIPHERS, 1)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# --with-experimental-isolated-subinterpreters
|
||||||
|
AH_TEMPLATE(EXPERIMENTAL_ISOLATED_SUBINTERPRETERS,
|
||||||
|
[Better isolate subinterpreters, experimental build mode.])
|
||||||
|
AC_MSG_CHECKING(for --with-experimental-isolated-subinterpreters)
|
||||||
|
AC_ARG_WITH(experimental-isolated-subinterpreters,
|
||||||
|
AS_HELP_STRING([--with-experimental-isolated-subinterpreters],
|
||||||
|
[better isolate subinterpreters, experimental build mode (default is no)]),
|
||||||
|
[
|
||||||
|
if test "$withval" != no
|
||||||
|
then
|
||||||
|
AC_MSG_RESULT(yes);
|
||||||
|
AC_DEFINE(EXPERIMENTAL_ISOLATED_SUBINTERPRETERS)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no);
|
||||||
|
fi],
|
||||||
|
[AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
|
||||||
# generate output files
|
# generate output files
|
||||||
AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh)
|
AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh)
|
||||||
|
|
|
@ -38,6 +38,9 @@
|
||||||
/* Define if --enable-ipv6 is specified */
|
/* Define if --enable-ipv6 is specified */
|
||||||
#undef ENABLE_IPV6
|
#undef ENABLE_IPV6
|
||||||
|
|
||||||
|
/* Better isolate subinterpreters, experimental build mode. */
|
||||||
|
#undef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS
|
||||||
|
|
||||||
/* Define to 1 if your system stores words within floats with the most
|
/* Define to 1 if your system stores words within floats with the most
|
||||||
significant word first */
|
significant word first */
|
||||||
#undef FLOAT_WORDS_BIGENDIAN
|
#undef FLOAT_WORDS_BIGENDIAN
|
||||||
|
|
Loading…
Reference in New Issue