-
Notifications
You must be signed in to change notification settings - Fork 121
Home
This is a proposed roadmap for Scikit-build during 2022-2025, during support of NSF cooperative agreement OAC-2209877.
- Support pytest 7.2+
- Use standard pytest idioms like composable fixtures to make testing simpler and easier.
- Remove unsupported features, like easy-install
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.
- 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.