Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
e9d507f
Python 3.15.0b3
skupr-anaconda Jun 25, 2026
078a366
Remove redundant comment
skupr-anaconda Jun 25, 2026
6506b4a
Remove obsolete stuff
skupr-anaconda Jun 30, 2026
4949dba
Add ANACONDA_ROCKET_ENABLE_PY315
skupr-anaconda Jun 30, 2026
633a0fe
Fix 0014 and 0022 patch regressions for Python 3.15.0b3
skupr-anaconda Jun 30, 2026
860da04
Add force_use_keys with gil_type for libpython-static
skupr-anaconda Jun 30, 2026
075ea4d
Regenerated 0022-Unvendor-libmpdec.patch against the file state after…
skupr-anaconda Jun 30, 2026
1ee9ffa
Revert changes in a local cbc.yaml; Regenerated the patch 0022 agains…
skupr-anaconda Jun 30, 2026
ee6df3c
Regenarate the 0014 patch.
skupr-anaconda Jun 30, 2026
c32ba9c
Pin tcl/tk to conda tk 8.6 on win-64
skupr-anaconda Jun 30, 2026
d10d902
win-64: pin Tcl/Tk 8.6 via tcltk.props default in 0014 patch
skupr-anaconda Jul 1, 2026
d4398f3
win-64: pin Tcl/Tk 8.6 in build_base.bat, keep 0014 patch pure-unvendor
skupr-anaconda Jul 1, 2026
a5d1e22
Drive Tcl/Tk version from the tk conda_build_config variant
skupr-anaconda Jul 1, 2026
f1877e0
Add upload_channels to abs.yaml
skupr-anaconda Jul 1, 2026
00abf1a
win-64: use amd64t BUILD_PATH for freethreading staging
skupr-anaconda Jul 1, 2026
342855b
Free-threaded MSBuild output goes to PCbuild\amd64t
skupr-anaconda Jul 1, 2026
44ecbd1
For freethreading only, copy PCbuild\amd64t\python3.dll → %PREFIX%\py…
skupr-anaconda Jul 1, 2026
c9f84de
Fix and improve py315b3 tests
skupr-anaconda Jul 2, 2026
873ba6c
Clean up
skupr-anaconda Jul 2, 2026
7774f28
Use a labeled testing channel
skupr-anaconda Jul 2, 2026
e3f08b6
Fix a labeled testing channel
skupr-anaconda Jul 2, 2026
4e08f3a
Refreash the patch 0016
skupr-anaconda Jul 2, 2026
fe2b513
Fix the label
skupr-anaconda Jul 2, 2026
e867ab7
Add the patch 0023 to link xxlimited* to correct stable ABI DLL on fr…
skupr-anaconda Jul 3, 2026
dc40711
Modify the 0026 patch about deriving the work from the upstream pytho…
skupr-anaconda Jul 6, 2026
3d4d457
Merge branch 'master' into py315b3
skupr-anaconda Jul 8, 2026
3e0d77b
Address review comments
skupr-anaconda Jul 8, 2026
4276b7a
Remove staging py315 specific tests
skupr-anaconda Jul 8, 2026
76da5b2
Add a comment about vs2026
skupr-anaconda Jul 8, 2026
b7ce89a
Win32: fix broken nuget download in find_python.bat.
skupr-anaconda Jul 9, 2026
ffddaff
Win32: use CONDA_PYTHON_EXE instead of nuget for PCbuild.
skupr-anaconda Jul 9, 2026
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
9 changes: 4 additions & 5 deletions README.anaconda.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ plan that you should follow.

**On each supported platform do the following:**

1. Push your newly built python package to our testing channel (`c3i_test2`).
2. Create a new Conda environment using this new python version: `conda create -n test -c c3i_test2 python=VERSION`
3. Make sure interactive python works, and can import some built in modules (`re`, `math`, `os`):
1. Create a new Conda environment using this new python version: `conda create -n test python=VERSION`
2. Make sure interactive python works, and can import some built in modules (`re`, `math`, `os`):
```
$ python -i
Python 3.8.8 (default, Apr 13 2021, 12:59:45)
Expand All @@ -18,5 +17,5 @@ Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>>
```
4. Make sure that the standard http server doesn't throw errors: `python -m http.server --bind 127.0.0.1`
5. `conda-build` a python dependent package with this version of python. Good examples are `pyarrow` or `scipy`.
3. Make sure that the standard http server doesn't throw errors: `python -m http.server --bind 127.0.0.1`
4. `conda-build` a python dependent package with this version of python. Good examples are `pyarrow` or `scipy`.
4 changes: 4 additions & 0 deletions abs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@ build_parameters:
#- "--skip-existing"
- "--error-overlinking"
- "--error-overdepending"

