Metadata-Version: 2.4
Name: scikit-build
Version: 1.0.0rc1
Summary: Improved build system generator for Python C/C++/Fortran/Cython extensions
Project-URL: Bug Tracker, https://github.com/scikit-build/scikit-build/issues
Project-URL: Changelog, https://scikit-build.readthedocs.io/en/latest/history.html
Project-URL: Discussions, https://github.com/orgs/scikit-build/discussions
Project-URL: Documentation, https://scikit-build.readthedocs.io/
Project-URL: Examples, https://github.com/scikit-build/scikit-build-sample-projects
Project-URL: Homepage, https://github.com/scikit-build/scikit-build
Author: The scikit-build team
License-File: AUTHORS.rst
License-File: LICENSE
Keywords: scikit-build
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: scikit-build-core[setuptools]>=1.0
Provides-Extra: cov
Requires-Dist: coverage[toml]>=4.2; extra == 'cov'
Requires-Dist: pytest-cov>=2.7.1; extra == 'cov'
Provides-Extra: docs
Requires-Dist: furo; extra == 'docs'
Requires-Dist: myst-parser>=0.13; extra == 'docs'
Requires-Dist: pygments; extra == 'docs'
Requires-Dist: sphinx-copybutton; extra == 'docs'
Requires-Dist: sphinx-issues; extra == 'docs'
Requires-Dist: sphinx>=7.0; extra == 'docs'
Requires-Dist: sphinxcontrib-moderncmakedomain>=3.19; extra == 'docs'
Provides-Extra: doctest
Requires-Dist: ubelt>=0.8.2; extra == 'doctest'
Requires-Dist: xdoctest>=0.10.0; extra == 'doctest'
Provides-Extra: test
Requires-Dist: build>=0.7; extra == 'test'
Requires-Dist: cython>=0.25.1; extra == 'test'
Requires-Dist: pip; extra == 'test'
Requires-Dist: pytest-mock>=1.10.4; extra == 'test'
Requires-Dist: pytest>=6.0.0; extra == 'test'
Requires-Dist: requests; extra == 'test'
Requires-Dist: virtualenv; extra == 'test'
Description-Content-Type: text/markdown



**scikit-build** is a Python build system for CPython C/C++/Fortran/Cython extensions using CMake.

