Pants is a fast, scalable, user-friendly build system for codebases of all sizes.
Pants is an open-source project that is not owned or controlled by any one company or organization, and does incur some expenses. These expenses are managed by Pants Build, a non-profit that was established for this purpose. This non-profit's only source of revenue is sponsorship by individuals and companies that use Pants.
We offer formal sponsorship tiers for companies, as well as individual sponsorships via GitHub.
Thank you to Klayvio and Normal Computing for their Platinum tier support through throughout this release.
New kubernetes backend! See docs for details.
- Remote cache:
FindMissingBlobsRequest
will now make multiple request if the number of files is large. (#20708)
- Fixed a bug where exponential backoff of file downloads could wait up to 18 days between retries under the default settings. The
[GLOBAL].file_downloads_retry_delay
option is now used as a multiplier (previously it was the exponential base), and so any customisation of this option may need reconsideration for the new behaviour.
Pants has a new mechanism for @rule
invocation in backends. In this release the following backends were migrated to use this new mechanism. There should not be any user-visible effects, but please be on the lookout for any unusual bugs or error messages.
- add-trailing-comma
- autoflake
- bandit
- black
- docformatter
- flake8
- isort
- preamble
- pydocstyle
- pyoxidizer
- pyright
- pytype
- pyupgrade
- ruff
- rust
- shell (including adhoc_tool)
- stevedore
- taplo
- visibility
- yapf
Added the ability to push docker images non-interactively. This, in turn, allows us to push docker images in parallel within one pants publish
invocation.
To enable this option, add the following to your pants.toml
[docker]
publish_noninteractively = true
Some deprecations have expired and been removed:
- the
[export].py_hermetic_scripts
option has been replaced by the[export].py_non_hermetic_scripts_in_resolve
option - for FaaS targets (AWS Lambda and Google Cloud Functions), automatic fallback to underspecified "platforms" for unknown runtimes without a pre-packaged complete-platforms has been replaced by requiring an explicit
complete_platforms
value
The default version of the Pex tool has been updated from 2.32.0 to 2.33.1. Among many improvements and bug fixes, this unlocks support for pip 25.0.1.
The default version of the Ruff tool has been updated from 0.7.2 to 0.9.6.
The Pants repo now uses Ruff format in lieu of Black. This was not a drop-in replacement, with over 160 files modified (and about 5 MyPy errors introduced by Ruff's formatting).
@rule
decorators have been re-typed, which should allow better call site return-type visibility (fewer Unknown
s and Any
s). Decorator factories of the form @rule(desc=..., level=..., ...)
have also been strongly typed. This may cause typechecking errors for plugin authors, if the plugin is using incorrect types. However, this likely would have manifested as a runtime crash, otherwise.
A bug in the Django backend has been fixed so that a repo may have no Django apps without error.
Pytype was updated to version 2024.9.13 - which is the last to support Python 3.8 and Python 3.9.
The experiemental_test_shell_command
target type learned several new features:
- It now supports the
test
goal's--debug
flag to execute tests interactively. - Outputs may now be captured as test "extra outputs" as specified by the new
output_files
,output_directories
,root_output_directory
, andoutputs_match_mode
fields. (These fields operate in the same manner as for theshell_command
target type.) Captured output will be written in a directory underdist/
based on the target name when a test completes. - It now supports the
runnable_dependencies
field already supported by theshell_command
target type.
For the tfsec
linter, the deprecation of support for leading v
s in the version
and known_versions
field has expired and been removed. Write 1.28.13
instead of v1.28.13
.
For the full changelog, see the individual GitHub Releases for this series: https://github.com/pantsbuild/pants/releases