Skip to content
Henry Schreiner edited this page Nov 18, 2022 · 14 revisions

Roadmap

This is a proposed roadmap for Scikit-build during 2022-2025, during support of NSF cooperative agreement OAC-2209877.

Some smaller work items for scikit-build classic

  • Support pytest 7.2+
  • Use standard pytest idioms like composable fixtures to make testing simpler and easier.
  • Remove unsupported features, like easy-install

The next generation Scikit-build

We have been developing a pure PEP 517 builder, called scikit-build-core. This is intended to the the build backend in a post-setuptools centric ecosystem.

The following limitations are present compared to classic scikit-build:

  • The minimum supported CMake is 3.15
  • The minimum supported Python is 3.7

Scikit-build-core comes with the following features over scikit-build classic:

  • Better warnings, errors, and logging
  • No warning about unused variables
  • Automatically adds Ninja and/or CMake only as required
  • No dependency on setuptools, distutils, or wheel in build mode.
  • Powerful config system, including config options support in build mode.
  • Automatic inclusion of site-packages in CMAKE_PREFIX_PATH
  • FindPython is backported if running on CMake < 3.24 (included via hatchling in a submodule)
  • Limited API / Stable ABI and pythonless tags supported via config option
  • No slow generator search, ninja/make or MSVC used by default, respects CMAKE_GENERATOR
  • SDists are reproducible by default (UNIX, Python 3.9+)

Some known missing features that will be developed soon:

  • No support for caching between builds
  • No editable mode support
  • The docs are not written
  • Dedicated entrypoints are planned for projects wanting to support discovery
  • No support for other targets besides install
  • Wheels are not fully reproducible yet
  • Windows ARM support missing

Once this is ready, classic scikit-build will move to using scikit-build-core. This will provide some of the benefits for classic scikit-build core users (but not all, users should directly use scikit-build-core in their pyproject.toml's for all benefits). This would solve some long-standing feature requests, like supporting setup.cfg / pyproject.toml. This will happen in Scikit-build 1.0.

Other plans

  • Add a cookiecutter to make it easy to setup a new project combining Python and C++, similar to gh:scikit-hep/cookie
  • Work on expanded documentation, updating and writing tutorials
  • Work on new website
  • Add extension discovery system, probably based on entrypoints, allowing projects (pybind11 to start) to broadcast that they have a CMake package configuration file. Could create ecosystem of PyPI/Conda projects that provide CMake interfaces!
  • Work on an extensionlib PEP for generalized build plugins.