Python is the most popular language in the sciences, and compiled extensions for it are at the core of almost all scientific packages for Python. The process to build an extension has traditionally been complex. Even a simple extension is challenging and making a complex extension like NumPy requires thousands of lines of code just for compilation. Scikit-build provides access to CMake, the most popular and powerful build system for compiled languages, for Python users in a native and natural way. Scikit-build is being redesigned on top of standardized packaging procedures that were not yet written when scikit-build was started in 2014. This will establish Scikit-build as the reference scientific Python community solution for the future, as well as provide many new features to users, including much simpler configuration, much better stability, cross-platform compilation, and much more. A collection of popular scientific libraries are adapting the new Scikit-build core infrastructure and providing feedback on what features need to be made available. Extensive tutorials, examples, and training sessions are being held during the course of the project to make binary extensions available to far more users than ever before.
Scikit-build was designed as a wrapper around distutils, the standard library package for building extensions, which was the only option in 2014. It is being rewritten on published PEPs (Python Enhancement Proposals) to avoid usage of distutils before distutils is removed in 2023 in Python 3.12. The rewritten Scikit-build will also provide a configuration system that conforms to modern best practices, an improved developer experience, and increased stability by avoiding the fragile distutils private internals. New features include a new library discovery system integrated with CMake to make reusable compiled libraries shareable through Python distribution channels like PyPI and conda-forge, cached builds, better CUDA and Fortran support, cross-compilation, and more. Scikit-build is collaborating with NumPy and SciPy on documentation, US-RSE for tutorials and workshops, and RAPIDS, PyArrow, PySTAN, Awkward Array, ITK, 3D Slicer, CERN ROOT, ATLAS, OSQP, and Bézier for initial integration and testing of Scikit-Build's redesigned infrastructure.
Scikit-build was designed as a wrapper around distutils, the standard library package for building extensions, which was the only option in 2014. It is being rewritten on published PEPs (Python Enhancement Proposals) to avoid usage of distutils before distutils is removed in 2023 in Python 3.12. The rewritten Scikit-build will also provide a configuration system that conforms to modern best practices, an improved developer experience, and increased stability by avoiding the fragile distutils private internals. New features include a new library discovery system integrated with CMake to make reusable compiled libraries shareable through Python distribution channels like PyPI and conda-forge, cached builds, better CUDA and Fortran support, cross-compilation, and more. Scikit-build is collaborating with NumPy and SciPy on documentation, US-RSE for tutorials and workshops, and RAPIDS, PyArrow, PySTAN, Awkward Array, ITK, 3D Slicer, CERN ROOT, ATLAS, OSQP, and Bézier for initial integration and testing of Scikit-Build's redesigned infrastructure.