Version 1.0.0 #1456
henryiii
announced in
Announcements
Version 1.0.0
#1456
Replies: 1 comment
-
|
Thanks for all the hard work @henryiii and other contributors! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
We've worked through over 100 issues and ran extensive review sweeps, fixing over 90 bugs and adding 40+ features! We've added support for PEP 803 (free-threaded stable ABI), PEP 808 (partially dynamic metadata), PEP 829 (
.startfiles), and experimental PEP 817 (variants). Editable installs are much better, with lots of edge cases fixed, like namespace packages and resource discovery. For rebuilds, which are still experimental, loaders expose a manualrebuild(), inplace mode now supports rebuilds, and rebuilds can optionally target a persistent install tree (which removes several caveats). The setuptools and hatchling plugins are no longer experimental and Hatchling supports editable installs. There's a new unifiedscikit-buildCLI, including aninitcommand to scaffold new projects. Wheels can be reproducible. Dynamic metadata follows a spec with entry-point discovery and uses[[tool.dynamic-metadata]], and you can write your own plugins. There are new settings: anenvtable for setting environment variables,install.targets,force-includefor SDists and wheels,sdist.resolve-symlinks, and a${SKBUILD_<TREE>_DIR}prefix for targeting wheel trees; existing settings gainedsdist.inclusion-mode = "explicit"and list-valuedcmake.build-type. Imports are lazy on Python 3.15+ (PEP 810), making CLI and backend startup faster. Lots of documentation has been added and updated, along with new examples and samples. We've also polished f2py-cmake and cython-cmake.As (almost) always, if you set a minimum-version, your build should be unaffected. Behavior changes to be aware of: SDists now resolve symlinks by default, with an
sdist.resolve-symlinkssetting providing"all","external","none", and"classic"modes. The old names of renamed configuration fields (cmake.minimum-version,ninja.minimum-version,cmake.verbose, andcmake.targets) now error unlessminimum-versionis set, and the deprecatedtool.scikit-build.metadatatable warns if minimum-version is not set. The emptypyprojectextra was removed; installers like pip, build, and uv merely warn if you still request it.Also see the announcement post.
Features:
scikit-buildcommand with submodules as subcommands in feat: add unifiedscikit-buildCLI with submodules as subcommands #1355initcommand to scaffold starter projects in feat: addinitcommand to scaffold starter projects #1357env: settable environment variables in feat: add env table for build environment variables #1377 (replaces feat: add cmake.use-sysconfig-compiler to opt out of sysconfig CC/CXX #1370, unreleased)install.targetsfor custom install targets in feat: support install.targets for install targets #1371sdist.force-include,wheel.force-includeto map files to include in feat: add force-include for sdist, wheel, and build targets #1364; entries are served live in redirect editable installs in feat(editable): serve force-include entries live via the redirect #1441wheel.reproducibleallows building a reproducible wheel (with some setup) in feat(wheel): reproducible wheels (closes #62) #1389editable.rebuild-dirat a persistent install tree (opt-in) in feat: point editable rebuilds at a persistent install tree - opt-in (#1135) #1375cmake.build-typenow can be a list for multiple builds in feat: allow a list for cmake.build-type #1386wheel.packagescan now include single module files in feat: allow wheel.packages to point at a single module file #1395cmake.build-typehonorsCMAKE_BUILD_TYPEfrom the environment in feat: honor CMAKE_BUILD_TYPE from the environment #1372"explicit"SDist inclusion-mode (opt-in include) in feat: add "explicit" inclusion-mode (opt-in include) #1249"external","classic", and"none"(store directory symlinks) modes in feat(sdist): "external" and "classic" resolve-symlinks modes; "none" stores directory symlinks #1434abi3.abi3twheel tag, in feat: support PEP 803, free-threaded tag #1269 and feat: support combined abi3.abi3t wheel tag #1382${SKBUILD_<TREE>_DIR}prefix for wheel-tree targeting in feat: add ${SKBUILD_<TREE>_DIR} prefix for wheel-tree targeting #1379{name}placeholder for template-formatted settings in feat: add {name} placeholder for template-formatted settings #1445tool.scikit-build.metadatatable, and error on renamed config fields, unless an old minimum-version is set, in feat: warn on deprecated tool.scikit-build.metadata table #1397 and feat: error on renamed config fields without old minimum-version #1399[[tool.dynamic-metadata]]in feat: support dynamic-metadata 0.3 spec #1390 and feat(metadata): entry-point discovery for [[tool.dynamic-metadata]] #1416dynamic_wheelhook when building SDists in feat(metadata): honor the dynamic_wheel hook when building SDists #1433.startfiles) support in feat: add PEP 829 support for editable installs #1297rebuild()on redirect and inplace module loaders in feat(editable): expose rebuild() on redirected module loaders #1403 and feat(editable): expose rebuild() on inplace editable loaders #1411build-system.requires, in feat: include plugin extras for setuptools/hatchling #1290 and feat: warn if plugin extra missing from build-system.requires #1344wheel.excludeas unsupported in feat(hatch): reject wheel.exclude as unsupported #1431cmake_install_dirandcmake_install_targetin feat(setuptools): add cmake_install_dir #1286 and feat: support cmake_install_target in setuptools plugin #1374cmake_process_manifest_hookin feat(setuptools): add cmake_process_manifest_hook #1285cmake_with_sdist=Falsein feat(setuptools): Allow cmake_with_sdist=False #1287SKBUILD_CONFIGURE_OPTIONSandSKBUILD_BUILD_OPTIONSin the wrapper in feat(setuptools): honor SKBUILD_CONFIGURE_OPTIONS and SKBUILD_BUILD_OPTIONS in wrapper #1394Fixes:
=inside dict-style env var values likeSKBUILD_CMAKE_DEFINEin fix: correct several latent bugs found in a repo sweep #1311-Cwheel.packages=src/pkg) in fix(settings): sources, overrides, and generated-docs bug fixes #1323inheritwith top-level fields in fix(settings): sources, overrides, and generated-docs bug fixes #1323if.stateoverrides when computingget_requires_for_build_*in fix(build): entry-point, wheel, and requires-state bugs #1322{root}correctly in templated settings such asbuild-dirin fix: format/logging/editable-redirect bugs and cleanups #1318cmake.definelists in fix: test isolation and schema/warning robustness (#1298) #1306DynamicMetadataProtocol.dynamic_metadatasignature in fix: correct DynamicMetadataProtocol.dynamic_metadata signature #1365dynamic_wheelreports with OR in fix(metadata): combine same-field dynamic_wheel reports with OR #1437regex/templateplugin settings instead of silently ignoring them in fix: file_api/ast/metadata bug fixes and simplifications #1319vcs_versioning.overridesin mypy in fix(types): handle typed vcs_versioning.overrides in mypy #1388wheel.packagessource is CMake-generated in fix(wheel): don't error when a wheel.packages source is CMake-generated #1440Path.as_posix()for including generated files in SDist/wheel by @shiftinv in fix: usePath.as_posix()for including generated files in sdist/wheel #1381SOURCE_DATE_EPOCHto the ZIP timestamp range in fix(wheel): clamp SOURCE_DATE_EPOCH to the ZIP timestamp range #1423abi3twheel tag in fix: emit installer-compatible abi3t wheel tag #1380CMAKE_OSX_DEPLOYMENT_TARGETin the wheel platform tag in fix: honor CMAKE_OSX_DEPLOYMENT_TARGET in wheel platform tag (#977) #1338license-filesto disable license collection in fix: correct several latent bugs found in a repo sweep #1311 and fix(build): entry-point, wheel, and requires-state bugs #1322location = "source"generated files as UTF-8, don't crash on subdirectories inside the scripts install dir, and fully prune consecutive excluded directories in fix(build): entry-point, wheel, and requires-state bugs #1322resolve-symlinks = "all", and detect symlink loops when walking the source tree, in fix: detect symlink loops when walking the source tree for sdist (#1101) #1341 and fix(sdist): don't crash on dangling symlinks with resolve-symlinks="all" #1421__path__in fix: editable install adds symlinked module's real dir to __path__ (#647) #1335importlib.resources.files()in redirect mode in Fix importlib.resources.files() in redirect-mode editable installs (#807) #1279__init__.pxd/.pyxas package indicators by @vyasr in fix(editable): recognize Cython__init__.pxd/.pyxas package indicators #1292rebuild()no longer hides the build output on failed rebuilds in fix: format/logging/editable-redirect bugs and cleanups #1318rebuild(), in fix(editable): refuse to wipe a populated rebuild-dir #1400 and fix(editable): safe install/build paths for manual rebuild() #1429wheel.install-dirfor rebuilds in fix: only block absolute wheel.install-dir for editable rebuilds (#909) #1334SKBUILD_PROJECT_VERSIONto four components in fix: cap SKBUILD_PROJECT_VERSION to four components #1369-G Ninjaand-GinCMAKE_ARGS, detect multi-config generators set viacmake.define.CMAKE_GENERATORso the right--configis used, and apply full Ninja handling toNinja Multi-Configin fix(builder): cmake generator detection, archs cross-compile, and program search robustness #1320 and fix: detect two-token-G Ninjaand-Gin CMAKE_ARGS for generator handling #1352-Dparsing in fix(builder): free-threaded Windows import library and two-token -D parsing #1422x86_64extension on macOS in fix(macos): warn when CMake will build a mismatched x86_64 extension #1404-DCMAKE_SYSTEM_PROCESSORin the CMake args suppressesARCHFLAGShandling on macOS, as documented, in fix(builder): cmake generator detection, archs cross-compile, and program search robustness #1320cmake_minimum_required(...)no longer breakcmake.version = "CMakeLists.txt", and unparsable files fall back gracefully in fix: file_api/ast/metadata bug fixes and simplifications #1319Unionby @LecrisUT in bug: Properly handle Union in file-api #1272; read the toolchains reply, tolerate optional link fields, and restore missingTarget.sources/InstallRule.typefields in fix: correct several latent bugs found in a repo sweep #1311 and fix: file_api/ast/metadata bug fixes and simplifications #1319wheel.install-dirprefix, which made wheels unimportable, in fix(hatch,setuptools): correctness fixes in hatch and setuptools layers #1321SetupErrorin fix(setuptools): protect SetupError #1293wheel-free-setuptoolsextra in the plugin warning in fix(setuptools): accept wheel-free-setuptools extra in plugin warning #1413editable.modeforbuild_ext --inplacein fix(setuptools): don't require editable.mode for build_ext --inplace #1432package_direditable root, and free-threaded limited-API gate in fix(setuptools): build-type list rejection, package_dir editable root, FT limited-api gate #1428wheel/editablestate in fix(hatch,setuptools): correctness fixes in hatch and setuptools layers #1321Documentation:
compile_commands.jsonin docs: FAQ for IDE IntelliSense / compile_commands.json #1447site-packages/binorlibin docs: add FAQ for dependency library in site-packages/bin or lib #1393cmake.moduleentry point and metadata states in docs: document cmake.module entry point and metadata states #1360-Cinstead of--config-settingsin examples in docs: use -C instead of --config-settings in examples #1451wheel.packagessemantics (top-level, not a find/where) in docs: clarify wheel.packages semantics (top-level, not a find/where) #1407sdist.inclusion-modename and dynamic-metadata field requirement in docs: fix sdist.inclusion-mode name and dynamic-metadata field requirement #1420cmake_minimum_requiredranges in docs: clarify README example and unify cmake_minimum_required ranges #1392Python::Modulein the Fortran example for CMake 4.x in fix: link Python::Module in fortran example for CMake 4.x #1373CI and testing:
PermissionErrorfrom concurrent wheelhouse lock races, and clean up incomplete or old editable wheels in the wheelhouse, in tests: clean up incomplete or old editable in wheelhouse #1283 and tests: fix Windows PermissionError from concurrent wheelhouse lock races #1288Internal:
_editable_skbc_<name>in refactor: rename editable files to _editable_skbc_<name> #1332pyprojectextra in chore: drop the emptypyprojectextra #1398orjsonfrom dependencies in chore: remove 'orjson' from dependencies #1333uvx scikit-build-coretoo in chore: support uvx too #1396TYPE_CHECKING = Falseinstead of importing from typing in refactor: use local TYPE_CHECKING = False instead of importing from typing #1412New Contributors
Path.as_posix()for including generated files in sdist/wheel #1381Full Changelog: v0.12.2...v1.0.0
This discussion was created from the release Version 1.0.0.
Beta Was this translation helpful? Give feedback.
All reactions