The scikit-build package is fundamentally just glue between the `setuptools` Python module and [CMake](https://cmake.org).

The next generation of scikit-build, [scikit-build-core](https://scikit-build-core.readthedocs.io), provides a simple, reliable build backend for CMake that does not use setuptools and provides a lot of new features. Since scikit-build 1.0, scikit-build (classic) is a thin wrapper around scikit-build-core's setuptools plugin. If you do not require setuptools, you should consider using scikit-build-core directly instead. This package only adds the legacy CMake helper modules (which have modern equivalents) and the compatibility `setup()` wrapper.

To get started, see [this example](https://scikit-build.readthedocs.io/en/latest/usage.html#example-of-setup-py-cmakelists-txt-and-pyproject-toml). For more examples, see [scikit-build-sample-projects](https://github.com/scikit-build/scikit-build-sample-projects).

## Quick upgrade instructions for 1.0

Code should build (using standards-based tools, like `pip`/`uv`/`build`/`cibuildwheel`) as long as you are not using our internals. `setup.py` commands may not work (a few do, like `setup.py build_ext --inplace`, which works better than before). You can now use `tool.scikit-build`, as described by scikit-build-core.

If you keep `from skbuild import setup` in `setup.py`, require scikit-build and use scikit-build-core's setuptools backend for auto-cmake/ninja and config-settings support:

```toml
[build-system]
requires = ["scikit-build>=1"]
build-backend = "scikit_build_core.setuptools.build_meta"
```

If you want to use scikit-build-core directly but keep setuptools:

```toml
[build-system]
requires = ["scikit-build-core[setuptools]>=1"]
build-backend = "scikit_build_core.setuptools.build_meta"
```

And either use setup with at least a `cmake_source_dir` argument:

```python
from setuptools import setup

setup(cmake_source_dir=".")
```

or the following in your pyproject.toml:

```toml
[tool.scikit-build]
cmake.source-dir = "."
```

Either one of those will cause scikit-build-core's setuptools plugin to activate. The defaults for the native plugin are different from the `skbuild.setup()` wrapper (`scikit_build_core.setuptools.wrapper.setup()`); for example `SKBUILD_CONFIGURE_OPTIONS`/`SKBUILD_BUILD_OPTIONS` are not adapted without the wrapper.

And if you want to use the native, non-setuptools backend:

```toml
[build-system]
requires = ["scikit-build-core>=1"]
build-backend = "scikit_build_core.build"
```

You'll need to use a `project` table and `tool.scikit-build`; `setup.py`, `MANIFEST.in`, and `setup.cfg` have no effect without setuptools. The native backend is recommended unless you specifically need a setuptools or hatchling plugin, e.g. to combine with other plugins.



## Scikit-build 1.0.0

The classic scikit-build backend has been replaced by [scikit-build-core](https://github.com/scikit-build/scikit-build-core)'s setuptools plugin. `skbuild.setup()` is now a thin wrapper around `scikit_build_core.setuptools.wrapper.setup()`, and scikit-build depends on `scikit-build-core[setuptools]`. Most packages — those that only use `from skbuild import setup` with the documented `cmake_*` keyword arguments — will continue to build unchanged. New projects are still encouraged to use scikit-build-core directly.

What still works:

- `from skbuild import setup` with `cmake_args`, `cmake_source_dir`, `cmake_install_dir`, `cmake_install_target`, and `cmake_process_manifest_hook`.
- The shipped CMake modules (`find_package(PythonExtensions)`, `Cython`, `F2PY`, `NumPy`, ...), now provided via scikit-build-core's `cmake.module` entry point.
- The `SKBUILD` CMake variable is still set (now `"2"` instead of `TRUE`; both are truthy).
- `setup.py build_ext --inplace` builds into the source tree without extra configuration.

Breaking changes:

- The scikit-build specific command line options were removed: `--build-type`, `-G/--generator`, `-j`, `--cmake-executable`, `--skip-generator-test`, `--hide-listing`, `--force-cmake`, `--skip-cmake`, `--install-target`, and the `setup.py <args> -- <cmake args> -- <build tool args>` syntax. Use the `CMAKE_ARGS`/`CMAKE_GENERATOR` environment variables, the `cmake_args` keyword, or `[tool.scikit-build]` settings / `SKBUILD_*` environment variables instead.
- `cmake_with_sdist=True` now raises an error; `cmake_languages` and `cmake_minimum_required_version` are ignored with a warning (set `cmake.version` in `[tool.scikit-build]` instead).
- The internal modules `skbuild.command`, `skbuild.platform_specifics`, `skbuild.utils`, and `skbuild.setuptools_wrap` were removed. `skbuild.constants` and `skbuild.cmaker` are now deprecation shims keeping only the helpers downstream `setup.py` files use: `skbuild_plat_name()`, `CMAKE_INSTALL_DIR()`, and `get_cmake_version()`. `skbuild.exceptions.SKBuildError` is now an alias of setuptools' `SetupError`, so it is no longer a `RuntimeError`; its `SKBuildInvalidFileInstallationError` and `SKBuildGeneratorNotFoundError` subclasses were removed.
- The `_skbuild` build directory is gone; the standard setuptools `build/` directories are used (CMake builds in an `_skbuild` directory under `build/temp.*`).
- sdists no longer auto-generate their manifest from git; provide a `MANIFEST.in` (or use setuptools-scm) like any setuptools project.
- Editable installs (`pip install -e .`) require `editable.mode = "inplace"` in the `[tool.scikit-build]` table of `pyproject.toml`.
- CMake generator probing (including Visual Studio discovery) was removed; CMake's own default generator selection applies, and `CMAKE_GENERATOR` overrides it.
- Dependencies changed to `scikit-build-core[setuptools]`; `distro`, `wheel`, and `tomli` were dropped.
- Python 3.8 and 3.9 support was dropped; Python 3.10+ is required.

### Features

- Use scikit-build-core's setuptools plugin as the backend in [#1185](https://github.com/scikit-build/scikit-build/pull/1185)
- Drop Python 3.8 support in [#1207](https://github.com/scikit-build/scikit-build/pull/1207)
- Drop Python 3.9 support in [#1210](https://github.com/scikit-build/scikit-build/pull/1210)

### Bug fixes

- Repair `add_f2py_target` argument handling and the F2PY version regex in [#1216](https://github.com/scikit-build/scikit-build/pull/1216)
- Fix the `python_modules_header` include-dir output variable and drop a debug print in [#1217](https://github.com/scikit-build/scikit-build/pull/1217)

### Documentation

- Review and update for the scikit-build-core backend in [#1212](https://github.com/scikit-build/scikit-build/pull/1212)
- Recommend the scikit-build-core setuptools backend in [#1213](https://github.com/scikit-build/scikit-build/pull/1213)
- Switch to furo, matching scikit-build-core, in [#1208](https://github.com/scikit-build/scikit-build/pull/1208)
- Convert changelog and README to Markdown with MyST in [#1198](https://github.com/scikit-build/scikit-build/pull/1198)

### Testing

- Trim the suite now that the backend lives in scikit-build-core in [#1211](https://github.com/scikit-build/scikit-build/pull/1211)
- Tolerate CMake 4 install path normalization in [#1205](https://github.com/scikit-build/scikit-build/pull/1205)
- Split the test matrix per Python version in [#1209](https://github.com/scikit-build/scikit-build/pull/1209)
- Test on Python 3.15 in [#1215](https://github.com/scikit-build/scikit-build/pull/1215)

### Miscellaneous

- Mark as Production/Stable and prepare the release in [#1222](https://github.com/scikit-build/scikit-build/pull/1222)
- Remove dead code and fix docs in the CMake modules in [#1218](https://github.com/scikit-build/scikit-build/pull/1218)
- Pin GitHub Actions to commit SHAs and harden workflows in [#1219](https://github.com/scikit-build/scikit-build/pull/1219) and [#1221](https://github.com/scikit-build/scikit-build/pull/1221)
- Drop ref-names from `.git_archival.txt` in [#1220](https://github.com/scikit-build/scikit-build/pull/1220)
- Packit maintenance in [#1201](https://github.com/scikit-build/scikit-build/pull/1201)
- Bump the actions group in [#1200](https://github.com/scikit-build/scikit-build/pull/1200) and [#1204](https://github.com/scikit-build/scikit-build/pull/1204)
- Pre-commit autoupdate in [#1199](https://github.com/scikit-build/scikit-build/pull/1199), [#1203](https://github.com/scikit-build/scikit-build/pull/1203), and [#1206](https://github.com/scikit-build/scikit-build/pull/1206)

## Scikit-build 0.19.1

This is a patch release to add support for Visual Studio 2026.

### Features

- Support Visual Studio 18 2026 in [#1186](https://github.com/scikit-build/scikit-build/pull/1186)

### Bug fixes

- Correctness bugs found in code review in [#1191](https://github.com/scikit-build/scikit-build/pull/1191)
- Resolve Visual Studio generator environments lazily in [#1193](https://github.com/scikit-build/scikit-build/pull/1193)

### Testing

- Add windows-latest job for Visual Studio 2026 in [#1194](https://github.com/scikit-build/scikit-build/pull/1194)
- Convert decorator into fixture in [#1175](https://github.com/scikit-build/scikit-build/pull/1175)
- Remove usage of `py.path` in [#1173](https://github.com/scikit-build/scikit-build/pull/1173)
- Make symlink auto-generated in [#1172](https://github.com/scikit-build/scikit-build/pull/1172)

### Miscellaneous

- Trivial cleanups found in code review in [#1192](https://github.com/scikit-build/scikit-build/pull/1192)
- Update ruff-check and a bit more in [#1174](https://github.com/scikit-build/scikit-build/pull/1174)
- Add agent files in [#1184](https://github.com/scikit-build/scikit-build/pull/1184)
- Bump setup-uv to maintained tag scheme in [#1179](https://github.com/scikit-build/scikit-build/pull/1179)
- Bump the actions group in [#1180](https://github.com/scikit-build/scikit-build/pull/1180) and [#1183](https://github.com/scikit-build/scikit-build/pull/1183)
- Bump actions/checkout from 6 to 7 in [#1190](https://github.com/scikit-build/scikit-build/pull/1190)
- Pre-commit autoupdate in [#1176](https://github.com/scikit-build/scikit-build/pull/1176), [#1182](https://github.com/scikit-build/scikit-build/pull/1182), and [#1187](https://github.com/scikit-build/scikit-build/pull/1187)

## Scikit-build 0.19.0

This release updates for changes in setuptools and CMake 4, and drops Python 3.7.

### Features

- Drop Python 3.7 in [#1134](https://github.com/scikit-build/scikit-build/pull/1134)

### Bug fixes

- Update for newer setuptools in [#1120](https://github.com/scikit-build/scikit-build/pull/1120)
- `setuptools_wrap.py`: parse `CMAKE_ARGS` with `shlex.split` like elsewhere by [@haampie](https://github.com/haampie) in [#1126](https://github.com/scikit-build/scikit-build/pull/1126)
- Drop `dry-run` (removed in setuptools) in [#1166](https://github.com/scikit-build/scikit-build/pull/1166)
- Ensure generic f2py executable is looked up first by [@smiet](https://github.com/smiet) in [#1111](https://github.com/scikit-build/scikit-build/pull/1111)

### Testing

- Support Python 3.14 in CI in [#1167](https://github.com/scikit-build/scikit-build/pull/1167)
- pytest `log_level` is better than `log_cli_level` in [#1164](https://github.com/scikit-build/scikit-build/pull/1164)

### Miscellaneous

- Bot suffix now required for changelog filtering in [#1168](https://github.com/scikit-build/scikit-build/pull/1168)

## Scikit-build 0.18.1

This release fixes issues with setuptools 74, and avoids a warning from recent versions of wheel. Android and iOS are now included in known platforms.

### Bug fixes

- Support for setuptools 74 in [#1116](https://github.com/scikit-build/scikit-build/pull/1116)
- iOS and Android support by [@FeodorFitsner](https://github.com/FeodorFitsner) in [#1101](https://github.com/scikit-build/scikit-build/pull/1101)

### Testing

- Fix for distutils change in [#1103](https://github.com/scikit-build/scikit-build/pull/1103)
- Remove test directives by [@s-t-e-v-e-n-k](https://github.com/s-t-e-v-e-n-k) in [#1108](https://github.com/scikit-build/scikit-build/pull/1108)

## Scikit-build 0.18.0

This release bumps the minimum required CMake to 3.5 and supports CPython 3.13.

### Bug fixes

- Support MSVC 17.10 in [#1081](https://github.com/scikit-build/scikit-build/pull/1081)
- CMake 3.5+ requirement in [#1095](https://github.com/scikit-build/scikit-build/pull/1095)
- Support CPython 3.13 with windows lib finding fix in [#1094](https://github.com/scikit-build/scikit-build/pull/1094)
- Don't die on PermissionError during chmod by [@mweinelt](https://github.com/mweinelt) in [#1073](https://github.com/scikit-build/scikit-build/pull/1073)
- Remove usage of deprecated distutils in cmake files by [@hmaarrfk](https://github.com/hmaarrfk) in [#1032](https://github.com/scikit-build/scikit-build/pull/1032)
- Use first available option for vswhere output by [@ZzEeKkAa](https://github.com/ZzEeKkAa) in [#1030](https://github.com/scikit-build/scikit-build/pull/1030)

### Testing

- Support setuptools 69.3.0 changes in two tests by [@s-t-e-v-e-n-k](https://github.com/s-t-e-v-e-n-k) in [#1087](https://github.com/scikit-build/scikit-build/pull/1087)
- Use uv in a few places in [#1092](https://github.com/scikit-build/scikit-build/pull/1092)

### Fedora CI

- Fedora maintenance by [@LecrisUT](https://github.com/LecrisUT) in [#1078](https://github.com/scikit-build/scikit-build/pull/1078)
- Fedora: Fix rsync filter rule by [@LecrisUT](https://github.com/LecrisUT) in [#1003](https://github.com/scikit-build/scikit-build/pull/1003)
- Fix Fedora tests by [@LecrisUT](https://github.com/LecrisUT) in [#1050](https://github.com/scikit-build/scikit-build/pull/1050)
- Fedora downstream CI by [@LecrisUT](https://github.com/LecrisUT) in [#993](https://github.com/scikit-build/scikit-build/pull/993)

### Miscellaneous

- Clean up pylint in [#1017](https://github.com/scikit-build/scikit-build/pull/1017)
- Fix mypy type ignores for new setuptools types in [#1082](https://github.com/scikit-build/scikit-build/pull/1082)
- Move to Ruff-format in [#1035](https://github.com/scikit-build/scikit-build/pull/1035)
- Remove pkg_resources and test command in [#1014](https://github.com/scikit-build/scikit-build/pull/1014)
- Ruff moved to astral-sh in [#1007](https://github.com/scikit-build/scikit-build/pull/1007)
- Target-version no longer needed by Black or Ruff in [#1008](https://github.com/scikit-build/scikit-build/pull/1008)
- Update ruff and fix warnings in [#1060](https://github.com/scikit-build/scikit-build/pull/1060)
- Use 2x faster black mirror in [#1021](https://github.com/scikit-build/scikit-build/pull/1021)
- Group dependabot updates in [#1054](https://github.com/scikit-build/scikit-build/pull/1054)
- macos-latest is changing to macos-14 ARM runners in [#1083](https://github.com/scikit-build/scikit-build/pull/1083)
- Skip win PyPy PEP 518 in [#1091](https://github.com/scikit-build/scikit-build/pull/1091)

## Scikit-build 0.17.6

A small fix release with some new platforms and better testing, including CPython 3.12.0b1.

### Bug fixes

- Support added for SunOS by [@mtelka](https://github.com/mtelka) in [#983](https://github.com/scikit-build/scikit-build/pull/983).
- Support added for AIX (with recent CMake) by [@bhuntsman](https://github.com/bhuntsman) in [#988](https://github.com/scikit-build/scikit-build/pull/988).

### Testing

- Tests now pass on CPython 3.12.0b1 in [#879](https://github.com/scikit-build/scikit-build/pull/879).
- Tests no longer use `pytest-virtualenv` in [#879](https://github.com/scikit-build/scikit-build/pull/879).
- `isolated` marker now includes `test_distribution` tests in [#879](https://github.com/scikit-build/scikit-build/pull/879).
- Tests avoid incorrect `get_map` match by [@keszybz](https://github.com/keszybz) in [#990](https://github.com/scikit-build/scikit-build/pull/990).
- Fedora testing fix by [@LecrisUT](https://github.com/LecrisUT) in [#986](https://github.com/scikit-build/scikit-build/pull/986) and [#938](https://github.com/scikit-build/scikit-build/pull/938).

### Miscellaneous

- Docs improvements in [#979](https://github.com/scikit-build/scikit-build/pull/979).

## Scikit-build 0.17.5

A small fix release fixing the passing on of generator specific arguments. This fixes some cases where the Ninja generator was found but then was unable to build. NetBSD was reported to work, so was added to the BSD's supported.

### Bug fixes

- Generator args were missing for actual compile in [#975](https://github.com/scikit-build/scikit-build/pull/975).
- Add support for netbsd & pyodide (future) in [#977](https://github.com/scikit-build/scikit-build/pull/977).

## Scikit-build 0.17.4

A followup fix to the issue 0.17.3 tried to fix. We now have a method to manually test downstream packages, too.

### Bug fixes

- Make sure include dir is found even if the lib is not present in [#974](https://github.com/scikit-build/scikit-build/pull/974).

## Scikit-build 0.17.3

A small release related to `PYTHON_LIBRARY` handling changes in 0.17.2; scikit-build 0.17.3 returns an empty string from `get_python_library` if no Python library is present (like on manylinux), where 0.17.2 returned None, and previous versions returned a non-existent path. Note that adding `REQUIRED` to `find_package(PythonLibs` will fail, but it is incorrect (you must not link to `libPython.so`) and was really just injecting a non-existent path before.

### Bug fixes

- Keep `get_python_library` return type string if python lib non-existing for now in [#959](https://github.com/scikit-build/scikit-build/pull/959).
- Avoid 'not found' warning if libs are not found by FindPythonExtensions in [#960](https://github.com/scikit-build/scikit-build/pull/960).
- FindNumPy should not call FindPythonLibs in [#958](https://github.com/scikit-build/scikit-build/pull/958).

## Scikit-build 0.17.2

Another small release with fixes for non-MSVC Windows platforms.

### Bug fixes

- RPM spec fix by [@LecrisUT](https://github.com/LecrisUT) in [#937](https://github.com/scikit-build/scikit-build/pull/937).
- Validate value before returning library path by [@dlech](https://github.com/dlech) in [#942](https://github.com/scikit-build/scikit-build/pull/942).
- Only add `Python_LIBRARY` on Windows MSVC in [#943](https://github.com/scikit-build/scikit-build/pull/943) and [#944](https://github.com/scikit-build/scikit-build/pull/944).
- Slightly nicer traceback for failed compiler in [#947](https://github.com/scikit-build/scikit-build/pull/947).

### Testing

- Hide a few warnings that are expected in [#948](https://github.com/scikit-build/scikit-build/pull/948).

## Scikit-build 0.17.1

This is a small release fixing a few bugs; the primary one being a change that was triggering a bug in older FindPython. The unused variable messages have been deactivated to simplify output, as well.

### Bug fixes

- Older (\<3.24) CMake breaks when lib specified in [#932](https://github.com/scikit-build/scikit-build/pull/932).
- An error output was missing formatting in [#931](https://github.com/scikit-build/scikit-build/pull/931).
- Make empty `CMAKE_OSX_DEPLOYMENT_TARGET` a warning (bug in conda-forge's clang activation fixed upstream) in [#934](https://github.com/scikit-build/scikit-build/pull/934).
- Remove unused variable warnings by in [#930](https://github.com/scikit-build/scikit-build/pull/930).

### Testing

- Add Fedora packaging with packit automation by [@LecrisUT](https://github.com/LecrisUT) in [#928](https://github.com/scikit-build/scikit-build/pull/928).
- Fix codecov ci by [@LecrisUT](https://github.com/LecrisUT) in [#929](https://github.com/scikit-build/scikit-build/pull/929).
- Update some coverage settings in [#933](https://github.com/scikit-build/scikit-build/pull/933).

## Scikit-build 0.17.0

A lot of bug fixes are present in this release, focusing on Windows, PyPy, and cross compiling. We've also improved the compatibility with default setuptools behaviors a little, and enabled some things that were previously unavailable, like overriding the build type via the cmake argument environment variables. We've expanded our CI matrix to include Windows and macOS PyPy and some Fortran tests on Linux. This release requires Python 3.7+.

### Bug fixes

- Match setuptools behavior for `include_package_data` default. by [@vyasr](https://github.com/vyasr) in [#873](https://github.com/scikit-build/scikit-build/pull/873).
- Misc. fixes for F2PY and PythonExtensions modules by [@benbovy](https://github.com/benbovy) in [#495](https://github.com/scikit-build/scikit-build/pull/495).
- Provide more useful error if user provides `CMAKE_INSTALL_PREFIX` by [@vyasr](https://github.com/vyasr) in [#872](https://github.com/scikit-build/scikit-build/pull/872).
- Stop assuming that `.pyx` files are in the same directory as `CMakeLists.txt` by [@vyasr](https://github.com/vyasr) in [#871](https://github.com/scikit-build/scikit-build/pull/871).
- Allow build type overriding in [#902](https://github.com/scikit-build/scikit-build/pull/902).
- Detect PyPy library correctly on Windows by user:\`gershnik\` in [#904](https://github.com/scikit-build/scikit-build/pull/904).
- Include library for FindPython for better Windows cross-compiles in [#913](https://github.com/scikit-build/scikit-build/pull/913). Thanks to user:\`maxbachmann\` for testing.
- Fix logic for default generator when cross-compiling for ARM on Windows in [#917](https://github.com/scikit-build/scikit-build/pull/917) by [@dlech](https://github.com/dlech).
- Use f2py's `get_include` if present in [#877](https://github.com/scikit-build/scikit-build/pull/877).
- Fix support for cross-compilation exception using `targetLinkLibrariesWithDynamicLookup` by [@erykoff](https://github.com/erykoff) in [#901](https://github.com/scikit-build/scikit-build/pull/901).
- Treat empty `MACOSX_DEPLOYMENT_TARGET` as if it was unset in [#918](https://github.com/scikit-build/scikit-build/pull/918).

### Testing

- Add hello fortran sample package + tests by [@benbovy](https://github.com/benbovy) in [#493](https://github.com/scikit-build/scikit-build/pull/493).
- Add sdist check & fix in [#906](https://github.com/scikit-build/scikit-build/pull/906).
- Fix some setuptools types in [#888](https://github.com/scikit-build/scikit-build/pull/888).
- Add PyPy Win & macOS to the CI in [#907](https://github.com/scikit-build/scikit-build/pull/907).
- Add tests for Python 3.12 Linux alphas in [#922](https://github.com/scikit-build/scikit-build/pull/922).

### Miscellaneous

- Drop Python 3.6 in [#862](https://github.com/scikit-build/scikit-build/pull/862).
- Move building backend to hatchling in [#870](https://github.com/scikit-build/scikit-build/pull/870).
- Avoid mutating function input parameters in [#899](https://github.com/scikit-build/scikit-build/pull/899).
- Use `_compat`/typing name in [#869](https://github.com/scikit-build/scikit-build/pull/869).



## Publications

Please use the first citation when referencing scikit-build in scientific publications.

- Jean-Christophe Fillion-Robin, Matt McCormick, Omar Padron, Max Smolens, Michael Grauer, & Michael Sarahan. (2018, July 13). jcfr/scipy_2018_scikit-build_talk: SciPy 2018 Talk \| scikit-build: A Build System Generator for CPython C/C++/Fortran/Cython Extensions. Zenodo. <https://doi.org/10.5281/zenodo.2565368>
- Schreiner, Henry, Rickerby, Joe, Grosse-Kunstleve, Ralf, Jakob, Wenzel, Darbois, Matthieu, Gokaslan, Aaron, Fillion-Robin, Jean-Christophe, & McCormick, Matt. (2022, August 1). Building Binary Extensions with pybind11, scikit-build, and cibuildwheel. <https://doi.org/10.25080/majora-212e5952-033>

## History

PyCMake was created at SciPy 2014 in response to general difficulties building C++ and Fortran based Python extensions across platforms. It was renamed to "scikit-build" in 2016. Scikit-build-core was started in 2022, and became the backend for this package in 2026.

## New backend

- All deprecated setuptools/distutils features are removed in scikit-build 1.0, like the `test` command, `easy_install`, etc. Use standards-based development instead, like `uv`, `pip`, `build`, etc.
- Older versions of CMake (\<3.15) are no longer supported.

## Miscellaneous

- Free software: MIT license
- Documentation: <http://scikit-build.readthedocs.org>
- Source code: <https://github.com/scikit-build/scikit-build>
- Discussions: <https://github.com/orgs/scikit-build/discussions>
- Scikit-build-core: <https://github.com/scikit-build/scikit-build-core>

Support for this work was provided by NSF grant [OAC-2209877](https://www.nsf.gov/awardsearch/showAward?AWD_ID=2209877).
