@@ -84,6 +84,30 @@ behaviours when asked to handle legacy packages and metadata that
8484predate the modern interoperability standards and fall into the subset
8585of packages that are incompatible with those standards.
8686
87+
88+ .. _distutils :
89+
90+ distutils
91+ =========
92+
93+ The original Python packaging system, added to the standard library in
94+ Python 2.0 and removed in 3.12.
95+
96+ Due to the challenges of maintaining a packaging system
97+ where feature updates are tightly coupled to language runtime updates,
98+ direct usage of :ref: `distutils ` has been actively discouraged, with
99+ :ref: `Setuptools ` being the preferred replacement. :ref: `Setuptools `
100+ not only provides features that plain :ref: `distutils ` doesn't offer
101+ (such as dependency declarations and entry point declarations), it
102+ also provides a consistent build interface and feature set across all
103+ supported Python versions.
104+
105+ Consequently, :ref: `distutils ` was deprecated in Python 3.10 by :pep: `632 ` and
106+ has been :doc: `removed <python:whatsnew/3.12 >` from the standard library in
107+ Python 3.12. Setuptools bundles the standalone copy of distutils, and it is
108+ injected even on Python < 3.12 if you import setuptools first or use pip.
109+
110+
87111.. _flit :
88112
89113flit
@@ -452,6 +476,19 @@ problem of installing scientific software, and making package
452476distribution stateless, cached, and branchable. It is used by some
453477researchers but has been lacking in maintenance since 2016.
454478
479+ .. _maturin :
480+
481+ Maturin
482+ =======
483+
484+ `Docs <https://www.maturin.rs >`__ |
485+ `GitHub <https://github.com/PyO3/maturin >`__
486+
487+ Maturin is a build backend for Rust extension modules, also written in
488+ Rust. It supports building wheels for python 3.7+ on Windows, Linux, macOS and
489+ FreeBSD, can upload them to PyPI and has basic PyPy and GraalPy support.
490+
491+
455492.. _meson-python :
456493
457494meson-python
@@ -472,7 +509,7 @@ of most complex build configurations.
472509multibuild
473510==========
474511
475- `GitHub <https://github.com/matthew-brett /multibuild >`__
512+ `GitHub <https://github.com/multi-build /multibuild >`__
476513
477514Multibuild is a set of CI scripts for building and testing Python :term: `wheels <Wheel> ` for
478515Linux, macOS, and (less flexibly) Windows. Also see :ref: `cibuildwheel `.
@@ -595,14 +632,29 @@ scikit-build
595632`GitHub <https://github.com/scikit-build/scikit-build/ >`__ |
596633`PyPI <https://pypi.org/project/scikit-build >`__
597634
598- Scikit-build is an improved build system generator for CPython
599- C/C++/Fortran/Cython extensions that integrates with :ref: `setuptools `, :ref: `wheel `
600- and :ref: `pip `. It internally uses `cmake <https://pypi.org/project/cmake >`__ (available
601- on PyPI) to provide better support for additional compilers, build systems,
602- cross compilation, and locating dependencies and their associated
603- build requirements. To speed up and parallelize the build of large projects,
604- the user can install `ninja <https://pypi.org/project/ninja >`__ (also available
605- on PyPI).
635+ Scikit-build is a :ref: `setuptools ` wrapper for CPython that builds
636+ C/C++/Fortran/Cython extensions It uses
637+ `cmake <https://pypi.org/project/cmake >`__ (available on PyPI) to provide
638+ better support for additional compilers, build systems, cross compilation, and
639+ locating dependencies and their associated build requirements. To speed up and
640+ parallelize the build of large projects, the user can install `ninja
641+ <https://pypi.org/project/ninja> `__ (also available on PyPI).
642+
643+ .. _scikit-build-core :
644+
645+ scikit-build-core
646+ =================
647+
648+ `Docs <https://scikit-build-core.readthedocs.io/en/latest/ >`__ |
649+ `GitHub <https://github.com/scikit-build/scikit-build-core/ >`__ |
650+ `PyPI <https://pypi.org/project/scikit-build-core >`__
651+
652+ Scikit-build-core is a build backend for CPython C/C++/Fortran/Cython
653+ extensions. It enables users to write extensions with `cmake
654+ <https://pypi.org/project/cmake> `__ (available on PyPI) to provide better
655+ support for additional compilers, build systems, cross compilation, and
656+ locating dependencies and their associated build requirements. CMake/Ninja
657+ are automatically downloaded from PyPI if not available on the system.
606658
607659.. _shiv :
608660
@@ -671,26 +723,6 @@ cases, end users won't use this module, but rather it will be used during the
671723build of the Python distribution.
672724
673725
674- .. _distutils :
675-
676- distutils
677- =========
678-
679- The original Python packaging system, added to the standard library in
680- Python 2.0.
681-
682- Due to the challenges of maintaining a packaging system
683- where feature updates are tightly coupled to language runtime updates,
684- direct usage of :ref: `distutils ` has been actively discouraged, with
685- :ref: `Setuptools ` being the preferred replacement. :ref: `Setuptools `
686- not only provides features that plain :ref: `distutils ` doesn't offer
687- (such as dependency declarations and entry point declarations), it
688- also provides a consistent build interface and feature set across all
689- supported Python versions.
690-
691- Consequently, :ref: `distutils ` was deprecated in Python 3.10 by :pep: `632 ` and
692- has been :doc: `removed <python:whatsnew/3.12 >` from the standard library in Python 3.12.
693-
694726.. _venv :
695727
696728venv
0 commit comments