Talks - Henry Fredrick Schreiner III: Modern binary build systems

Learn how modern Python packaging leverages standardized build backends, scikit-build-core, and cross-platform tools to simplify binary package distribution and development.

Key takeaways
  • Modern Python packaging now has standardized build backends via PEP 517, replacing the older setup.py approach

  • Key build tools include:

    • scikit-build-core for CMake-based builds
    • Maturin for Rust-based packages
    • Meson-python for Meson build system integration
  • scikit-build-core features:

    • Over 40 configuration options in pyproject.toml
    • Plugin system for extending functionality
    • Support for editable installs
    • CMake-based builds with minimal configuration
    • Dynamic metadata generation capabilities
  • Cross-platform binary wheel building is supported through:

    • cibuildwheel for automated builds across platforms
    • Conda package integration
    • Support for Apple Silicon and multiple Python versions
  • Recent improvements in Python packaging:

    • Stable ABI support for Python 3.12+
    • Better handling of dependencies
    • Standardized metadata handling
    • Support for free-threaded Python
    • Schema validation for pyproject.toml
  • Build system integration:

    • Direct support for CMake projects
    • Ability to build executables and extensions
    • Integration with modern IDEs
    • Support for shipping binary dependencies
  • Ecosystem improvements:

    • Reduced boilerplate compared to distutils/setuptools
    • Better integration with package managers
    • Standardized configuration through pyproject.toml
    • Growing adoption in scientific Python community