# Upload all testing artifacts on a labeled testing channel: ad-testing/label/py315
upload_channels:
- ad-testing/label/py315

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be possible once this is completed: https://anaconda.atlassian.net/browse/SIR-3519

22 changes: 21 additions & 1 deletion recipe/build_base.bat
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
setlocal EnableDelayedExpansion
echo on

:: Avoids fetching nuget.exe from the internet.
set PYTHON=%CONDA_PYTHON_EXE%

:: Compile python, extensions and external libraries
if "%ARCH%"=="64" (
set PLATFORM=x64
Expand Down Expand Up @@ -48,6 +51,16 @@ if "%PY_GIL_DISABLED%" == "yes" (
set "FREETHREADING=--disable-gil"
set "THREAD=t"
set "EXE_T=%VER%t"
:: Free-threaded MSBuild output goes to PCbuild\amd64t\ (or win32t\), not amd64\.
:: Upstream python.props sets BuildPath=BuildPath64t when DisableGil=true; all
:: exes, .pyd, and .lib artifacts land there. BUILD_PATH below is used to
:: stage those files into %PREFIX% — leaving it at amd64 makes xcopy *.pyd fail
:: with "File not found" even though the compile itself succeeded.
if "%ARCH%"=="64" (
set BUILD_PATH=amd64t
) else (
set BUILD_PATH=win32t
)
) else (
set "FREETHREADING=--experimental-jit-off"
set "THREAD="
Expand All @@ -57,11 +70,18 @@ if "%PY_GIL_DISABLED%" == "yes" (
:: AP doesn't support PGO atm?
set PGO=

:: TODO: remove once tk 9 is available on main
:: Pin Tcl/Tk from the `tk` variant in conda_build_config.yaml (single source of
:: truth, shared with build_base.sh). Upstream 3.15 tcltk.props defaults
:: TclVersion to 9.0.3.0, but pkgs/main only ships tk 8.6; MSBuild derives the
:: lib names (tcl86t.lib/tk86t.lib) from the major.minor of these props.
set TCLTK_MSBUILD_PROPS="/p:TclVersion=%tk%" "/p:TkVersion=%tk%"
Comment thread
skupr-anaconda marked this conversation as resolved.

cd PCbuild

:: Twice because:
:: error : importlib_zipimport.h updated. You will need to rebuild pythoncore to see the changes.
call build.bat %PGO% %CONFIG% %FREETHREADING% -m -e -v -p %PLATFORM%
call build.bat %PGO% %CONFIG% %FREETHREADING% -m -e -v -p %PLATFORM% %TCLTK_MSBUILD_PROPS%
if errorlevel 1 exit 1
cd ..

Expand Down
7 changes: 4 additions & 3 deletions recipe/build_base.sh
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ _common_configure_args+=(--with-computed-gotos)
_common_configure_args+=(--with-system-expat)
_common_configure_args+=(--enable-loadable-sqlite-extensions)
_common_configure_args+=(--with-tcltk-includes="-I${PREFIX}/include")
_common_configure_args+=("--with-tcltk-libs=-L${PREFIX}/lib -ltcl8.6 -ltk8.6")
_common_configure_args+=("--with-tcltk-libs=-L${PREFIX}/lib -ltcl${TCLTK_VER} -ltk${TCLTK_VER}")
_common_configure_args+=(--with-platlibdir=lib)
_common_configure_args+=(--with-system-libmpdec=yes)

Expand Down Expand Up @@ -416,10 +416,11 @@ if [[ -f ${PREFIX}/bin/python${VER}m ]]; then
fi
ln -s ${PREFIX}/bin/python${VER} ${PREFIX}/bin/python
ln -s ${PREFIX}/bin/pydoc${VER} ${PREFIX}/bin/pydoc
# TODO: It's still relevant for python 3.10. Consider removing this once we drop 3.10.
# Workaround for https://github.com/conda/conda/issues/10969 -
# specifically for conda<=4.10
# https://github.com/conda/conda/issues/11423#issuecomment-1104253815
ln -s ${PREFIX}/bin/python3.14 ${PREFIX}/bin/python3.1
ln -s ${PREFIX}/bin/python${VER} ${PREFIX}/bin/python3.1
Comment thread
skupr-anaconda marked this conversation as resolved.

# Remove test data to save space
# Though keep `support` as some things use that.
Expand Down Expand Up @@ -480,7 +481,7 @@ pushd "${PREFIX}"/lib/python${VERABI}
# Remove osx sysroot as it depends on the build machine
sed -i.bak "s@-isysroot @@g" sysconfigfile
# make sure $CONDA_BUILD_SYSROOT is not empty ...
if [[ ${HOST} =~ .*darwin.* ]] && [[ -n ${CONDA_BUILD_SYSROOT} ]]; then
if [[ ${HOST} =~ .*darwin.* ]] && [[ -n ${CONDA_BUILD_SYSROOT} ]]; then
sed -i.bak "s@$CONDA_BUILD_SYSROOT @@g" sysconfigfile
fi
# Remove unfilled config option
Expand Down
16 changes: 13 additions & 3 deletions recipe/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
python:
- 3.14
- 3.15
python_impl:
- cpython
numpy:
- 2.3
- 2.5
gil_type:
- normal
# Will be enabled as part of https://anaconda.atlassian.net/browse/PKG-5855
- disabled # [not (s390x or (osx and x86_64))]
- disabled

# TODO: Windows tail-calling interpreter: 64-bit builds with Visual Studio 2026 (MSVC 18) can now use the tail-call interpreter (reported ~15–20% speedup).
# Official python.org Windows binaries now use it.
# We should consider adding vs2026 and use it for later builds.
# c_compiler: # [win]
# - vs2026 # [win]
# c_stdlib_version: # [win]
# - 2026.1 # [win]
# cxx_compiler: # [win]
# - vs2026 # [win]
17 changes: 10 additions & 7 deletions recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% set version = "3.14.6" %}
{% set dev = "" %}
{% set version = "3.15.0" %}
{% set dev = "b3" %}
{% set dev_ = "" %}
{% set ver2 = '.'.join(version.split('.')[0:2]) %}
{% set ver2nd = ''.join(version.split('.')[0:2]) %}
Expand Down Expand Up @@ -61,7 +61,7 @@ source:
{% else %}
- url: https://www.python.org/ftp/python/{{ version }}/Python-{{ version }}{{ dev }}.tar.xz
# md5 from: https://www.python.org/downloads/release/python-{{ ver3nd }}/
sha256: 143b1dddefaec3bd2e21e3b839b34a2b7fb9842272883c576420d605e9f30c63
sha256: 6a935ae234a67e6549894373b0cfeb8361182d03b21442328ae9598ab7422127
{% endif %}
patches:
- patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch
Expand Down Expand Up @@ -93,6 +93,7 @@ source:
- patches/0023-branding.patch
- patches/0024-Unvendor-zlib-ng.patch
- patches/0025-Unvendor-zstd.patch
- patches/0026-xxlimited-freethreading-stable-abi-link.patch # [win]

build:
number: {{ build_number }}
Expand Down Expand Up @@ -193,10 +194,10 @@ outputs:
{% endif %}
# https://github.com/python/cpython/blob/main/Tools/jit/README.md#installing-llvm:
# "LLVM version 21 is the officially supported version"
- clang-19 # [not win]
- llvm-tools-19 # [not win]
- clang 19.* # [win]
- llvm-tools 19.* # [win]
- clang-21 # [not win]
- llvm-tools-21 # [not win]
- clang 21.* # [win]
- llvm-tools 21.* # [win]
host:
- bzip2 {{ bzip2 }}
- sqlite {{ sqlite }}
Expand Down Expand Up @@ -312,6 +313,8 @@ outputs:
script: build_static.bat # [win]
build:
number: {{ build_number }}
force_use_keys:
- gil_type
activate_in_script: true
ignore_run_exports:
- python_abi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From 285d30e99ac555177c551c112798cc79720f676e Mon Sep 17 00:00:00 2001
From f43869001705b6d14f777f1bdb7a6d53dd4edd96 Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Wed, 16 Aug 2017 11:53:55 +0100
Subject: [PATCH 01/24] Win32: Change FD_SETSIZE from 512 to 2048
Expand All @@ -9,10 +9,10 @@ https://github.com/ContinuumIO/anaconda-issues/issues/1241
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index d234d504cb5..3856307c611 100644
index 2c56dbc6a54..845ff4732ca 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -44,7 +44,7 @@
@@ -45,7 +45,7 @@
FD_SETSIZE higher before this; e.g., via compiler /D switch.
*/
#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
Expand All @@ -22,5 +22,5 @@ index d234d504cb5..3856307c611 100644

#if defined(HAVE_POLL_H)
--
2.50.1 (Apple Git-155)
2.51.0

12 changes: 6 additions & 6 deletions recipe/patches/0002-Win32-Do-not-download-externals.patch
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From 2e62556e56120f7b6d15ba97fdf8733deebb9ea9 Mon Sep 17 00:00:00 2001
From 1faa47b5f8c0ca3aa98ee0e3bb317106458bd514 Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Thu, 7 Sep 2017 11:35:47 +0100
Subject: [PATCH 02/24] Win32: Do not download externals
Expand All @@ -8,18 +8,18 @@ Subject: [PATCH 02/24] Win32: Do not download externals
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/PCbuild/build.bat b/PCbuild/build.bat
index 60235704886..867a352057f 100644
index 9d2f032f5a9..f0629639913 100644
--- a/PCbuild/build.bat
+++ b/PCbuild/build.bat
@@ -113,7 +113,7 @@ if "%IncludeSSL%"=="" set IncludeSSL=true
@@ -118,7 +118,7 @@ if "%IncludeSSL%"=="" set IncludeSSL=true
if "%IncludeTkinter%"=="" set IncludeTkinter=true
if "%UseJIT%" NEQ "true" set IncludeLLVM=false

-if "%IncludeExternals%"=="true" call "%dir%get_externals.bat"
+rem if "%IncludeExternals%"=="true" call "%dir%get_externals.bat"

if "%do_pgo%" EQU "true" if "%platf%" EQU "x64" (
if "%PROCESSOR_ARCHITEW6432%" NEQ "AMD64" if "%PROCESSOR_ARCHITECTURE%" NEQ "AMD64" (
if /I "%target%"=="Clean" set clean=true
if /I "%target%"=="CleanAll" set clean=true
Comment thread
ifitchet marked this conversation as resolved.
--
2.50.1 (Apple Git-155)
2.51.0

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From c48a3c1cc321e00bd361f5fce271a18c03c4a202 Mon Sep 17 00:00:00 2001
From 054ec3e5926c29850db8d0cae3aaebc2670bfccb Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Tue, 5 Dec 2017 22:47:59 +0000
Subject: [PATCH 03/24] Fix find_library so that it looks in sys.prefix/lib
Expand All @@ -25,10 +25,10 @@ index 583c47daff3..ab9b01c87e2 100644
yield os.path.join(executable_path, name[len('@executable_path/'):])

diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
index 378f12167c6..bf45580ab9f 100644
index 35ac5b6bfd6..09c3e1703dc 100644
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -129,7 +129,8 @@ def dllist():
@@ -136,7 +136,8 @@ def dllist():
elif os.name == "posix" and sys.platform in {"darwin", "ios", "tvos", "watchos"}:
from ctypes.macholib.dyld import dyld_find as _dyld_find
def find_library(name):
Expand All @@ -38,7 +38,7 @@ index 378f12167c6..bf45580ab9f 100644
'%s.dylib' % name,
'%s.framework/%s' % (name, name)]
for name in possible:
@@ -430,10 +431,30 @@ def _findLib_ld(name):
@@ -437,10 +438,30 @@ def _findLib_ld(name):
pass # result will be None
return result

Expand Down Expand Up @@ -72,5 +72,5 @@ index 378f12167c6..bf45580ab9f 100644

# Listing loaded libraries on other systems will try to use
--
2.50.1 (Apple Git-155)
2.51.0

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
From 4435da9460f82ce6c96c4b92f58eab6edfc90da1 Mon Sep 17 00:00:00 2001
From 41b486c6f4a3028836368f79711da6f5934f9386 Mon Sep 17 00:00:00 2001
From: Ray Donnelly <mingw.android@gmail.com>
Date: Sat, 27 Oct 2018 18:48:30 +0100
Subject: [PATCH 04/24] Disable registry lookup unless CONDA_PY_ALLOW_REG_PATHS
Expand All @@ -25,7 +25,7 @@ index 1e75993480a..ff96c8e1990 100644
!progname_to_dict(dict, "real_executable") ||
!library_to_dict(dict, "library") ||
diff --git a/Modules/getpath.py b/Modules/getpath.py
index b89d7427e3f..21df0efac12 100644
index 6199567bd77..ea370c2f686 100644
--- a/Modules/getpath.py
+++ b/Modules/getpath.py
@@ -52,6 +52,7 @@
Expand All @@ -36,9 +36,9 @@ index b89d7427e3f..21df0efac12 100644

# ** Values calculated at runtime **
# config -- [in/out] dict of the PyConfig structure
@@ -704,7 +705,7 @@ def search_up(prefix, *landmarks, test=isfile):
else:
pythonpath.append(joinpath(base_prefix, ZIP_LANDMARK))
@@ -699,7 +700,7 @@ def search_up(prefix, *landmarks, test=isfile):
stdlib_zip = joinpath(base_prefix, ZIP_LANDMARK)
pythonpath.append(stdlib_zip)

- if os_name == 'nt' and use_environment and winreg:
+ if os_name == 'nt' and use_environment and winreg and ENV_CONDA_PY_ALLOW_REG_PATHS and ENV_CONDA_PY_ALLOW_REG_PATHS != '0':
Expand Down Expand Up @@ -1197,5 +1197,5 @@ index 00000000000..a73ea8a0e91
+ return hPython3 != NULL;
+}
--
2.50.1 (Apple Git-155)
2.51.0

Loading