Skip to content

Modernize for Python 3.14.4 and rename to goempy#1

Merged
tamnd merged 5 commits into
mainfrom
modernize-python-3.14
Apr 20, 2026
Merged

Modernize for Python 3.14.4 and rename to goempy#1
tamnd merged 5 commits into
mainfrom
modernize-python-3.14

Conversation

@tamnd
Copy link
Copy Markdown
Owner

@tamnd tamnd commented Apr 20, 2026

Summary

First PR of the tamnd/goempy fork. Brings kluctl/go-embed-python (dormant since Jan 2025) up to Python 3.14 and cleans up the toolchain.

  • Python 3.14.4 via python-build-standalone 20260414 (plus 3.13.3 / 3.12.11 / 3.11.13 / 3.10.17 for compat)
  • Fix Windows 404: PBS dropped the shared- infix, so pc-windows-msvc-shared-pgo-fullpc-windows-msvc-pgo-full. Without this, the release matrix cannot download 3.14 on Windows.
  • Upgrade linux/arm64 to pgo+lto (PBS now ships PGO for aarch64 Linux)
  • Go 1.24, drop sirupsen/logrus → stdlib log/slog
  • pip 25.2 (was 24.3.1), pin setuptools>=75, wheel>=0.45
  • python/generate gains --only-platforms for scoped local builds
  • CI runners bumped: ubuntu-24.04, macos-15, windows-2025
  • Module path github.com/kluctl/go-embed-pythongithub.com/tamnd/goempy
  • README rewritten with supported-platform table, fork rationale, 3.14 focus

Spec: notes/Spec/0900/0967_go_embed_python.md (local)

Test plan

  • go build ./embed_util ./internal ./python/generate ./pip/generate on darwin/arm64
  • go run ./python/generate --python-standalone-version=20260414 --python-version=3.14.4 --only-platforms=darwin/arm64 downloads, extracts, and packs
  • Embedded NewEmbeddedPython runs Python 3.14.4 + OpenSSL 3.5.6 end-to-end
  • go test ./python green against the generated data
  • CI release matrix builds all 5 Python versions × linux/darwin/windows
  • First tagged release v0.0.0-3.14.4-20260414-1

Out of scope (follow-ups)

  • windows/arm64, linux/musl, free-threaded (PEP 703) build axis
  • Switch per-file gzip → zstd in embed_util/packer.go for ~20-30% binary-size reduction
  • Lazy single-blob extract

tamnd added 5 commits April 20, 2026 18:54
- Module path github.com/kluctl/go-embed-python -> github.com/tamnd/goempy
- CI matrix: Python 3.10.17 / 3.11.13 / 3.12.11 / 3.13.3 / 3.14.4
- python-build-standalone 20241219 -> 20260414
- Fix Windows dist triple: pc-windows-msvc-shared-pgo-full -> pc-windows-msvc-pgo-full
  (upstream PBS dropped the shared- infix; unfixed the download 404s on 3.14)
- Upgrade linux/arm64 to pgo+lto (previously lto-only in PBS)
- Go toolchain 1.19 -> 1.24; drop sirupsen/logrus in favor of stdlib log/slog
- pip 24.3.1 -> 25.2; pin setuptools>=75 / wheel>=0.45
- python/generate: --only-platforms flag for scoped local builds
- CI runners: ubuntu-22.04 -> ubuntu-24.04, macos-13 -> macos-15,
  windows-2022 -> windows-2025
- README rewrite with supported-platform table, fork rationale, Python 3.14 focus

Smoke-tested locally on darwin/arm64: Python 3.14.4, OpenSSL 3.5.6, go test ./...
green.
PBS 20260414 ships 3.10.20 / 3.11.15 / 3.12.13 / 3.13.13 / 3.14.4.
My previous pins (3.10.17, 3.11.13, 3.12.11, 3.13.3) were pulled from an
older release and 404 at download time.
The old v0.0.0-<python>-<pbs>-<build> format was inherited from
upstream but it confuses `go get` and Dependabot, and the v0.0.0
prefix signals "this is not a real module" when it actually is one.

Replace it with a normal semver line:

  v0.1.0               primary Python (3.14)
  v0.1.0-py3.13.13     secondary Python lines, valid semver prereleases
  v0.1.0-py3.12.13
  v0.1.0-py3.11.15
  v0.1.0-py3.10.20

`go get @latest` now resolves to the primary tag. Other lines are
pinned explicitly with the full tag.

Library version lives in VERSION, primary Python in PRIMARY_PYTHON.
hack/tag-name.sh computes the right tag; hack/build-tag.sh writes
the chosen tag to a `tag-name` artifact that release.yml reads back
in the release job. next-build-num.sh is gone.
@tamnd tamnd merged commit 60a4a93 into main Apr 20, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant