Skip to content

Latest commit

 

History

History
106 lines (64 loc) · 6.77 KB

2.26.x.md

File metadata and controls

106 lines (64 loc) · 6.77 KB

2.26.x Release Series

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.

What's New

Highlights

New kubernetes backend! See docs for details.

Remote caching/execution

  • Remote cache: FindMissingBlobsRequest will now make multiple request if the number of files is large. (#20708)

Deprecations

General

  • 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.

New call-by-name syntax for @rules

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.

Goals

Backends

Docker

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

Python

Some deprecations have expired and been removed:

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 Unknowns and Anys). 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.

Shell

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, and outputs_match_mode fields. (These fields operate in the same manner as for the shell_command target type.) Captured output will be written in a directory under dist/ based on the target name when a test completes.
  • It now supports the runnable_dependencies field already supported by the shell_command target type.

Terraform

For the tfsec linter, the deprecation of support for leading vs in the version and known_versions field has expired and been removed. Write 1.28.13 instead of v1.28.13.

Plugin API changes

Full Changelog

For the full changelog, see the individual GitHub Releases for this series: https://github.com/pantsbuild/pants/releases