Henry Schreiner

@henryiii.bsky.social

Princeton RSE. Scikit-HEP, Scikit-build, PyPA/build, PyPA/cibuildwheel, pybind11, CLI11, & plumbum. Also on @henryiii@fosstodon.org and @henryschreiner3 (X).

Scikit-build-core 1.0 is out! Over 90 bugs fixed, great new features (dynamic-metadata, env table, editable & rebuild improvements, force-include, and more!), and over 100 issues closed! Just in time for SIMPLE-Py next week! iscinumpy.dev/post/scikit-...

scikit-build-core 1.0

Scikit-build-core 1.0, the culmination of a four year project to build the best compiled code backend for Python, is out. It’s a huge release, with over 90 bugs fixed, over 40 new features, accounting...

iscinumpy.dev

🎡 cibuildwheel 4.0 is out! 🌟 Pyemscripten (Pyodide on PyPI!) ✨ CPython 3.15(t), incl. iOS & Android 🔐 SHA256 verification 🌟 Windows auto-bundles extension DLLs (delvewheel) 🌟 abi3audit wheel auditing ⚠️ Drops Python 3.8 & much more! iscinumpy.dev/post/cibuild...

🎡 cibuildwheel 4.0

cibuildwheel 4.0.0 is out, with some very big additions. We’ve added pyemscripten 3.13 wheels (uploadable to PyPI!), Python 3.15 (and 3.15t) betas, and much more! We’ve got a new stage: audit, which a...

iscinumpy.dev

Post on my exploration of agentic AI is up! Lots of examples from my 107 PRs made with some AI assistance in the last three months (out of 412). I've included model tags colored by OSS vs. Copilot models. The OpenCode screenshot does light/dark mode. :) iscinumpy.dev/post/startin...

Starting With Agentic AI

AI suddenly passed the “more time saved than spent” point around December 2025. A little late, I’ve finally started using agentic AI in various places over the last 2-3 months, and wanted to jot down ...

iscinumpy.dev

Packaging 26.2 is out! Quick fix for pyemscripen tags, stable and faster pickle support, and a bit of polish. This is the release in pip 26.1, which came out yesterday. It’s our last release to support Python 3.8, we’re a little behind dropping Pythons. github.com/pypa/packagi...

Release 26.2 · pypa/packaging

What's Changed Fixes: Fix incorrect sysconfig var name for pyemscripten by @ryanking13 in #1160 Make Version, Specifier, SpecifierSet, Tag, Marker, and Requirement pickle-safe and backward-compati...

github.com

Packaging 26.1 out! Another huge release, with lots of great stuff, like pyemscripten wheels, free-threading stable ABI, dependency-groups, direct-urls, more pylock, & key for filter. Benchmarking, property-based testing, 2x faster performance in places! github.com/pypa/packagi...

Release 26.1 · pypa/packaging

Features: PEP 783: add handling for Emscripten wheel tags by @hoodmane in #804 PEP 803: add handling for the abi3.abi3t free-threading tag by @ngoldbaum in #1099 PEP 723: add packaging.dependency_...

github.com

I've just released nox 2026.04.10, with --usage (full docstrings), auto-ignored `.nox` folder, and several great fixes, like auto-recreating environment if Python symlinks are broken and `-t` selecting tags from all sessions. Enjoy! github.com/wntrblm/nox/...

Release 2026.04.10 🧹 · wntrblm/nox

This release drops Python 3.8 and adds a --usage command for full docstrings. Our .nox dir is now ignored by default, virtualenvs are recreated if symlinks are broken (such as after a Python upgrad...

github.com

Great release of pip with 26.0! Colorful --help, --requirements-from-script, --uploaded-prior-to, and all the performance optimization work we did on packaging 26.0! New build environment option, too.

On behalf of the packaging maintainers, I’d like to announce packaging 26.0rc1 is out! Please try it out, as it's a huge release. If you'd like to read about the performance work making this the fastest version of packaging ever, see my post: iscinumpy.dev/post/packagi...

How we made Python's packaging library 3x faster

Along with a pip (and now packaging) maintainer, Damian Shaw, I have been working on making packaging, the library behind almost all packaging related tools, faster at reading versions and specifiers,...

iscinumpy.dev

cibuildwheel 3.3 out! Fix for docker 29 changing the capitalization of the version output, but also runner customization (for iOS on GHA macos-15), manylinux_2_35 on armv7l, build[uv] support on Android, removed build-system constraints, and more! github.com/pypa/cibuild...

Release v3.3.0 · pypa/cibuildwheel

🐛 Fix an incompatibility with Docker v29 (#2660) ✨ Adds test-runtime option, to customise how tests on simulated/emulated environments are run (#2636) ✨ Adds support for new manylinux_2_35 images o...

github.com

I've just finished uhi 1.0, following boost-histogram 1.6 and hist 2.9, with support for serializing histograms into JSON/ZIP/HDF5. There's also a new testing helper (libraries implementing UHI can get dozens of tests with a few lines), and much more! iscinumpy.dev/post/uhi-1-0/

UHI 1.0: histogram serialization

UHI 1.0 is out, with a major new feature: a new histogram serialization spec! This spec supports multiple formats (HDF5, zip, and JSON initially), and can be supported by multiple libraries (Boost-his...

iscinumpy.dev

cibuildwheel π is out! (3.1.4). A few nice things, like --clean-cache, Android fixes, and new versions of things like CPython 3.14rc2. Note for iOS on GHA/Azure, you need macOS-14, Microsoft broke macOS-15 images for iOS (WRT CPython's test runner, anyway) github.com/pypa/cibuild...

Release v3.1.4 · pypa/cibuildwheel

✨ Add a --clean-cache command to clean up our cache (#2489) 🛠 Update Python to 3.14rc2 and other patch version bumps (#2542, #2556) 🛠 Update Pyodide to 0.28.2 (#2562, #2558) 🐛 Fix resolution with p...

github.com

PSA: You can't use `pip install -U pip` to upgrade to pip 25.2 on Windows. You have to use `python -m pip install -U pip`. That's always been better, but now the entrypoint scripts were optimized to be faster (I've wanted this for years!), Windows doesn't PIP.EXE modify itself!

We just released cibuildwheel 3.1, which builds Python 3.14/3.14t wheels by default (with yesterday's RC 1)! Also we added Android support, Pyodide 0.28 (3.13), 32-bit modern manylinux, riscv64 defaults, and beautiful new summaries! github.com/pypa/cibuild...

Release v3.1.0 · pypa/cibuildwheel

🌟 CPython 3.14 wheels are now built by default - without the "cpython-prerelease" enable set. It's time to build and upload these wheels to PyPI! This release includes CPython 3.14.0rc1, which is g...

github.com

pybind11 3.0 is out (in time for #scipy2025)! Support for Python 3.14, 3.14t, GraalPy, PyPy 3.11, and iOS have been added. smart-holder merged, native enums, multiphase init, subinterpreters (with per-interp GIL), better typing, C++23, and much more! See iscinumpy.dev/post/pybind1...

pybind11 3.0.0

Pybind11 3.0 has been released! I would like to highlight some of the key changes below; be sure to check out the changelog and upgrade guide for more information! This release includes an ABI bump, t...

iscinumpy.dev

The Scientific-Python Development Guide has been updated with SPDX licenses (PEP 639) and dependency-groups (PEP 735)! There's more uv, too; the cookiecutter/copier template now sets up uv everywhere for ultra fast CI. New repo-review checks, too. learn.scientific-python.org/development/...

Topical Guides

This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.

learn.scientific-python.org