Skip to content

gh-139922: always run MSVC 64-bit tail-calling CI#146570

Merged
Fidget-Spinner merged 6 commits intopython:mainfrom
chris-eibl:msvc_ci
Mar 30, 2026
Merged

gh-139922: always run MSVC 64-bit tail-calling CI#146570
Fidget-Spinner merged 6 commits intopython:mainfrom
chris-eibl:msvc_ci

Conversation

@chris-eibl
Copy link
Copy Markdown
Member

@chris-eibl chris-eibl commented Mar 28, 2026

And not only for the paths in

paths: &paths
- '.github/workflows/tail-call.yml'
- 'Python/bytecodes.c'
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
- 'Python/generated_cases.c.h'

@chris-eibl chris-eibl changed the title always run MSVC 64-bit tail-calling CI gh-139922: always run MSVC 64-bit tail-calling CI Mar 28, 2026
@Fidget-Spinner
Copy link
Copy Markdown
Member

Just checking: we should not ditch the old switch-case interpreter in the CI. Does this PR do that?

@chris-eibl
Copy link
Copy Markdown
Member Author

No, it keeps all the previous jobs and just adds the MSVC x64 tc and tc + free threaded builds (and now tests the latter one, which it did not previously).

@chris-eibl
Copy link
Copy Markdown
Member Author

Pulling in main, hopefully will build everything now ...

@chris-eibl
Copy link
Copy Markdown
Member Author

chris-eibl commented Mar 28, 2026

Great, now it seems to work. No idea what happened before.

Just checking: we should not ditch the old switch-case interpreter in the CI. Does this PR do that?

The "old" ones are now marked with "regular", and the "tail-call" builds are the new ones:
image

@chris-eibl
Copy link
Copy Markdown
Member Author

Ha, the funny thing is: the tc builds are already done, while the regular ones are still building.

Maybe because they are release builds and even though building takes longer, the tests run faster ...

Copy link
Copy Markdown
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

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

This means we're testing Windows tail-calling more often than before, but we will be releasing in the official Windows installer for 3.15, so I think it's important to keep a closer eye on it.

Before, only if any of 5 .c/.h/.yml files changed:

  • Windows tail-calling: build + test
  • Windows tail-calling free-threaded: build only

Now, based on broader file change detection:

  • Windows tail-calling: build + test
  • Windows tail-calling free-threaded: build + test

But as noted, the tail-call jobs are quick: 5m build + 6m test = 11m total each. The other Windows are 17m-26m each:

Image

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
@chris-eibl
Copy link
Copy Markdown
Member Author

Ups, pressed too fast, will do the other occurrences, soon.

@chris-eibl
Copy link
Copy Markdown
Member Author

Maybe because they are release builds and even though building takes longer, the tests run faster ...

But as noted, the tail-call jobs are quick: 5m build + 6m test = 11m total each. The other Windows are 17m-26m each

Yeah, for example x64 switch case: 2m 9s build + 17m 6s test.

So in case we want faster CI, we can convert some other configurations to release. Then we have also more coverage on that build type wrt mostly using debug ...

Copy link
Copy Markdown
Member

@webknjaz webknjaz left a comment

Choose a reason for hiding this comment

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

LGTM with a few optional suggestions.

chris-eibl and others added 2 commits March 28, 2026 22:50
Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <wk.cvs.github@sydorenko.org.ua>
@Fidget-Spinner Fidget-Spinner merged commit 76c554b into python:main Mar 30, 2026
65 of 66 checks passed
@chris-eibl chris-eibl deleted the msvc_ci branch March 30, 2026 14:29
maurycy added a commit to maurycy/cpython that referenced this pull request Mar 30, 2026
…ktor

* upstream/main: (119 commits)
  pythongh-144270: Make SubElement parent and tag positional-only (pythonGH-144845)
  pythongh-146558: JIT optimize dict access for objects with known hash (python#146559)
  pythongh-139922: always run MSVC 64-bit tail-calling CI (pythonGH-146570)
  pythongh-126835: Fix _PY_IS_SMALL_INT() macro (python#146631)
  pythongh-146587: fix type slot assignment incase of multiple slots for same name (python#146593)
  pythongh-138122: Add differential flame graph (python#145785)
  pythongh-146416: Emscripten: Improve standard stream handling in node_entry.mjs (python#146417)
  pythongh-146444: Don't package as part of iOS 'build hosts' target (python#146628)
  pythongh-138850: Add --disable-epoll to configure (pythonGH-145768)
  pythongh-146444: Make Platforms/Apple/ compatible with Python 3.9 (python#146624)
  pythongh-138577: Fix keyboard shortcuts in getpass with echo_char (python#141597)
  pythongh-146556: Fix infinite loop in annotationlib.get_annotations() on circular __wrapped__ (python#146557)
  pythongh-146579: _zstd: Fix decompression options dict error message (python#146577)
  pythongh-146083: Upgrade bundled Expat to 2.7.5 (python#146085)
  pythongh-146080: fix a crash in SNI callbacks when the SSL object is gone (python#146573)
  pythongh-146090: fix memory management of internal `sqlite3` callback contexts (python#146569)
  pythongh-145876: Do not mask KeyErrors raised during dictionary unpacking in call (pythonGH-146472)
  pythongh-146004: fix test_args_from_interpreter_flags on windows (python#146580)
  pythongh-139003: Use frozenset for module level attributes in _pyrepl.utils (python#139004)
  pythonGH-146527: Add more data to GC statistics and add it to PyDebugOffsets (python#146532)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants