summaryrefslogtreecommitdiffstats
path: root/configure
Commit message (Collapse)AuthorAgeFilesLines
* gh-101282: Apply BOLT optimizations to libpython for shared builds (#104709)Gregory Szorc2023-05-221-108/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Apply BOLT optimizations to libpython for shared builds. Most of the C code is in libpython so it is critical to apply BOLT there fully realize BOLT benefits. This change also reworks how BOLT instrumentation is applied. It effectively removes the readelf based logic added in gh-101525 and replaces it with a mechanism that saves a copy of the pre-bolt binary and restores that copy when necessary. This allows us to perform BOLT optimizations without having to manually delete the output binary to force a new bolt run. Also: - add a clean-bolt target for purging BOLT files and hook that up to the clean target - .gitignore BOLT related files Before and after this refactor, `make` will no-op after a previous run. Both versions should also share common make DAG deficiencies where targets fail to trigger as often as they need to or can trigger prematurely in certain scenarios. e.g. after this change you may need to `rm profile-bolt-stamp` to force a BOLT run because there aren't appropriate non-phony targets for BOLT's make target to depend on. To make it easier to iterate on custom BOLT settings, the flags to pass to instrumentation and application are now defined in configure and can be overridden by passing BOLT_INSTRUMENT_FLAGS and BOLT_APPLY_FLAGS.
* gh-104487: PYTHON_FOR_REGEN must be minimum Python 3.10 (#104488)Erlend E. Aasland2023-05-151-1/+1
| | | Also include Python 3.12 in the list of accepted versions.
* gh-101282: move BOLT config after PGO (gh-104493)Gregory Szorc2023-05-151-180/+180
|
* gh-90656: Add platform triplets for 64-bit LoongArch (LA64) (#30939)Zhang Na2023-05-091-0/+14
| | | | Signed-off-by: Zhang Na <zhangna@loongson.cn> Co-authored-by: WANG Xuerui <git@xen0n.name>
* gh-103509: PEP 697 -- Limited C API for Extending Opaque Types (GH-103511)Petr Viktorin2023-05-041-0/+35
| | | | Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-101525: Fix make test if the --enable-bolt enabled (gh-103574)Dong-hee Na2023-04-171-0/+108
|
* gh-103326: Remove `Python/importlib.h` (GH-103331)Nikita Sobolev2023-04-121-1/+0
| | | | Co-authored-by: Brett Cannon <brett@python.org> Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
* gh-96821: Add config option `--with-strict-overflow` (#96823)Matthias Görgens2023-03-041-9/+69
| | | | | | Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> Co-authored-by: Shantanu <hauntsaninja@gmail.com>
* gh-99108: Import MD5 and SHA1 from HACL* (#102089)Jonathan Protzenko2023-02-221-2/+2
| | | Replaces our fallback non-OpenSSL MD5 and SHA1 implementations with those from HACL* as we've already done with SHA2.
* gh-99942: correct the pkg-config/python-config flags for cygwin/androidEli Schwartz2023-02-161-1/+1
|
* gh-99108: Refactor _sha256 & _sha512 into _sha2. (#101924)Gregory P. Smith2023-02-161-69/+27
| | | | | | | | | This merges their code. They're backed by the same single HACL* static library, having them be a single module simplifies maintenance. This should unbreak the wasm enscripten builds that currently fail due to linking in --whole-archive mode and the HACL* library appearing twice. Long unnoticed error fixed: _sha512.SHA384Type was doubly assigned and was actually SHA512Type. Nobody depends on those internal names. Also rename LIBHACL_ make vars to LIBHACL_SHA2_ in preperation for other future HACL things.
* gh-99108: Import SHA2-384/512 from HACL* (#101707)Jonathan Protzenko2023-02-141-1/+1
| | | | | | Replace the builtin hashlib implementations of SHA2-384 and SHA2-512 originally from LibTomCrypt with formally verified, side-channel resistant code from the [HACL*](https://github.com/hacl-star/hacl-star/) project. The builtins remain a fallback only used when OpenSSL does not provide them.
* gh-92547: Purge sqlite3_enable_shared_cache() detection from configure (#101873)Erlend E. Aasland2023-02-131-51/+0
|
* gh-99108: Replace SHA2-224 & 256 with verified code from HACL* (#99109)Jonathan Protzenko2023-02-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | replacing hashlib primitives (for the non-OpenSSL case) with verified implementations from HACL*. This is the first PR in the series, and focuses specifically on SHA2-256 and SHA2-224. This PR imports Hacl_Streaming_SHA2 into the Python tree. This is the HACL* implementation of SHA2, which combines a core implementation of SHA2 along with a layer of buffer management that allows updating the digest with any number of bytes. This supersedes the previous implementation in the tree. @franziskuskiefer was kind enough to benchmark the changes: in addition to being verified (thus providing significant safety and security improvements), this implementation also provides a sizeable performance boost! ``` --------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------- Sha2_256_Streaming 3163 ns 3160 ns 219353 // this PR LibTomCrypt_Sha2_256 5057 ns 5056 ns 136234 // library used by Python currently ``` The changes in this PR are as follows: - import the subset of HACL* that covers SHA2-256/224 into `Modules/_hacl` - rewire sha256module.c to use the HACL* implementation Co-authored-by: Gregory P. Smith [Google LLC] <greg@krypto.org> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-101524: Split Up the _xxsubinterpreters Module (gh-101526)Eric Snow2023-02-041-0/+27
| | | | | This is step 1 in potentially dropping all the "channel"-related code. Channels have already been removed from PEP 554. https://github.com/python/cpython/issues/101524
* gh-101278: Drop -gdwarf-4 flag from the BOLT build (gh-101280)Dong-hee Na2023-01-241-3/+0
|
* gh-101060: conditionally add `-fno-reorder-blocks-and-partition` (gh-101061)Gregory Szorc2023-01-241-1/+40
|
* gh-101047: Remove vestigial references to macOS libtool options (gh-101048)Gregory Szorc2023-01-221-93/+0
| | | | LIBTOOL_CRUFT and OTHER_LIBTOOL_OPT variables have been unused since commit 19199830f7f880b1e9cff5d92d30706fd8bb4700 in 2011.
* gh-100340: Allows -Wno-int-conversion for wasm (#100341)Kushal Das2023-01-181-0/+38
| | | Fixes #100340 allows -Wno-int-conversion for wasm
* gh-98636: Fix detecting gdbm_compat for _dbm module (#98643)Michał Górny2023-01-111-1/+4
| | | | | | Fix the gdbm_compat library detection logic to actually check for -lgdbm_compat independently of the ndbm detection. This fixes the build failure with `--with-dbmliborder=gdbm`, and implicit fallback to ndbm with the default value.
* gh-86082: bpo-41916: allow cross-compiled python to have -pthread set for ↵Dustin Spicuzza2023-01-051-3/+10
| | | | | | | CXX (#22525) When cross-compiling, the compile/run test for -pthread always fails so -pthread will never be automatically set without an override from the cache. ac_cv_pthread can already be overridden, so do the same thing for ac_cv_cxx_thread.
* gh-100540: Remove obsolete Modules/_ctypes/darwin/ dlfcn shim (GH-100541)Zachary Ware2022-12-291-2/+1
| | | As far as I can tell, this hasn't been actually used since Mac OS X 10.2.
* gh-100540: Remove obsolete '--with-system-ffi' configure option (GH-100544)Zachary Ware2022-12-281-109/+65
| | | | | It has had no effect on non-macOS platforms for a long time, and has had the non-obvious effect of invoking `pkg_config` and not setting `-DUSING_APPLE_OS_LIBFFI` on macOS since GH-22855.
* gh-100540: Remove unnecessary '-DMACOSX' for ctypes on macOS (GH-100542)Zachary Ware2022-12-281-1/+1
| | | | The define was only used to protect a `#pragma clang diagnostic` setting, which is already better guarded by `__clang__` anwyay.
* gh-99086: Fix -Wstrict-prototypes, -Wimplicit-function-declaration warnings ↵Sam James2022-11-261-24/+28
| | | | | | | in configure.ac (#99406) Follow up to 12078e78f6e4a21f344e4eaff529e1ff3b97734f.
* gh-96002: Add functional test for Argument Clinic (#96178)colorfulappl2022-11-211-0/+40
| | | | Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-98707: configure --with-system-libmpdec and --with-system-expat no longer ↵Miro Hrončok2022-11-111-2/+2
| | | | include vendored headers (#98711)
* gh-95389: expose popular ETHERTYPE_* constants in the socket module (#95390)Noam Cohen2022-11-071-1/+1
| | | | Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM>
* gh-99086: Fix implicit int compiler warning in configure check for ↵Sam James2022-11-051-1/+1
| | | | PTHREAD_SCOPE_SYSTEM (#99085)
* gh-98948: Remove obsolete readelf dependency (#98949)serge-sans-paille2022-11-031-112/+0
| | | | | This got introduced in commit 5884449539510313c826d69835829c7957c7154a to determine if readline is already linked against curses or tinfo in the setup.py, which is no longer present.
* gh-98989: configure: add 3.11 to list of Pythons (#98988)Jelle Zijlstra2022-11-021-1/+1
| | | | | Closes #98989 Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
* gh-96143: Move the perf trampoline files to the Python directory (#98675)Pablo Galindo Salgado2022-10-251-1/+1
|
* gh-95023: Added os.setns and os.unshare functions (#95046)Noam Cohen2022-10-201-0/+14
| | | | | | | | Added os.setns and os.unshare to easily switch between namespaces on Linux. Co-authored-by: Christian Heimes <christian@python.org> Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM> Co-authored-by: Victor Stinner <vstinner@python.org>
* gh-96761: Fix build process of the clang compiler for _bootstrap_python ↵Dong-hee Na2022-09-231-2/+37
| | | | | (gh-96945) Co-authored-by: Matthias Goergens <matthias.goergens@gmail.com>
* gh-89536: Use ThinLTO policy if possible (gh-96766)Dong-hee Na2022-09-161-3/+79
|
* gh-84461: Omit resource mod and getresuid funcs on Emscripten (GH-96303)Christian Heimes2022-09-111-2/+1
|
* gh-96143: Allow Linux perf profiler to see Python calls (GH-96123)Pablo Galindo Salgado2022-08-301-0/+30
| | | | | | | :warning: :warning: Note for reviewers, hackers and fellow systems/low-level/compiler engineers :warning: :warning: If you have a lot of experience with this kind of shenanigans and want to improve the **first** version, **please make a PR against my branch** or **reach out by email** or **suggest code changes directly on GitHub**. If you have any **refinements or optimizations** please, wait until the first version is merged before starting hacking or proposing those so we can keep this PR productive.
* gh-96191: Update the configure file to use GitHub issue (gh-96211)Dong-hee Na2022-08-291-12/+12
|
* gh-95973: Add a new --with-dsymutil option to link debug information in ↵Pablo Galindo Salgado2022-08-271-3/+83
| | | | | macOS (GH-95974) Automerge-Triggered-By: GH:pablogsal
* gh-95853: WASM: better version and asset handling in scripts (GH-96045)Christian Heimes2022-08-191-1/+1
| | | | | - support EMSDK tot-upstream and git releases - allow WASM assents for wasm64-emscripten and WASI. This makes single file distributions on WASI easier. - decouple WASM assets from browser builds
* gh-90536: Add support for the BOLT post-link binary optimizer (gh-95908)Kevin Modzelewski2022-08-181-0/+261
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add support for the BOLT post-link binary optimizer Using [bolt](https://github.com/llvm/llvm-project/tree/main/bolt) provides a fairly large speedup without any code or functionality changes. It provides roughly a 1% speedup on pyperformance, and a 4% improvement on the Pyston web macrobenchmarks. It is gated behind an `--enable-bolt` configure arg because not all toolchains and environments are supported. It has been tested on a Linux x86_64 toolchain, using llvm-bolt built from the LLVM 14.0.6 sources (their binary distribution of this version did not include bolt). Compared to [a previous attempt](https://github.com/faster-cpython/ideas/issues/224), this commit uses bolt's preferred "instrumentation" approach, as well as adds some non-PIE flags which enable much better optimizations from bolt. The effects of this change are a bit more dependent on CPU microarchitecture than other changes, since it optimizes i-cache behavior which seems to be a bit more variable between architectures. The 1%/4% numbers were collected on an Intel Skylake CPU, and on an AMD Zen 3 CPU I got a slightly larger speedup (2%/4%), and on a c6i.xlarge EC2 instance I got a slightly lower speedup (1%/3%). The low speedup on pyperformance is not entirely unexpected, because BOLT improves i-cache behavior, and the benchmarks in the pyperformance suite are small and tend to fit in i-cache. This change uses the existing pgo profiling task (`python -m test --pgo`), though I was able to measure about a 1% macrobenchmark improvement by using the macrobenchmarks as the training task. I personally think that both the PGO and BOLT tasks should be updated to use macrobenchmarks, but for the sake of splitting up the work this PR uses the existing pgo task. * Simplify the build flags * Add a NEWS entry * Update Makefile.pre.in Co-authored-by: Dong-hee Na <donghee.na92@gmail.com> * Update configure.ac Co-authored-by: Dong-hee Na <donghee.na92@gmail.com> * Add myself to ACKS * Add docs * Other review comments * fix tab/space issue * Make it more clear that --enable-bolt is experimental * Add link to bolt's github page Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
* gh-95853: Add script to automate WASM build (GH-95828)Christian Heimes2022-08-131-5/+161
| | | | | | | | | | | | Automate WASM build with a new Python script. The script provides several build profiles with configure flags for Emscripten flavors and WASI. The script can detect and use Emscripten SDK and WASI SDK from default locations or env vars. ``configure`` now detects Node arguments and creates HOSTRUNNER arguments for Node 16. It also sets correct arguments for ``wasm64-emscripten``. Co-authored-by: Brett Cannon <brett@python.org>
* gh-93744: Remove configure --with-cxx-main option (#95651)Victor Stinner2022-08-051-35/+1
| | | | | | | | | | | | Remove the "configure --with-cxx-main" build option: it didn't work for many years. Remove the MAINCC variable from configure and Makefile. The MAINCC variable was added by the issue gh-42471: commit 0f48d98b740110a672b62d467af192ec160e56ba. Previously, --with-cxx-main was named --with-cxx. Keep CXX and LDCXXSHARED variables, even if they are no longer used by Python build system.
* gh-95174: Add pthread stubs for WASI (GH-95234)Christian Heimes2022-07-271-1/+14
| | | Co-authored-by: Brett Cannon <brett@python.org>
* gh-95174: WASI: skip missing sockets functions (GH-95179)Christian Heimes2022-07-271-3/+636
|
* gh-95085: Promote Emscripten and WASI to PEP 11 tier 3 (GH-95086)Christian Heimes2022-07-271-1/+5
|
* gh-94801: Fix regression in configure's CPPFLAGS handling (GH-95288)Christian Heimes2022-07-261-20/+20
|
* gh-95174: Handle missing dup() and constants in WASI (GH-95229)Christian Heimes2022-07-261-1/+1
| | | | | | | - check for ``dup()`` libc function - handle missing ``F_DUPFD`` in ``dup2()`` replacement function - add workaround for WASI libc bug in MSG_TRUNC - ESHUTDOWN is missing, use EPIPE instead - POLLPRI is missing, define as 0 (no-op)
* gh-94847: Don't force inlining in debug builds of libmpdec (GH-94848)Christian Heimes2022-07-181-0/+6
|
* gh-94801: Use custom flags to check for headers and libs (#94802)Christian Heimes2022-07-151-257/+317
|