Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-40514: Add --with-experimental-isolated-subinterpreters #19926

Merged
merged 1 commit into from
May 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Add ``--with-experimental-isolated-subinterpreters`` build option to
``configure``: better isolate subinterpreters, experimental build mode.
10 changes: 10 additions & 0 deletions Python/preconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,17 @@ _PyPreConfig_InitCompatConfig(PyPreConfig *config)
config->coerce_c_locale_warn = 0;

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;
#endif
#ifdef MS_WINDOWS
config->legacy_windows_fs_encoding = -1;
#endif
Expand Down
28 changes: 28 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -845,6 +845,7 @@ with_computed_gotos
with_ensurepip
with_openssl
with_ssl_default_suites
with_experimental_isolated_subinterpreters
'
ac_precious_vars='build_alias
host_alias
Expand Down Expand Up @@ -1575,6 +1576,9 @@ Optional Packages:
leave OpenSSL's defaults untouched, STRING: use a
custom string, PROTOCOL_SSLv2 ignores the setting,
see Doc/library/ssl.rst
--with-experimental-isolated-subinterpreters
better isolate subinterpreters, experimental build
mode (default is no)

Some influential environment variables:
MACHDEP name for machine-dependent library files
Expand Down Expand Up @@ -17489,6 +17493,30 @@ $as_echo "#define PY_SSL_DEFAULT_CIPHERS 1" >>confdefs.h
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
ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh"
Expand Down
17 changes: 17 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -5717,6 +5717,23 @@ AC_MSG_RESULT(python)
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
AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh)
Expand Down
3 changes: 3 additions & 0 deletions pyconfig.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
/* Define if --enable-ipv6 is specified */
#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
significant word first */
#undef FLOAT_WORDS_BIGENDIAN
Expand Down