Pantsbuild.pants

Latest version: v2.17.1

Safety actively analyzes 622882 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

2.16.1

Only internal changes since prior release.

2.16.1rc4

Bug fixes

* Fix algorithm for gathering Go build requests with coverage. (Cherry-pick of 20030) ([20032](https://github.com/pantsbuild/pants/pull/20032))

2.16.1rc3

Bug fixes

* Support using `__defaults__` in same BUILD file as environment targets. (Cherry-pick of 19446) ([19968](https://github.com/pantsbuild/pants/pull/19968))

* Add missing `__init__.py` file for the `yamllint` backend. (Cherry-pick of 19899) ([19908](https://github.com/pantsbuild/pants/pull/19908))

* Add additional directories with register.py to pants bin deps (Cherry pick of 19848) ([19857](https://github.com/pantsbuild/pants/pull/19857))

* Fix global report coverage for namespaced packages (Cherry-pick of 19821) ([19839](https://github.com/pantsbuild/pants/pull/19839))

* Have Pants create the `immutable_inputs` base parent(s) (Cherry-pick of 19646) ([19653](https://github.com/pantsbuild/pants/pull/19653))

* Use hardlinking when possible for mypy cache (Cherry-pick of 19633) ([19649](https://github.com/pantsbuild/pants/pull/19649))

* Undo pyenv install marking files as RO (Cherry-pick of 19645) ([19647](https://github.com/pantsbuild/pants/pull/19647))

* Use named cache for Docker-env PBS (Cherry-pick of 19611) ([19617](https://github.com/pantsbuild/pants/pull/19617))

* Make mypy cache move truly atomic (Cherry-pick of 19610) ([19614](https://github.com/pantsbuild/pants/pull/19614))

* Scala: support Enums in dependency inference (Cherry pick of 19588) ([19594](https://github.com/pantsbuild/pants/pull/19594))

* Fix the new tool lockfile deprecation message. (cherrypick of 19565) ([19571](https://github.com/pantsbuild/pants/pull/19571))

* Fix `golangci-lint` runner script (Cherry-pick of 19015) ([19472](https://github.com/pantsbuild/pants/pull/19472))

* Use the `package_name` variable to fix an `UnboundLocalError`. (Cherry-pick of 19433) ([19452](https://github.com/pantsbuild/pants/pull/19452))

Documentation

* Update release docs with latest changes ([19895](https://github.com/pantsbuild/pants/pull/19895))

* docs: fix code examples for `setting-up-ide` and `interpreter-compatibility` docs (Cherry-pick of 19624) ([19638](https://github.com/pantsbuild/pants/pull/19638))

* docs: add 2.16 entry to changelog (Cherry-pick of 19589) ([19598](https://github.com/pantsbuild/pants/pull/19598))

* Add ruff, adjust pyugprade, autoflake in docs (Cherry-pick of 19555) ([19577](https://github.com/pantsbuild/pants/pull/19577))

* Catch google artifact registry gotcha (Cherry-pick of 19568) ([19569](https://github.com/pantsbuild/pants/pull/19569))

* Stop referring to ~/.cache/pants/setup in CI docs (Cherry-pick of 19554) ([19560](https://github.com/pantsbuild/pants/pull/19560))

* Visibility: documentation fixes and clarifications. (Cherry-pick of 19438) ([19495](https://github.com/pantsbuild/pants/pull/19495))

2.16.1rc2

Never released due to build issues.

2.16.1rc1

Never released due to build issues.

2.16.1rc0

Bug Fixes

* Visibility: fix issue with using target type in verbose rule selector. (Cherry-pick of 19437) ([19457](https://github.com/pantsbuild/pants/pull/19457))

* Fix helm documentation example (Cherry-pick of 19271) ([19310](https://github.com/pantsbuild/pants/pull/19310))

Documentation

* Tweak getting-help docs (Cherry-pick of 19418) ([19420](https://github.com/pantsbuild/pants/pull/19420))

* Refine `run_shell_command` docs (Cherry-pick of 19413) ([19422](https://github.com/pantsbuild/pants/pull/19422))

* Add a sponsorships page to the docsite. (Cherry-pick of 19412) ([19417](https://github.com/pantsbuild/pants/pull/19417))

* Get doc titles from the in-repo markdown files (Cherry-pick of 19311) ([19320](https://github.com/pantsbuild/pants/pull/19320))

* docs: layout tweak of caching info, remove toolchain :( and additional info about bazel-remote-cache (Cherry-pick of 19299) ([19331](https://github.com/pantsbuild/pants/pull/19331))


release_2.20.0.dev0
New Features

* Code Quality Tool Lib ([20135](https://github.com/pantsbuild/pants/pull/20135))

* Python: Enable code formatting using Ruff ([20098](https://github.com/pantsbuild/pants/pull/20098))

* Add docker image output field to support publish to repository when using BuildKit ([20154](https://github.com/pantsbuild/pants/pull/20154))

User API Changes

* Remove deprecated `[export].symlink_python_virtualenv` option ([20214](https://github.com/pantsbuild/pants/pull/20214))

Plugin API Changes

* Remove deprecated `rule_helper` ([20213](https://github.com/pantsbuild/pants/pull/20213))

Bug Fixes

* Skip jvm dependencies without entries ([20192](https://github.com/pantsbuild/pants/pull/20192))

* Support inferring JS deps from `export ... from ...` statements ([20190](https://github.com/pantsbuild/pants/pull/20190))

* Remove print() statement ([20196](https://github.com/pantsbuild/pants/pull/20196))

* Do not choke on values from macros on environment targets during bootstrap. ([20191](https://github.com/pantsbuild/pants/pull/20191))

* Use a Zulu JDK 8 to run the Kotlin analyzer. ([20184](https://github.com/pantsbuild/pants/pull/20184))

* Fix: support helm repos with trailing slashes ([20177](https://github.com/pantsbuild/pants/pull/20177))


release_2.18.1rc0
Bug Fixes

* Silence warnings about internal call of deprecated Helm function on 2.18 ([20217](https://github.com/pantsbuild/pants/pull/20217))

* Skip jvm dependencies without entries (Cherry-pick of 20192) ([20212](https://github.com/pantsbuild/pants/pull/20212))

* Resolve appropriate Scala artifacts for BSP (Cherry-pick of 20157) ([20163](https://github.com/pantsbuild/pants/pull/20163))

* Do not choke on values from macros on environment targets during bootstrap. (Cherry-pick of 20191) ([20199](https://github.com/pantsbuild/pants/pull/20199))

* Use a Zulu JDK 8 to run the Kotlin analyzer. (Cherry-pick of 20184) ([20194](https://github.com/pantsbuild/pants/pull/20194))


release_2.18.0

❗❗❗ This project is no longer being released via PyPI, and is instead released via GitHub Releases. See https://github.com/pantsbuild/pants/releases

Individuals and companies can now [sponsor Pants financially](https://www.pantsbuild.org/docs/sponsorship).

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](https://www.pantsbuild.org/docs/sponsorship), as well as individual sponsorships via [GitHub](https://github.com/sponsors/pantsbuild).

What's New

Highlights

- The improvements to AWS Lambda and Google Cloud Function support in 2.17 have continued in 2.18, including simpler configuration and support for AWS Lambda Layers.
- Many more options can now be controlled when building Docker images.
- Significant feature work and bug fixes to "deploy" backends like Helm and Terraform.

Keep reading to see the details and what's also included.

Overall

[The `pants` launcher binary](https://www.pantsbuild.org/v2.18/docs/installation) is now **required** to run Pants. It must be version 0.10.0 or greater: run `PANTS_BOOTSTRAP_VERSION=report pants` to check and `SCIE_BOOT=update pants` to upgrade to the latest. Pants 2.18 and later are not distributed via PyPI, and thus the launcher is required to coordinate downloading the appropriate versions from GitHub Releases.

[The `[cli.alias]` section](https://www.pantsbuild.org/v2.18/docs/reference-cli) of `pants.toml` now supports defining flag-like aliases. For example: `--all-changed = "--changed-since=HEAD --changed-dependents=transitive"`.

[The `paths` goal](https://www.pantsbuild.org/v2.18/docs/reference-paths) now supports passing groups of targets to `--from` and/or `--to`.

The `help` goal now supports showing help for an environment variable. For example: `pants help PANTS_FIX_ONLY`.

Additional bug fixes:

- The client now detects changes in pants configuration that require restarting the pants daemon.
- Sequences of goals that mutate files on disk and then immediately re-read them now no longer fail spuriously if the second goal happens faster than the OS file-change notification is received. For instance, `pants fix lint ::` would sometimes run the `lint` goal on the files before the `fix` changes were applied.
- More reliable detection of when optimised hard-linking can be used for creating sandboxes. For instance, no longer hitting errors when a single device is mounted multiple times.

The deprecation for referring to a "secondary" owner target via the file name has expired, and so this is no longer supported. For example, if `path/to/main.py` is the entry point of the `path/to:binary` `pex_binary` target, an invocation like `pants package path/to/main.py` must now use the target address instead: `pants package path/to:binary`.

BUILD files

Several bug fixes:

- Better error messages when a `BUILD` file refers to an unknown value.
- `__defaults__` can now be used in the same `BUILD` file as [environment targets](https://www.pantsbuild.org/v2.18/docs/environments) like `local_environment`.

Performance

Memory usage has been reduced, particularly for the Go backend.

A best-effort limit has been placed on the number of open cache file handles (approximately 1000), reducing the need for `ulimit` adjustments.

Remote caching/execution

Remote caching using the gRPC remote execution API now supports mTLS, via the new [`remote_client_certs_path`](https://www.pantsbuild.org/v2.18/docs/reference-global#remote_client_certs_path) and [`remote_client_key_path`](https://www.pantsbuild.org/v2.18/docs/reference-global#remote_client_key_path) options in the `[GLOBAL]` section.

Backends

Several backends that were intended to be included in previous releases were accidentally missing from the released pants artifacts, these are now available in 2.18:

- `pants.backend.experimental.openapi.codegen.java`: Enables generating Java from OpenAPI.
- `pants.backend.experimental.python.framework.django`: Enables better support for projects using Django.
- `pants.backend.experimental.swift`: Enables core Swift support.
- `pants.backend.python.providers.experimental.pyenv.custom_install`: Enables customising how the pyenv provider builds a Python interpreter.

In addition, the [documentation of backends](https://www.pantsbuild.org/v2.18/docs/enabling-backends) now lists all backends, including preview ones that were not previously advertised. Please go check it out, try backends relevant to you and let us know how they go for your use cases, [report bugs](https://www.pantsbuild.org/v2.18/docs/getting-help) and/or [submit fixes](https://www.pantsbuild.org/v2.18/docs/contributor-overview)!

Docker

More options can be passed when building images (see and docs for more details:

- on [the `[docker]` subsystem](https://www.pantsbuild.org/v2.18/docs/reference-docker): `build_hosts`, `build_no_cache`
- on [the `docker_image` target](https://www.pantsbuild.org/v2.18/docs/reference-docker_image): `build_network`, `build_platform`, `extra_build_hosts`

Additional features and bug fixes:

- Registries with the same address no longer silently overwrite each other, and instead now emit an error.
- [The `secrets` field](https://www.pantsbuild.org/v2.18/docs/reference-docker_image#codesecretscode) now supports expanding `~` to refer to the current user's home directory.
- [The `image_tags` field](https://www.pantsbuild.org/v2.18/docs/reference-docker_image#codeimage_tagscode) now has an explanatory error if it is incorrectly empty.

Helm

[The `helm_unittest_tests` target](https://www.pantsbuild.org/v2.18/docs/helm-overview#helm-unit-tests) has had several improvements:

- support for being added by the `tailor` goal (this can be disabled with the new `[helm].tailor_unittests` option)
- support for [snapshot testing](https://www.pantsbuild.org/v2.18/docs/helm-overview#snapshot-testing) via the new `generate-snapshots` goal

[The new `pants.backend.experimental.helm.check.kubeconform` backend](https://www.pantsbuild.org/v2.18/docs/helm-kubeconform) allows running Kubeconform on `helm_chart` and `helm_deployment` targets as part of the `check` goal.

**Deprecations**:

- The `helm_deployment` target should now specify the [new `chart` field](https://www.pantsbuild.org/v2.18/docs/reference-helm_deployment#codechartcode) to explicitly indicate which chart is being deployed.
- The `create_namespace` field for `helm_deployment` will not be supported in future, use the passthrough argument `--create-namespace` instead.
- The `{env.VAR_NAME}` interpolation syntax some fields of `helm_deployment` has been replaced by the more [general `env` build file function](https://www.pantsbuild.org/v2.18/docs/targets#environment-variables); for instance `"text-{env.VAR_NAME}"` can become `f"text-{env('VAR_NAME')}"`.
- The `[helm].tailor` option has been renamed to [`tailor_charts`](https://www.pantsbuild.org/v2.18/docs/reference-helm#tailor_charts).

Additional features and bug fixes:

- Relative target addresses for `docker_image`s can be passed like `helm_deployment(values={"some_image": ":target-name"})`, and are expanded in the same way as non-relative addreses `path/to:target-name`.
- If the passthrough `--debug` argument is specified, like `pants experimental-deploy path/to:helm-deployment -- --debug`, that flag is now passed to all Helm invocations pants does.
- The Helm binary has been upgraded to 3.12.3 by default.
- [The new `version` field to `helm_chart`](https://www.pantsbuild.org/v2.18/docs/helm-overview#helm-chart-version) allows overriding the version in `Chart.yaml`.


JavaScript

The `node_build_script` function now supports `extra_env_vars` to specify additional environment variables when executing.

Node-based tools can now install from a user-provided 'resolve'/`package.json`, similar to Python tools.

The dependency inference for JavaScript has been rewritten into Rust, and thus runs much faster.

Python

The functions-as-a-service (FaaS) backends, [`pants.backend.awslambda.python`](https://www.pantsbuild.org/v2.18/docs/awslambda-python) and [`pants.backend.google_cloud_function.python`](https://www.pantsbuild.org/v2.18/docs/google-cloud-function-python) have seen more improvements in 2.18:

- Deprecation: the `python_awslambda` target has been renamed to `python_aws_lambda_function`.
- Deprecation: the `[lambdex].layout = "zip"` value in `pants.toml` is now the default, and the `[lambdex]` section should be removed.
- New: [the `python_aws_lambda_layer` target](https://www.pantsbuild.org/v2.18/docs/awslambda-python#building-a-lambda-layer) can be used to build Layers for AWS Lambda.
- New: the `runtime` field is no longer necessary when the interpreter constraints unambiguously refer to an entire single major version. For instance, with `[python].interpreter_constraints = ["==3.11.*"]`, one doesn't need to specify `runtime="python3.11"` to `python_aws_lambda_function` or `runtime="python311"` to `python_google_cloud_function`, as it will be inferred.
- New: for AWS Lambda targets, the `complete_platforms` argument now has default values provided by Pants, which gives more reliable builds, especially when building on a different platform than the AWS Lambda itself. This change also means that only one of the `complete_platforms` or `platforms` fields should be provided.

The new, faster parser for dependency inference is now the default, so the `[python-infer].use_rust_parser` option can be removed from `pants.toml`, if it is being explicitly set to `true`. The old parser is deprecated and will be removed: follow the warnings in 2.17 to move to the new parser.

The [new `pants.backend.experimental.python.typecheck.pytype` backend](https://www.pantsbuild.org/v2.18/docs/reference-pytype) allows running the `pytype` type checker as part of the `check` goal.

Additional features and bug fixes:

- The `tailor` goal now supports automatically creating `python_requirements` targets for in `pyproject.toml` files that follow [PEP 621 to specify dependencies](https://peps.python.org/pep-0621/#dependencies-optional-dependencies).
- Imports within a `with contextlib.suppress(ImportError): ...` construct are now considered weak imports.
- The global coverage report now correctly handles namespaced packages.
- `pex_binary` targets that consume `python_distribution` targets now work with just the distributions, not their transitive dependencies (the files that are used to build the distribution).
- Pants now emits an error if `isort` cannot read its configuration file (NB. `isort` itself emits warnings for this, but they would not be visible when running `isort` under the default Pants configuration).
- [The `pants.backend.python.typecheck.mypy` backend](https://www.pantsbuild.org/v2.18/docs/python-check-goal) is now more resilient to its cache being removed.

Some deprecations have expired and the supporting code has been removed:

- the "old style" tool lockfiles are no longer supported, and instead customising the versions/installation of tools like `black`, `mypy` and `pytest` should configure [a "normal" resolve](https://www.pantsbuild.org/v2.18/docs/python-lockfiles#lockfiles-for-tools)
- using `pants export` without a `--resolve` flag is no longer supported, always pass that flag

Go

Memory usage has been reduced.

Go processes are now cached using the full version of the Go compiler (for example, `go1.20.6`) so that artifacts are not incorrectly reused between different patch versions.

Building with coverage no longer has an exponential blow-up when preparing the build requests.

JVM

The deprecation for the `excludes` field on `jvm_artifact` has expired, use `exclusions` instead.

[The coursier tool](https://www.pantsbuild.org/v2.18/docs/reference-coursier) now uses v2.1.6 by default, and, for this version, supports a native binary on ARM macOS (Apple Silicon).

The `deploy_jar` target now supports [an `exclude_files` field](https://www.pantsbuild.org/v2.18/docs/reference-deploy_jar#codeexclude_filescode).

NEW: Rust

The new `pants.backend.experimental.rust` backend has been added, with support for using `rustfmt` to format Rust source files.

Scala

The [new `scala_artifact` target](https://www.pantsbuild.org/v2.18/docs/reference-scala_artifact) can be used to track third-party artifacts from Scala, with Pants then understanding how Scala artifacts include the Scala version in their coordinates.

Shell

The `shellcheck` binary for [the `pants.backend.shell.lint.shellcheck` backend](https://www.pantsbuild.org/v2.18/docs/shell#shellcheck-linter) is now fetched from `vscode-shellcheck`, and thus now supports AArch64 macOS (Apple Silicon) natively.

The deprecations for the pre-2.16 target names have expired, and thus these have been removed:

- `experimental_shell_command`: use `shell_command`
- `experimental_run_shell_command`: use `run_shell_command`

Terraform

The [new `terraform_deployment` target](https://www.pantsbuild.org/v2.18/docs/reference-terraform_deployment) allows configuring a `terraform_module` to be deployed with [the `experimental-deploy` goal](https://www.pantsbuild.org/v2.18/docs/reference-experimental-deploy).

A new `pants.backend.experimental.terraform.lint.tfsec` backend has been added to run the `tfsec` linter as part of the `lint` goal.

The `check` goal now runs `terraform init` to ensure modules are installed before validating.

Visibility

[The `pants.backend.experimental.visibility` backend](https://www.pantsbuild.org/v2.18/docs/validating-dependencies) is now also runs as a linter, such as when running `pants lint ::`, to report all visibility violations at one time.

Visibility rules about dependencies in the root of the repository are now supported.

Plugin API Changes

Pants no longer publishes wheels to PyPI. The only supported way to depend on pants itself is [the `pants_requirements` target](https://www.pantsbuild.org/v2.18/docs/reference-pants_requirements), which now supports a new `version_spec` field if one needs to depend on a different version of Pants than the currently executing one.

The `include_special_cased_deps` flag (on `DependenciesRequest`, `TransitiveTargetsRequest`, and `CoarsenedTargetsRequest`) is replaced with `should_traverse_deps_predicate`. If set to `True`, use `should_traverse_deps_predicate=pants.engine.target.AlwaysTraverseDeps()` instead. See [19272](https://github.com/pantsbuild/pants/pull/19272) and [#19387](https://github.com/pantsbuild/pants/pull/19387) for details.

The `TestResult` `stdout` and `stderr` fields have been renamed to `stdout_bytes` and `stderr_bytes`, and store `bytes` instead of `str`, to handle non-UTF-8 data without crashing.

Other changes:

- Plugins can now declare additional requirements in a `requirements.txt` file next to `register.py`.
- Pants only supports running on Python 3.9 now.
- Named caches can now used digits in addition to lower-case letters and underscores.
- The `pants.core.goals.package.TraverseIfNotPackageTarget` type can be used with the new `should_traverse_deps_predicate` to treat packageable targets as "leaves" when finding dependencies; for instance, stopping at a `pex_binary` without also surfacing the `python_sources` that are used for it.

The deprecations for many request types has expired (follow instructions in warnings in 2.17 to resolve), so they are now removed: `AllAssetTargetsRequest`, `AllTargetsRequest`, `BashBinaryRequest`, `CatBinaryRequest`, `CGoCompilerWrapperScriptRequest`, `ChmodBinaryRequest`, `DiffBinaryRequest`, `DjangoAppsRequest`, `DockerBinaryRequest`, `GitBinaryRequest`, `GunzipBinaryRequest`, `MkdirBinaryRequest`, `PythonBinary`, `ReadlinkBinaryRequest`, `TarBinaryRequest`, `UnzipBinaryRequest`, `ZipBinaryRequest`.

Full Changelog

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


release_2.17.1
The second stable release of the `2.17.x` series, with only documentation changes since the previous `rc`!



release_2.19.0a0
New Features

* Support grouping parametrizations ([20065](https://github.com/pantsbuild/pants/pull/20065))

* Parametrizable plugin fields for target generators ([20059](https://github.com/pantsbuild/pants/pull/20059))

* Add `exclude_files` field to `deploy_jar` target ([20075](https://github.com/pantsbuild/pants/pull/20075))

User API Changes

* Discover ASDF interpreters by default ([20105](https://github.com/pantsbuild/pants/pull/20105))

Bug Fixes

* Resolve appropriate Scala artifacts for BSP ([20157](https://github.com/pantsbuild/pants/pull/20157))

* Fix `protobuf_sources` with parametrized `python_resolve` ([20069](https://github.com/pantsbuild/pants/pull/20069))

* Fix mypy cache dir not being created ([20139](https://github.com/pantsbuild/pants/pull/20139))

Documentation

* Update docs with get-pants.sh new install location: `~/.local/bin` ([20155](https://github.com/pantsbuild/pants/pull/20155))

* Initial sketch of what's new in 2.18 ([19999](https://github.com/pantsbuild/pants/pull/19999))

* Avoid quotes in suggested .env file for IDEs ([20144](https://github.com/pantsbuild/pants/pull/20144))


release_2.18.0rc5
New Features

* Add `exclude_files` field to `deploy_jar` target (Cherry-pick of 20075) ([20126](https://github.com/pantsbuild/pants/pull/20126))

Bug Fixes

* Fix mypy cache dir not being created (Cherry-pick of 20139) ([20142](https://github.com/pantsbuild/pants/pull/20142))

* The pants native client should respect the `PANTS_BUILDROOT_OVERRIDE` provided by `scie-pants`. (Cherry-pick of 20112) ([20124](https://github.com/pantsbuild/pants/pull/20124))

Documentation

* Initial sketch of what's new in 2.18 (Cherry-pick of 19999) ([20147](https://github.com/pantsbuild/pants/pull/20147))

* Avoid quotes in suggested .env file for IDEs (Cherry-pick of 20144) ([20146](https://github.com/pantsbuild/pants/pull/20146))


release_2.19.0.dev4
New Features

* Add `TransitivelyExcludeDependenciesRequest` to mirror user-provided values ([20080](https://github.com/pantsbuild/pants/pull/20080))

* Use `ambiguity-resolution` for Python protobuf/grpc dependency inference ([19939](https://github.com/pantsbuild/pants/pull/19939))

* Configurable override of url generation for External Tool versions ([20074](https://github.com/pantsbuild/pants/pull/20074))

Plugin API Changes

* Plumb the hidden `_find_links` through non-resolve Pex invocations ([20085](https://github.com/pantsbuild/pants/pull/20085))

Bug Fixes

* The pants native client should respect the `PANTS_BUILDROOT_OVERRIDE` provided by `scie-pants`. ([20112](https://github.com/pantsbuild/pants/pull/20112))

* Make CompletePexEnvironment.environment_dict accept `PATH` from `subprocess-environment` ([20082](https://github.com/pantsbuild/pants/pull/20082))

* Fix coursier download for arm64, bumps default to v2.1.6 ([19940](https://github.com/pantsbuild/pants/pull/19940))

* Add best-effort limits on async file opens to reduce file handle counts ([20055](https://github.com/pantsbuild/pants/pull/20055))

Documentation

* vscode: add rust settings to suggested configuration in docs ([20094](https://github.com/pantsbuild/pants/pull/20094))

* Revert "Create the README file in german (20070)" ([20083](https://github.com/pantsbuild/pants/pull/20083))

* Create the README file in german ([20070](https://github.com/pantsbuild/pants/pull/20070))


release_2.18.0rc4
New Features

* Configurable override of url generation for External Tool versions (Cherry-pick of 20074) ([20100](https://github.com/pantsbuild/pants/pull/20100))

Plugin API Changes

* Plumb the hidden `_find_links` through non-resolve Pex invocations (Cherry-pick of 20085) ([20095](https://github.com/pantsbuild/pants/pull/20095))

Bug Fixes

* Fix coursier download for arm64, bumps default to v2.1.6 (Cherry-pick of 19940) ([20092](https://github.com/pantsbuild/pants/pull/20092))

* Add best-effort limits on async file opens to reduce file handle counts (Cherry-pick of 20055) ([20077](https://github.com/pantsbuild/pants/pull/20077))


release_2.17.1rc3
Bug Fixes

* Add best-effort limits on async file opens to reduce file handle counts (Cherry-pick of 20055) ([20078](https://github.com/pantsbuild/pants/pull/20078))



release_2.19.0.dev3
New Features

* Optionally retry failed tests ([19760](https://github.com/pantsbuild/pants/pull/19760))

* Create system-binaries subsystem ([19377](https://github.com/pantsbuild/pants/pull/19377))

User API Changes

* Upgrade Pex to 2.1.148. ([20048](https://github.com/pantsbuild/pants/pull/20048))

* Deprecate the platforms field on pex_binary. ([20012](https://github.com/pantsbuild/pants/pull/20012))

Bug Fixes

* Fix protoc support on M1 mac ([20058](https://github.com/pantsbuild/pants/pull/20058))

* Fix algorithm for gathering Go build requests with coverage. ([20030](https://github.com/pantsbuild/pants/pull/20030))

* `docker_image`: The `image_tags` field must not be empty. ([19980](https://github.com/pantsbuild/pants/pull/19980))

Documentation

* doc: Some guidance on auto-fixing goals in CI ([20040](https://github.com/pantsbuild/pants/pull/20040))

* docs: remove reference to `use_deprecated_directory_cli_args_semantics` ([20041](https://github.com/pantsbuild/pants/pull/20041))

* added a new section in Using Pants in CI on partial clones ([20028](https://github.com/pantsbuild/pants/pull/20028))

* Document how to build cross-platform pexes. ([20008](https://github.com/pantsbuild/pants/pull/20008))

* Specify pants as running with cp3.9 only in plugin docs ([20003](https://github.com/pantsbuild/pants/pull/20003))

* docs: Remove pants 2.15 example configuration. ([19995](https://github.com/pantsbuild/pants/pull/19995))

* Replace maintainer release duty with MOTW in docs ([19987](https://github.com/pantsbuild/pants/pull/19987))


release_2.18.0rc3
Bug Fixes

* Fix algorithm for gathering Go build requests with coverage. (Cherry-pick of 20030) ([20031](https://github.com/pantsbuild/pants/pull/20031))

* `docker_image`: The `image_tags` field must not be empty. (Cherry-pick of 19980) ([19990](https://github.com/pantsbuild/pants/pull/19990))

Documentation

* added a new section in Using Pants in CI on partial clones (Cherry-pick of 20028) ([20029](https://github.com/pantsbuild/pants/pull/20029))

* Specify pants as running with cp3.9 only in plugin docs (Cherry-pick of 20003) ([20005](https://github.com/pantsbuild/pants/pull/20005))

* docs: Remove pants 2.15 example configuration. (Cherry-pick of 19995) ([19998](https://github.com/pantsbuild/pants/pull/19998))

* Replace maintainer release duty with MOTW in docs (Cherry-pick of 19987) ([19992](https://github.com/pantsbuild/pants/pull/19992))


release_2.17.1rc2
Bug Fixes

* Fix algorithm for gathering Go build requests with coverage. (Cherry-pick of 20030) ([20033](https://github.com/pantsbuild/pants/pull/20033))

* `docker_image`: The `image_tags` field must not be empty. (Cherry-pick of 19980) ([19991](https://github.com/pantsbuild/pants/pull/19991))

Documentation

* docs: Remove pants 2.15 example configuration. (Cherry-pick of 19995) ([19997](https://github.com/pantsbuild/pants/pull/19997))



release_2.16.1rc4
Bug fixes

* Fix algorithm for gathering Go build requests with coverage. (Cherry-pick of 20030) ([20032](https://github.com/pantsbuild/pants/pull/20032))


release_2.17.1rc1
Bug Fixes

* Support using `__defaults__` in same BUILD file as environment targets. (Cherry-pick of 19446) ([19969](https://github.com/pantsbuild/pants/pull/19969))

* Fetch shellcheck from vscode-shellcheck for M1 support (Cherry-pick of 19945) ([19952](https://github.com/pantsbuild/pants/pull/19952))

* Immediately invalidate written files in write_digest (Cherry-pick of 19903) ([19949](https://github.com/pantsbuild/pants/pull/19949))

* Fix "failed to create hardlink" error due to multiple mounts on the same device (Cherry-pick of 19894) ([19914](https://github.com/pantsbuild/pants/pull/19914))

* Add missing `__init__.py` file for the `yamllint` backend. (Cherry-pick of 19899) ([19906](https://github.com/pantsbuild/pants/pull/19906))

Documentation

* Add Tom and Gautham to the Contributors page. (Cherry-pick of 19955) ([19962](https://github.com/pantsbuild/pants/pull/19962))

* Remove references to PyPI/`pantsbuild.pants` wheels in docs (Cherry-pick of 19924) ([19936](https://github.com/pantsbuild/pants/pull/19936))



release_2.16.1rc3
Bug fixes

* Support using `__defaults__` in same BUILD file as environment targets. (Cherry-pick of 19446) ([19968](https://github.com/pantsbuild/pants/pull/19968))

* Add missing `__init__.py` file for the `yamllint` backend. (Cherry-pick of 19899) ([19908](https://github.com/pantsbuild/pants/pull/19908))

* Add additional directories with register.py to pants bin deps (Cherry pick of 19848) ([19857](https://github.com/pantsbuild/pants/pull/19857))

* Fix global report coverage for namespaced packages (Cherry-pick of 19821) ([19839](https://github.com/pantsbuild/pants/pull/19839))

* Have Pants create the `immutable_inputs` base parent(s) (Cherry-pick of 19646) ([19653](https://github.com/pantsbuild/pants/pull/19653))

* Use hardlinking when possible for mypy cache (Cherry-pick of 19633) ([19649](https://github.com/pantsbuild/pants/pull/19649))

* Undo pyenv install marking files as RO (Cherry-pick of 19645) ([19647](https://github.com/pantsbuild/pants/pull/19647))

* Use named cache for Docker-env PBS (Cherry-pick of 19611) ([19617](https://github.com/pantsbuild/pants/pull/19617))

* Make mypy cache move truly atomic (Cherry-pick of 19610) ([19614](https://github.com/pantsbuild/pants/pull/19614))

* Scala: support Enums in dependency inference (Cherry pick of 19588) ([19594](https://github.com/pantsbuild/pants/pull/19594))

* Fix the new tool lockfile deprecation message. (cherrypick of 19565) ([19571](https://github.com/pantsbuild/pants/pull/19571))

* Fix `golangci-lint` runner script (Cherry-pick of 19015) ([19472](https://github.com/pantsbuild/pants/pull/19472))

* Use the `package_name` variable to fix an `UnboundLocalError`. (Cherry-pick of 19433) ([19452](https://github.com/pantsbuild/pants/pull/19452))

Documentation

* Update release docs with latest changes ([19895](https://github.com/pantsbuild/pants/pull/19895))

* docs: fix code examples for `setting-up-ide` and `interpreter-compatibility` docs (Cherry-pick of 19624) ([19638](https://github.com/pantsbuild/pants/pull/19638))

* docs: add 2.16 entry to changelog (Cherry-pick of 19589) ([19598](https://github.com/pantsbuild/pants/pull/19598))

* Add ruff, adjust pyugprade, autoflake in docs (Cherry-pick of 19555) ([19577](https://github.com/pantsbuild/pants/pull/19577))

* Catch google artifact registry gotcha (Cherry-pick of 19568) ([19569](https://github.com/pantsbuild/pants/pull/19569))

* Stop referring to ~/.cache/pants/setup in CI docs (Cherry-pick of 19554) ([19560](https://github.com/pantsbuild/pants/pull/19560))

* Visibility: documentation fixes and clarifications. (Cherry-pick of 19438) ([19495](https://github.com/pantsbuild/pants/pull/19495))


release_2.19.0.dev2
New Features

* add support for mTLS in remote cache usage ([19887](https://github.com/pantsbuild/pants/pull/19887))

* Add a GitHub Actions Cache remote cache backend ([19831](https://github.com/pantsbuild/pants/pull/19831))

* Support pass-through args to the repl goal for ipython ([19858](https://github.com/pantsbuild/pants/pull/19858))

Plugin API Changes

* Always have coloured output and then strip later for pytest, helm unittest, shunit2 ([19923](https://github.com/pantsbuild/pants/pull/19923))

Bug Fixes

* Fix Buf expected configuration files ([18015](https://github.com/pantsbuild/pants/pull/18015))

* Don't crash in the presence of non-UTF-8 env vars. ([19926](https://github.com/pantsbuild/pants/pull/19926))

* Fetch shellcheck from vscode-shellcheck for M1 support ([19945](https://github.com/pantsbuild/pants/pull/19945))

* Fix missing venv path when running Pyright ([19430](https://github.com/pantsbuild/pants/pull/19430))

* Immediately invalidate written files in write_digest ([19903](https://github.com/pantsbuild/pants/pull/19903))

* Visibility: Fix issue with root paths. ([19935](https://github.com/pantsbuild/pants/pull/19935))

* Regex dependency inference module mapping ([19684](https://github.com/pantsbuild/pants/pull/19684))

Documentation

* Fix "the the" typos in the codebase. ([19967](https://github.com/pantsbuild/pants/pull/19967))

* Add Tom and Gautham to the Contributors page. ([19955](https://github.com/pantsbuild/pants/pull/19955))


release_2.18.0rc2
New Features

* add support for mTLS in remote cache usage (Cherry-pick of 19887) ([19960](https://github.com/pantsbuild/pants/pull/19960))

Bug Fixes

* Fetch shellcheck from vscode-shellcheck for M1 support (Cherry-pick of 19945) ([19951](https://github.com/pantsbuild/pants/pull/19951))

* Immediately invalidate written files in write_digest (Cherry-pick of 19903) ([19948](https://github.com/pantsbuild/pants/pull/19948))

* Visibility: Fix issue with root paths. (Cherry-pick of 19935) ([19937](https://github.com/pantsbuild/pants/pull/19937))

Documentation

* Add Tom and Gautham to the Contributors page. (Cherry-pick of 19955) ([19961](https://github.com/pantsbuild/pants/pull/19961))


release_2.19.0.dev1
New Features

* Add support for OpenDAL-backed remote stores (file://, initially) ([19827](https://github.com/pantsbuild/pants/pull/19827))

User API Changes

* Move .pids under .pants.d by default ([19911](https://github.com/pantsbuild/pants/pull/19911))

* Enable lockfile diff report by default. ([19900](https://github.com/pantsbuild/pants/pull/19900))

Bug Fixes

* Support using `parametrize()` with a single value. ([19920](https://github.com/pantsbuild/pants/pull/19920))

* Don't include `files` targets in coverage sandbox. ([19913](https://github.com/pantsbuild/pants/pull/19913))

* bump javaparser and add test for sealed/permits/yield/switch expressions ([19870](https://github.com/pantsbuild/pants/pull/19870))

* Fix "failed to create hardlink" error due to multiple mounts on the same device ([19894](https://github.com/pantsbuild/pants/pull/19894))

* Add missing `__init__.py` file for the `yamllint` backend. ([19899](https://github.com/pantsbuild/pants/pull/19899))

Documentation

* Remove references to PyPI/`pantsbuild.pants` wheels in docs ([19924](https://github.com/pantsbuild/pants/pull/19924))

* Add kubeconfirm, fix typos in enabling-backends.md docs ([19880](https://github.com/pantsbuild/pants/pull/19880))

* List every single backend in docs ([19854](https://github.com/pantsbuild/pants/pull/19854))


release_2.18.0rc1
Bug Fixes

* Fix "failed to create hardlink" error due to multiple mounts on the same device (Cherry-pick of 19894) ([19910](https://github.com/pantsbuild/pants/pull/19910))

* Add missing `__init__.py` file for the `yamllint` backend. (Cherry-pick of 19899) ([19907](https://github.com/pantsbuild/pants/pull/19907))

* Port `pantsd` fingerprinting to Rust, and validate from native client (Cherry-pick of 19833) ([19864](https://github.com/pantsbuild/pants/pull/19864))

Documentation

* Remove references to PyPI/`pantsbuild.pants` wheels in docs (Cherry-pick of 19924) ([19930](https://github.com/pantsbuild/pants/pull/19930))

* List every single backend in docs (Cherry-pick of 19854, 19880) ([19878](https://github.com/pantsbuild/pants/pull/19878))


release_2.17.1rc0
New Features

* `with contextlib.suppress(ImportError)` weakens imports (Cherry-pick of 19293) ([19789](https://github.com/pantsbuild/pants/pull/19789))

Bug Fixes

* Port `pantsd` fingerprinting to Rust, and validate from native client (Cherry-pick of 19833) ([19867](https://github.com/pantsbuild/pants/pull/19867))

* Add additional directories with register.py to pants bin deps (Cherry pick of 19848) ([19855](https://github.com/pantsbuild/pants/pull/19855))

* Fix global report coverage for namespaced packages (Cherry-pick of 19821) ([19837](https://github.com/pantsbuild/pants/pull/19837))

* Allow requesters of `TargetRootsToFieldSets` to turn off the secondary ownership warning (Cherry-pick of 19721) ([19734](https://github.com/pantsbuild/pants/pull/19734))

Performance

* Remove memoization of the `Paths` intrinsic to reduce memory usage (Cherry-pick of 19689) ([19717](https://github.com/pantsbuild/pants/pull/19717))

Documentation

* docs: remove Toolchain references (cherrypick 19508) ([19828](https://github.com/pantsbuild/pants/pull/19828))

* docs: Improve the help string for the global option 'PANTS_CONCURRENT'. (Cherry-pick of 19822) ([19824](https://github.com/pantsbuild/pants/pull/19824))

* Fix Documentation (InitialConfiguration) go backend (Cherry-pick of 19806) ([19809](https://github.com/pantsbuild/pants/pull/19809))

* Fix typoed artifact name in Lambda docs (Cherry-pick of 19739) ([19746](https://github.com/pantsbuild/pants/pull/19746))

* Update the docs changelog to include 2.17.x. (Cherry-pick of 19729) ([19736](https://github.com/pantsbuild/pants/pull/19736))



release_2.19.0.dev0
New Features

* Add cache-to and cache-from options ([19811](https://github.com/pantsbuild/pants/pull/19811))

* Add lint backend to run semgrep ([18593](https://github.com/pantsbuild/pants/pull/18593))

* `with contextlib.suppress(ImportError)` weakens imports ([19293](https://github.com/pantsbuild/pants/pull/19293))

* Add support for openapi-format ([18553](https://github.com/pantsbuild/pants/pull/18553))

User API Changes

* Add missing openapi `java` codegen backend ([19835](https://github.com/pantsbuild/pants/pull/19835))

* Remove deprecations scheduled for 2.19.0.dev0. ([19759](https://github.com/pantsbuild/pants/pull/19759))

* Remove remaining Lambdex code, update FaaS docs ([19738](https://github.com/pantsbuild/pants/pull/19738))

* user api change: change the Pip version option to a string ([19643](https://github.com/pantsbuild/pants/pull/19643))

* Require scie-pants 0.9.2 or newer, for new distribution model ([19654](https://github.com/pantsbuild/pants/pull/19654))

* Add Python 3.12 to the default interpreter universe ([19641](https://github.com/pantsbuild/pants/pull/19641))

Plugin API Changes

* Optionally resolve rules by a provided id ([19755](https://github.com/pantsbuild/pants/pull/19755))

* Remove "old" Python dep parser ([19792](https://github.com/pantsbuild/pants/pull/19792))

* Remove TestResult.{stdout,stderr} and all uses. ([19768](https://github.com/pantsbuild/pants/pull/19768))

Bug Fixes

* Port `pantsd` fingerprinting to Rust, and validate from native client ([19833](https://github.com/pantsbuild/pants/pull/19833))

* Add additional directories with register.py to pants bin deps ([19848](https://github.com/pantsbuild/pants/pull/19848))

* Add --force-exclude to ruff args ([19823](https://github.com/pantsbuild/pants/pull/19823))

* Tweak `fix` partitioning to closer align to `lint` partitioning ([19796](https://github.com/pantsbuild/pants/pull/19796))

* Fix global report coverage for namespaced packages ([19821](https://github.com/pantsbuild/pants/pull/19821))

* Allow requesters of `TargetRootsToFieldSets` to turn off the secondary ownership warning ([19721](https://github.com/pantsbuild/pants/pull/19721))

* Include all binaries available in a venv when fulfilling a VenvPexRequest ([19315](https://github.com/pantsbuild/pants/pull/19315))

* Remove `tensorboard` mapping from our default mapping ([19673](https://github.com/pantsbuild/pants/pull/19673))

* Have Pants create the `immutable_inputs` base parent(s) ([19646](https://github.com/pantsbuild/pants/pull/19646))

* Use hardlinking when possible for mypy cache ([19633](https://github.com/pantsbuild/pants/pull/19633))

* Undo pyenv install marking files as RO ([19645](https://github.com/pantsbuild/pants/pull/19645))

Performance

* Stream large blobs to remote cache directly from local cache file ([19711](https://github.com/pantsbuild/pants/pull/19711))

* Remove memoization of the `Paths` intrinsic to reduce memory usage ([19689](https://github.com/pantsbuild/pants/pull/19689))

Documentation

* docs: Improve the help string for the global option 'PANTS_CONCURRENT'. ([19822](https://github.com/pantsbuild/pants/pull/19822))

* Fix Documentation (InitialConfiguration) go backend ([19806](https://github.com/pantsbuild/pants/pull/19806))

* docs: add chat archive link, more talks, more example repos ([19679](https://github.com/pantsbuild/pants/pull/19679))

* Instructions: pants repo debugging with pycharm ([19787](https://github.com/pantsbuild/pants/pull/19787))

* Tweak titles in the release doc ([19769](https://github.com/pantsbuild/pants/pull/19769))

* generate toml for reference-docs ([19718](https://github.com/pantsbuild/pants/pull/19718))

* Remove Toolchain from who uses Pants page ([19747](https://github.com/pantsbuild/pants/pull/19747))

* Fix typoed artifact name in Lambda docs ([19739](https://github.com/pantsbuild/pants/pull/19739))

* Update the docs changelog to include 2.17.x. ([19729](https://github.com/pantsbuild/pants/pull/19729))

* Remove `PANTS_SHA` from docs ([19719](https://github.com/pantsbuild/pants/pull/19719))

* docs: use Python 3.11+ as example ([18565](https://github.com/pantsbuild/pants/pull/18565))

* Additional mentions and tweaks in 2.17's "What's new" ([19629](https://github.com/pantsbuild/pants/pull/19629))

* docs: update go tracking link to a live ticket instead of the archived project ([19608](https://github.com/pantsbuild/pants/pull/19608))

* docs: fix code examples for `setting-up-ide` and `interpreter-compatibility` docs ([19624](https://github.com/pantsbuild/pants/pull/19624))

* docs: mention that python_distribution targets can use transitive excludes ([19627](https://github.com/pantsbuild/pants/pull/19627))


release_2.18.0rc0
New Features

* `with contextlib.suppress(ImportError)` weakens imports (Cherry-pick of 19293) ([19788](https://github.com/pantsbuild/pants/pull/19788))

User API Changes

* Add Python 3.12 to the default interpreter universe (Cherry-pick of 19641) ([19693](https://github.com/pantsbuild/pants/pull/19693))

* Require scie-pants 0.9.2 or newer, for new distribution model (Cherry-pick of 19654) ([19694](https://github.com/pantsbuild/pants/pull/19694))

Bug Fixes

* Add additional directories with register.py to pants bin deps (Cherry pick of 19848) ([19856](https://github.com/pantsbuild/pants/pull/19856))

* Fix global report coverage for namespaced packages (Cherry-pick of 19821) ([19838](https://github.com/pantsbuild/pants/pull/19838))

* Allow requesters of `TargetRootsToFieldSets` to turn off the secondary ownership warning (Cherry-pick of 19721) ([19728](https://github.com/pantsbuild/pants/pull/19728))

* Have Pants create the `immutable_inputs` base parent(s) (Cherry-pick of 19646) ([19696](https://github.com/pantsbuild/pants/pull/19696))

* Remove `tensorboard` mapping from our default mapping (Cherry-pick of 19673) ([19699](https://github.com/pantsbuild/pants/pull/19699))

* Use hardlinking when possible for mypy cache (Cherry-pick of 19633) ([19692](https://github.com/pantsbuild/pants/pull/19692))

* Undo pyenv install marking files as RO (Cherry-pick of 19645) ([19691](https://github.com/pantsbuild/pants/pull/19691))

Performance

* Remove memoization of the `Paths` intrinsic to reduce memory usage (Cherry-pick of 19689) ([19716](https://github.com/pantsbuild/pants/pull/19716))

Documentation

* docs: Improve the help string for the global option 'PANTS_CONCURRENT'. (Cherry-pick of 19822) ([19825](https://github.com/pantsbuild/pants/pull/19825))

* Fix Documentation (InitialConfiguration) go backend (Cherry-pick of 19806) ([19810](https://github.com/pantsbuild/pants/pull/19810))

* Tweak titles in the release doc (Cherry-pick of 19769) ([19770](https://github.com/pantsbuild/pants/pull/19770))

* Fix typoed artifact name in Lambda docs (Cherry-pick of 19739) ([19745](https://github.com/pantsbuild/pants/pull/19745))

* Update the docs changelog to include 2.17.x. (Cherry-pick of 19729) ([19735](https://github.com/pantsbuild/pants/pull/19735))

* docs: fix code examples for `setting-up-ide` and `interpreter-compatibility` docs (Cherry-pick of 19624) ([19695](https://github.com/pantsbuild/pants/pull/19695))

* docs: use Python 3.11+ as example (Cherry-pick of 18565) ([19700](https://github.com/pantsbuild/pants/pull/19700))

* docs: update go tracking link to a live ticket instead of the archived project (Cherry-pick of 19608) ([19698](https://github.com/pantsbuild/pants/pull/19698))

* docs: mention that python_distribution targets can use transitive excludes (Cherry-pick of 19627) ([19697](https://github.com/pantsbuild/pants/pull/19697))


release_2.17.0
What's New

Individuals and companies can now [sponsor Pants financially](https://www.pantsbuild.org/docs/sponsorship).

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](https://www.pantsbuild.org/docs/sponsorship), as well as individual sponsorships via [GitHub](https://github.com/sponsors/pantsbuild).

Overall

The [`pants` launcher binary](https://github.com/pantsbuild/scie-pants) (aka `scie-pants`) is now the recommended way to run Pants. Use of a `./pants` shell script in a repository is deprecated.

The `pants` launcher has numerous benefits, such as:

* automatically download and maintain a Python distribution for running Pants
* run `pants` from any directory within a repository and not just the build root
* far less overhead when starting commands (up to 4-5×)

See the [Pants installation instructions](https://www.pantsbuild.org/docs/installation) for additional information on how to migrate to the `pants` launcher binary.

Related to this, pants' distribution model is changing, and 2.17 will be the last version where:

* the `pantsbuild.pants` package is published to PyPI. Use [the `pants_requirements` target](https://www.pantsbuild.org/v2.17/docs/reference-pants_requirements) for installing the requisite packages for plugins, rather than `python_requirement` or similar.
* the universal (cross-platform) `pants` PEX is published to GitHub Releases. For future releases, smaller per-platform PEXes will be attached instead.

Performance

As mentioned above, the new launcher binary reduces start-up overhead.

Large files are now cached as standalone files on disk, rather than stored directly in the internal database pants uses for cache (but still under the `~/.cache/pants/lmdb_store` directory). This improves performance for manipulating these files, especially when the cache directory and sandbox temporary directory are on the same file system and thus allow hard-linking.

Backends

Python

Python dependencies are now analyzed via an intrinsic rule implemented in Rust for increased performance over the prior Python implementation of the rule. See [18854](https://github.com/pantsbuild/pants/pull/18854) for discusion of the performance improvements.

Exported mutable virtualenvs can now include [PEP-660](https://peps.python.org/pep-0660/) editable installs of `python_distribution` targets. To enable this feature for a resolve, add that resolve's name to the `[export].py_editables_in_resolves` list in `pants.toml`.
See [18639](https://github.com/pantsbuild/pants/pull/18639) for details on Pants' PEP-660 implementation.

The default `pip` Pants uses under the hood has changed from 20.3.4 to 23.1.2. This newer `pip` has better dependency resolution performance in many cases, but may give different results than the earlier `pip`. Of course those results will still be correct in the sense that they will be compatible with your requirements and constraints.

The `python_awslambda` or `python_google_cloud_function` targets now support a new 'zip' layout, as recommended by the cloud vendors. This layout gives smaller packages and faster cold starts than the existing Lambdex layout, and will become the default in 2.18. See the docs [for `python_awslambda`](https://www.pantsbuild.org/v2.17/docs/awslambda-python#migrating-from-pants-216-and-earlier) and [for `python_google_cloud_function`](https://www.pantsbuild.org/v2.17/docs/google-cloud-function-python#migrating-from-pants-216-and-earlier).

The default value for the `[python].interpreter_constraints` option was deprecated in 2.16 and is now removed: `pants.toml` must provide this option. We recommend constraining to a single interpreter minor version if you can, for instance: `interpreter_constraints = ['==3.11.*']`. See [the Interpreter Compatibility docs for more details](https://www.pantsbuild.org/v2.17/docs/python-interpreter-compatibility).

Docker

The Docker backend now supports authenticating with registries via the `DOCKER_HOST`, `DOCKER_CONFIG` and `DOCKER_CERT_PATH` environment variables.

New: Javascript (experimental!)

Pants now has _very early_ experimental support for Javascript thanks to ongoing efforts by Tobias Nilsson and Theo Ribeiro. Please note that the Javascript backend is still incomplete, is being actively developed, and _probably has critical bugs_. Despite that, the Pants maintainers would appreciate any feedback from the community to help guide our development efforts.

Supported goals are:

* `test`: Letting you run tests via runners installed with the package manager of your choice.
* `package` goal, either to run a customized `package.json` script that produces an artifact via `node_build_script`, or to pack a tarball for npm-registry publication via the `npm_distribution` target.
* `tailor`: Generates build file targets for `*.js`, `*.test.js` and `package.json` files.
* `generate-lockfile`: Creates the lockfile in the format matching a projects package manager.

The backend supports all package managers provided by `corepack`. `yarnv2` and [PlugNPlay](https://yarnpkg.com/features/pnp) is not supported.

Enable the `pants.backend.experimental.javascript` backend to try out this support. Please [file issues](https://github.com/pantsbuild/pants/issues/new/choose) for any issues encountered, and follow along [the stabilization ticket on github](https://github.com/pantsbuild/pants/issues/19240).

New: Taplo TOML Formatter

Pants now supports the [Taplo TOML formatter](https://taplo.tamasfe.dev/). Enable the `pants.backend.tools.taplo` backend to add this support.

Plugin API Changes

Rules should now request output types which do not need an input type via the new one-argument form of `Get`. For example, rules can now write `await Get(ChosenLocalEnvironmentName)`. Certain request types which exists only to work around the previous lack of such synax are now deprecated in favor of the one argument `Get()` form.

The `PythonBinary` type is now deprecated, use `PythonBuildStandalone` instead.


release_2.17.0rc5
Bug Fixes

* Remove `tensorboard` mapping from our default mapping (Cherry-pick of 19673) ([19677](https://github.com/pantsbuild/pants/pull/19677))

Documentation

* Backport to 2.17: docs: set EnvironmentBehavior in plugin Goal examples (19590) ([19664](https://github.com/pantsbuild/pants/pull/19664))



release_2.17.0rc4
User API Changes

* Require scie-pants 0.9.2 or newer, for new distribution model (Cherry-pick of 19654) ([19655](https://github.com/pantsbuild/pants/pull/19655))

* Add Python 3.12 to the default interpreter universe (Cherry-pick of 19641) ([19651](https://github.com/pantsbuild/pants/pull/19651))

Bug Fixes

* Have Pants create the `immutable_inputs` base parent(s) (Cherry-pick of 19646) ([19652](https://github.com/pantsbuild/pants/pull/19652))

* Use hardlinking when possible for mypy cache (Cherry-pick of 19633) ([19650](https://github.com/pantsbuild/pants/pull/19650))

* Undo pyenv install marking files as RO (Cherry-pick of 19645) ([19648](https://github.com/pantsbuild/pants/pull/19648))

* Make mypy cache move truly atomic (Cherry-pick of 19610) ([19615](https://github.com/pantsbuild/pants/pull/19615))

* Use named cache for Docker-env PBS (Cherry-pick of 19611) ([19616](https://github.com/pantsbuild/pants/pull/19616))

* Add path to cache key for Rust dep inference, for relative imports (cherry-pick of 19630) ([19640](https://github.com/pantsbuild/pants/pull/19640))

Documentation

* Backport to 2.17: Fix dead doc links (19546) ([19659](https://github.com/pantsbuild/pants/pull/19659))

* Additional mentions and tweaks in 2.17's "What's new" (Cherry-pick of 19629) ([19642](https://github.com/pantsbuild/pants/pull/19642))

* docs: fix code examples for `setting-up-ide` and `interpreter-compatibility` docs (Cherry-pick of 19624) ([19639](https://github.com/pantsbuild/pants/pull/19639))

* docs: fix markdown inconsistencies (Cherry pick of 19363) ([19622](https://github.com/pantsbuild/pants/pull/19622))

* docs: add 2.16 entry to changelog (Cherry-pick of 19589) ([19597](https://github.com/pantsbuild/pants/pull/19597))



release_2.18.0a0
New Features

* Add Docker global no build cache option ([19533](https://github.com/pantsbuild/pants/pull/19533))

* add latest helm versions; upgrade default ([19592](https://github.com/pantsbuild/pants/pull/19592))

* Add tfsec linter for Terraform ([19525](https://github.com/pantsbuild/pants/pull/19525))

Bug Fixes

* Use named cache for Docker-env PBS ([19611](https://github.com/pantsbuild/pants/pull/19611))

* Make mypy cache move truly atomic ([19610](https://github.com/pantsbuild/pants/pull/19610))

* Fix an erroneous options scope in an export error message. ([19605](https://github.com/pantsbuild/pants/pull/19605))

* javascript: Assign a default name to root nodejs resolves ([19245](https://github.com/pantsbuild/pants/pull/19245))

* Cache Go processes using full version string ([19558](https://github.com/pantsbuild/pants/pull/19558))

* Scala: support Enums in dependency inference ([19588](https://github.com/pantsbuild/pants/pull/19588))

Documentation

* docs: set EnvironmentBehavior in plugin Goal examples ([19590](https://github.com/pantsbuild/pants/pull/19590))

* docs: add 2.16 entry to changelog ([19589](https://github.com/pantsbuild/pants/pull/19589))

* initial draft of What's New for v2.17.x ([19168](https://github.com/pantsbuild/pants/pull/19168))

* Spelling fix in target docs ([19578](https://github.com/pantsbuild/pants/pull/19578))

* Update and streamline the release process docs. ([19575](https://github.com/pantsbuild/pants/pull/19575))

* Add ruff, adjust pyugprade, autoflake in docs ([19555](https://github.com/pantsbuild/pants/pull/19555))

* Catch google artifact registry gotcha ([19568](https://github.com/pantsbuild/pants/pull/19568))

* Stop referring to ~/.cache/pants/setup in CI docs ([19554](https://github.com/pantsbuild/pants/pull/19554))

release_2.17.0rc3
User API Changes

* Upgrade the default pip to v23.1.2. (Cherry-pick of 19538) ([19541](https://github.com/pantsbuild/pants/pull/19541))

Bug Fixes

* Scala: support Enums in dependency inference (Cherry pick of 19588) ([19593](https://github.com/pantsbuild/pants/pull/19593))

* Fix the new tool lockfile deprecation message. ([19565](https://github.com/pantsbuild/pants/pull/19565))

* Fix golangci-lint runner script (Cherry-pick of 19015) ([19473](https://github.com/pantsbuild/pants/pull/19473))

Documentation

* Initial draft of What's New for v2.17.x (Cherry-pick of 19168) ([19595](https://github.com/pantsbuild/pants/pull/19595))

* Add ruff, adjust pyugprade, autoflake in docs (Cherry-pick of 19555) ([19576](https://github.com/pantsbuild/pants/pull/19576))

* Catch google artifact registry gotcha (Cherry-pick of 19568) ([19570](https://github.com/pantsbuild/pants/pull/19570))

* Stop referring to ~/.cache/pants/setup in CI docs (Cherry-pick of 19554) ([19561](https://github.com/pantsbuild/pants/pull/19561))

* Visibility: documentation fixes and clarifications. (Cherry-pick of 19438) ([19494](https://github.com/pantsbuild/pants/pull/19494))

release_2.18.0.dev7
New Features

* bump pyright to 1.1.316 ([19426](https://github.com/pantsbuild/pants/pull/19426))

User API Changes

* Upgrade the default pip to v23.1.2. ([19538](https://github.com/pantsbuild/pants/pull/19538))

Plugin API Changes

* Resolve `pants_requirements` from direct wheel links to GitHub Release assets ([19432](https://github.com/pantsbuild/pants/pull/19432))

Bug Fixes

* Support discarding inferred Helm snapshot dependencies ([19527](https://github.com/pantsbuild/pants/pull/19527))

Documentation

* Fix dead doc links ([19546](https://github.com/pantsbuild/pants/pull/19546))

* docs: fix rules-api docs typos ([19539](https://github.com/pantsbuild/pants/pull/19539))

* docs: remove Toolchain references ([19508](https://github.com/pantsbuild/pants/pull/19508))

release_2.18.0.dev6

New Features

* python: add default module mapping of scikit-video Python package ([19498](https://github.com/pantsbuild/pants/pull/19498))

* feat: ptype type checker ([19440](https://github.com/pantsbuild/pants/pull/19440))

* Implement Helm chart versioning ([19493](https://github.com/pantsbuild/pants/pull/19493))

* Add build platform and hosts options to docker_image target ([19475](https://github.com/pantsbuild/pants/pull/19475))

* paths goal: allow finding paths between addresses that expand to multiple targets ([19482](https://github.com/pantsbuild/pants/pull/19482))

* Add Support for Kubeconform in Helm backend ([19427](https://github.com/pantsbuild/pants/pull/19427))

* Resolve Docker addresses relative to the helm_deployment ([19455](https://github.com/pantsbuild/pants/pull/19455))

* Wire pep621 into tailor ([19296](https://github.com/pantsbuild/pants/pull/19296))

Bug Fixes

* Support using `__defaults__` in same BUILD file as environment targets. ([19446](https://github.com/pantsbuild/pants/pull/19446))

* Fix golangci-lint runner script ([19015](https://github.com/pantsbuild/pants/pull/19015))

* pex_binary sandbox: Traversing dep graph, stop after package targets ([19155](https://github.com/pantsbuild/pants/pull/19155))

Documentation

* docs: mention addressing targets in the current directory with : ([19510](https://github.com/pantsbuild/pants/pull/19510))

* Add Aviva Credito to user list. ([19511](https://github.com/pantsbuild/pants/pull/19511))

* docs: fix typo from docker.md ([19504](https://github.com/pantsbuild/pants/pull/19504))

* docs: explain that run_goal_use_sandbox field won't have any effect with the test goal execution ([19501](https://github.com/pantsbuild/pants/pull/19501))

* docs: explain that visibility rules do not apply transitively ([19476](https://github.com/pantsbuild/pants/pull/19476))

* Visibility: documentation fixes and clarifications. ([19438](https://github.com/pantsbuild/pants/pull/19438))

release_2.16.1rc0

Bug Fixes

* Visibility: fix issue with using target type in verbose rule selector. (Cherry-pick of 19437) ([19457](https://github.com/pantsbuild/pants/pull/19457))

* Fix helm documentation example (Cherry-pick of 19271) ([19310](https://github.com/pantsbuild/pants/pull/19310))

Documentation

* Tweak getting-help docs (Cherry-pick of 19418) ([19420](https://github.com/pantsbuild/pants/pull/19420))

* Refine `run_shell_command` docs (Cherry-pick of 19413) ([19422](https://github.com/pantsbuild/pants/pull/19422))

* Add a sponsorships page to the docsite. (Cherry-pick of 19412) ([19417](https://github.com/pantsbuild/pants/pull/19417))

* Get doc titles from the in-repo markdown files (Cherry-pick of 19311) ([19320](https://github.com/pantsbuild/pants/pull/19320))

* docs: layout tweak of caching info, remove toolchain :( and additional info about bazel-remote-cache (Cherry-pick of 19299) ([19331](https://github.com/pantsbuild/pants/pull/19331))

release_2.17.0rc2

Bug Fixes

* Visibility: fix issue with using target type in verbose rule selector. (Cherry-pick of 19437) ([19456](https://github.com/pantsbuild/pants/pull/19456))

* Use the "package_name" variable to fix an UnboundLocalError. (Cherry-pick of 19433) ([19453](https://github.com/pantsbuild/pants/pull/19453))

* Fix helm documentation example (Cherry-pick of 19271) ([19313](https://github.com/pantsbuild/pants/pull/19313))

Documentation

* Tweak getting-help docs (Cherry-pick of 19418) ([19419](https://github.com/pantsbuild/pants/pull/19419))

* Refine `run_shell_command` docs (Cherry-pick of 19413) ([19421](https://github.com/pantsbuild/pants/pull/19421))

* Add a sponsorships page to the docsite. (Cherry-pick of 19412) ([19416](https://github.com/pantsbuild/pants/pull/19416))

* Get doc titles from the in-repo markdown files (Cherry-pick of 19311) ([19321](https://github.com/pantsbuild/pants/pull/19321))

* docs: layout tweak of caching info, remove toolchain :( and additional info about bazel-remote-cache (Cherry-pick of 19299) ([19329](https://github.com/pantsbuild/pants/pull/19329))

release_2.18.0.dev5

New Features

* Upload local Pants PEXs to release ([19450](https://github.com/pantsbuild/pants/pull/19450))

* Automate GitHub release creation, with wheels ([19444](https://github.com/pantsbuild/pants/pull/19444))

Bug Fixes

* Visibility: fix issue with using target type in verbose rule selector. ([19437](https://github.com/pantsbuild/pants/pull/19437))

* Use the "package_name" variable to fix an UnboundLocalError. ([19433](https://github.com/pantsbuild/pants/pull/19433))

* Raise error for conflicting Docker registries ([19344](https://github.com/pantsbuild/pants/pull/19344))

* Provide proper error message for unrecognized symbols during bootstrap. ([19225](https://github.com/pantsbuild/pants/pull/19225))

Documentation

* Fix unwanted line break in remote-caching-execution.md ([19461](https://github.com/pantsbuild/pants/pull/19461))

* Add Embark Studios to Who Uses Pants page. ([19442](https://github.com/pantsbuild/pants/pull/19442))

* Update adhoc-tool.md ([19434](https://github.com/pantsbuild/pants/pull/19434))

release_2.18.0.dev4

New Features

* Support per backend requirements ([19406](https://github.com/pantsbuild/pants/pull/19406))

Bug Fixes

* Embed a hash of the relevant implementation into the dep inference cache ([19393](https://github.com/pantsbuild/pants/pull/19393))

* Improved error message when referencing undefined BUILD symbols ([19286](https://github.com/pantsbuild/pants/pull/19286))

Documentation

* Refine run_shell_command docs ([19413](https://github.com/pantsbuild/pants/pull/19413))

* Tweak getting-help docs ([19418](https://github.com/pantsbuild/pants/pull/19418))

* Add a sponsorships page to the docsite. ([19412](https://github.com/pantsbuild/pants/pull/19412))

release_2.18.0.dev3

New Features

* turn `path/BUILD` into `path` in the `tailor` goal ([19323](https://github.com/pantsbuild/pants/pull/19323))

* Terraform: Add `experimental-deploy` and wire-in dependency inference ([19185](https://github.com/pantsbuild/pants/pull/19185))

* add support for alias-flags ([19034](https://github.com/pantsbuild/pants/pull/19034))

* Add environment variable help options ([19078](https://github.com/pantsbuild/pants/pull/19078))

* Add build_network option to docker_image target ([19354](https://github.com/pantsbuild/pants/pull/19354))

User API Changes

* Remove support for referencing 2nd owner via file. ([19400](https://github.com/pantsbuild/pants/pull/19400))

Plugin API Changes

* Remove deprecated `PythonBinary` type. ([19399](https://github.com/pantsbuild/pants/pull/19399))

Bug Fixes

* Fix pytest-cov validation check. ([19366](https://github.com/pantsbuild/pants/pull/19366))

Documentation

* docs: recommend scie-pants on upgrade tips page ([19139](https://github.com/pantsbuild/pants/pull/19139))

* docs: fix markdown inconsistencies ([19363](https://github.com/pantsbuild/pants/pull/19363))

* docs: apply suggested edits to guide docs from readme.com ([19374](https://github.com/pantsbuild/pants/pull/19374))

* docs: add style guide instructions for writing Python help strings ([19365](https://github.com/pantsbuild/pants/pull/19365))

* docs: update plugin writing tutorials ([19369](https://github.com/pantsbuild/pants/pull/19369))

* docs: fix markdown inconsistencies ([19359](https://github.com/pantsbuild/pants/pull/19359))

release_2.18.0.dev2

New Features

* Support Helm unittest snapshots ([19264](https://github.com/pantsbuild/pants/pull/19264))

* javascript: Rust based dep inference for javascript ([18985](https://github.com/pantsbuild/pants/pull/18985))

* Add `TraverseIfNotPackageTarget` deps traversal predicate for use in plugins ([19306](https://github.com/pantsbuild/pants/pull/19306))

* Deprecate old value interpolation in Helm deployments ([19302](https://github.com/pantsbuild/pants/pull/19302))

* Infer FaaS runtime from interpreter constraints, when unambiguous ([19314](https://github.com/pantsbuild/pants/pull/19314))

* Include complete platforms for FaaS environments for more reliable building ([19253](https://github.com/pantsbuild/pants/pull/19253))

* Add experimental support for Rustfmt ([18842](https://github.com/pantsbuild/pants/pull/18842))

* Helm deployment chart field ([19234](https://github.com/pantsbuild/pants/pull/19234))

Plugin API Changes

* Replace `include_special_cased_deps` flag with `should_traverse_deps_predicate` ([19272](https://github.com/pantsbuild/pants/pull/19272))

Bug Fixes

* Fix helm documentation example ([19271](https://github.com/pantsbuild/pants/pull/19271))

* Raise an error if isort can't read a config file ([19294](https://github.com/pantsbuild/pants/pull/19294))

* Improve handling of additional files in Helm unit tests ([19263](https://github.com/pantsbuild/pants/pull/19263))

* Add taplo to the release ([19258](https://github.com/pantsbuild/pants/pull/19258))

* Handle `from foo import *` wildcard imports in Rust dep inference parser ([19249](https://github.com/pantsbuild/pants/pull/19249))

* Support usage of `scala_artifact` addresses in `scalac_plugin` targets ([19205](https://github.com/pantsbuild/pants/pull/19205))

Performance

* `scandir` returns `Stat`s relative to its directory. ([19246](https://github.com/pantsbuild/pants/pull/19246))

Documentation

* docs: layout tweak of caching info, remove toolchain :( and additional info about bazel-remote-cache ([19299](https://github.com/pantsbuild/pants/pull/19299))

* Get doc titles from the in-repo markdown files ([19311](https://github.com/pantsbuild/pants/pull/19311))

release_2.16.0
What's New

BUILD files

The new `env` function in BUILD files allows access to environment variables in BUILD files.

Run `pants help symbols` for documentation of all builtin symbols and macros provided by prelude files
which are usable in BUILD files.

The visibility rules syntax now supports matching on target names. The rules glob syntax also now uses
the same syntax as target selectors.

Backends

Docker

The [`{pants.hash}`](https://www.pantsbuild.org/docs/tagging-docker-images#string-interpolation-using-placeholder-values)
generation code was changed such that the generated hash for the same input will be different in pants 2.16.

Python

The Python backend added or improved support for various tools including:

- [`pydocstyle`](https://www.pydocstyle.org/) is now supported for linting Python doc strings. Enable the
`pants.backend.python.lint.pydocstyle` backend to add this support.

- [`ruff`](https://github.com/charliermarsh/ruff) is now supported for linting and formatting Python code. Enable the
`pants.backend.experimental.python.lint.ruff` backend to add this support.

- [`pyenv`](https://github.com/pyenv/pyenv) is now supported as a way for Pants to provide a hermetic version of Python
for each relevant Interpreter required to run user code. Enable the `pants.backend.python.providers.experimental.pyenv`
backend to add this support.

- Pants now understands how to parse dependencies of projects using the OpenStack/Stevedore ((https://github.com/openstack/stevedore)
project. Enable the `pants.backend.python.framework.stevedore` backend to add this support.

- More Python target types now have the `environment` field and thus can execute in non-local environments.

Deprecations:

- The default value of `CPython>=3.7,<4` for the `[python].interpreter_constraints` option is now
deprecated and will be removed in Pants v2.17.x. This options sets Python interpreter
constraints for Python-related targets which did not otherwise specify their own interpreter
constraints. Instead of relying on this default, explicitly set the
`[python].interpreter_constraints` option appropriately. We recommend constraining to a single
interpreter minor version if you can, e.g., `interpreter_constraints = ['==3.11.*']`, or at least
a small number of interpreter minor versions, e.g., `interpreter_constraints = ['>=3.10,<3.12']`.

- The special Python "tool lockfile" functionality is deprecated. Repos can now use regular "user lockfiles" to provide custom versions of tools.

Shell command improvements and support for ad-hoc tools

The Shell backend along with the new `pants.backend.experimental.adhoc` backend have received a number of improvements so that
Pants is able to invoke workflows that include tools for which Pants does not yet have a
dedicated backend.

In recognition of these improvements, the `experimental_shell_command` and `experimental_run_shell_command` target types have
graduated to no longer have the `experimental_` prefix; deprecating the prefixed variants with removal in 2.17. Upgrade to use
`shell_command` and `run_shell_command` respectively instead.

The improvements include:

- The `shell_command` continues to provide a way to run a tool for its side effects and capture
outputs from the tool invocation for consumption as dependencies by other target types, but has had several improvements:

- the `dependencies` field has been deprecated, and separated into three fields: `execution_dependencies` for
dependencies required to execute the command, `output_dependencies` for dependencies required to
use the output, and `runnable_dependencies` for targets that need to exist as directly
executable on the sandbox's `PATH`
- the `outputs` field has been separated into `output_files` and `output_directories`
- the directory in which the command is invoked can be controlled via the new `workdir` field
- the location of the output files when consumed as a dependency can be controlled via the new `root_output_directory` field

- Preserving symlinks as symlinks in process output, rather than resolving them to their target
file. This eliminates the need for work-arounds in `shell_command`s that happen to generate
semantically-relevant symlinks, such as the contents of `node_modules/.bin` if using `shell_command`
to invoke `npm ci` or `npm install`.

- The new `adhoc_tool` target type supplied by the `adhoc` backend allows executing most "runnable" target types (those supported for `pants run` goal) exported by another Pants backend in an execution sandbox goal, allowing you to capture their outputs to be captured. The outputs can then be consumed by another Pants target in a similar manner to the `shell_command` target type.
"Runnable" target types include:
* Adhoc: `system_binary`
* Docker: `docker_image`
* Go: `go_binary`
* JVM: `jvm_artifact`, and `deploy_jar`
* Python: `pex_binary`, `python_requirement`, `python_source`, and `pyoxidizer_binary`

- The new `system_binary` target type supplied by the `adhoc` backend wraps any externally-managed tool so that the
tool may be invoked as a "runnable" by the `adhoc_tool` target type, while also allowing tool versions to be pinned for reproducibility.

- Support for running in non-local environments as specified by the `environment` field on `shell_command`, `adhoc_tool`, and related target types.

- Defining arbitrary shell commands as tests which can be invoked using `pants test` via the
new `experimental_test_shell_command` target type.

- The `workdir` field to `run_shell_command` has been switched to match the documented behavior: it now runs from the same directory as the `BUILD` file by default. To preserve the old behavior, explicitly set `workdir="/"`. The stabilisation also fixes other bugs with relative paths passed to the `workdir` field and thus may require updates.

Ad-hoc tool support, with the `adhoc_tool` or `shell_command` targets, can be used to compile third party
libraries in unsupported languages, run tools from ecosystems Pants doesn't yet directly support, and other similar code-generation tasks.
These targets can be used for first-party code generation, making use of existing backends that define
"runnable" targets if needed. For instance, exporting a OpenAPI schema from a Python API server, letting Pants
manage the interpreters and dependencies required.

Enable the `pants.backend.experimental.adhoc` backend to add the features supplied by the `adhoc` backend.
Enable the `pants.backend.shell` backend for the shell-related functionality including `shell_command` and
`run_shell_command` target types.

Go

The Go backend has received a large number of changes in order to be ready for Go v1.20
and to make continued progress on [stabilizing the Go backend](https://github.com/pantsbuild/pants/issues/17447).

The main change is that Pants will now compile Go SDK packages from scratch and no longer rely on
the prebuilt package archives distributed with the Go SDK. Go v1.20 will no longer ship with those
prebuilt package archives, and so this change was necessary for Pants to continue to work
with Go v1.20 and later releases. (It is also a correctness issue since Pants will now be able to
apply compiler options consistently to both first-party Go code and Go SDK packages.)

The Pants team would appreciate if the community could try out 2.16.x with your Go code as an additional
check to ensure there are no regressions.

The Go backend also now supports:
- Environments are supported via the `environment` field available now on `go_binary` targets.
- Code coverage can now analyze coverage for packages beyond just the package under test via the new
`--go-test-cover-packages` option.
- Numerous bug fixes to the Cgo support.
- The [data race detector](https://go.dev/doc/articles/race_detector) is supported via the `race` field now available on `go_binary` targets.
- Compiler and other flags may be set via the `compiler_flags`, `linker_flags`, and `assembler_flags` fields
available on various target types.

Buf

Pants is now able to discover and supply configuration files for the `Buf` protobuf linter.

New: Preamble

The new "preamble" plugin allows formatting/linting files to ensure they start with specific text, such as a copyright header. Enable the
`pants.backend.tools.preamble` backend to add this support.

New: CUE

Pants now have basic support for the [CUE language](https://cuelang.org/) for defining, generating, and validating configuration data.
Enable the `pants.backend.experimental.cue` backend to use this support.

New: YamlLint

Pants now the supports the [yamllint](https://yamllint.readthedocs.io) linter for YAML files. Enable the `pants.backend.experimental.tools.yamllint` backend to add this support.

New: AWS S3 support for URLs

Pants now supports referencing S3 URLs via the scheme (E.g. `s3://`), or authority (E.g. `*.s3*amazonaws.com` or `s3.*amazonaws.com`)
anywhere a URL can be specified.
Credentials are loaded similar to the AWS CLI (most regularly `~/.aws/credentials`) and attached as headers in the request (which aren't cached or logged).

Enable the `pants.backend.url_handlers.s3` backend to add this support.

Plugin API Changes

The `URLDownloadHandler` union has been added to allow plugins to modify native URL downloading, such as transforming the URL or attaching headers for auth.

The `frozen_after_init` decorator on dataclasses has been removed from many parts of the Pants codebase. Plugin authors should avoid use of this decorator because it will likely be removed in a future Pants version.

The deprecated `Platform.current` has been removed. Instead, have the affected rules take a `Platform` directly as a parameter and the engine will supply the relevant `Platform` instance.

The `ToolCustomLockfile` and `ToolDefaultLockfile` classes [have been removed](https://github.com/pantsbuild/pants/pull/17843).


release_2.15.2

The third stable release of the `2.15.x` series, with no changes since the previous `rc`!

release_2.16.0rc7

Bug Fixes

* Fix S3 URL Handler for good (Cherry-pick of 19285) ([19288](https://github.com/pantsbuild/pants/pull/19288))

release_2.17.0rc1

Plugin API Changes

* Deprecate using `PythonBinary` (Cherry-pick of 19209) ([19222](https://github.com/pantsbuild/pants/pull/19222))

Bug Fixes

* Improve handling of additional files in Helm unit tests (Cherry-pick of 19263) ([19268](https://github.com/pantsbuild/pants/pull/19268))

* Add taplo to the release (Cherry-pick of 19258) ([19259](https://github.com/pantsbuild/pants/pull/19259))

* Handle from foo import * wildcard imports in Rust dep inference parser (Cherry-pick of 19249) ([19255](https://github.com/pantsbuild/pants/pull/19255))

* Fix secondary ownership warning semantics (Cherry-pick of 19191) ([19224](https://github.com/pantsbuild/pants/pull/19224))

release_2.16.0rc6

Bug Fixes

* Improve handling of additional files in Helm unit tests (Cherry-pick of 19263) ([19267](https://github.com/pantsbuild/pants/pull/19267))

* Workaround `botocore` bug in S3 URL Handler backend (Cherry-pick of 19056) ([19110](https://github.com/pantsbuild/pants/pull/19110))


release_2.15.2rc0

Bug Fixes

* Improve handling of additional files in Helm unit tests (Cherry-pick of 19263) ([19266](https://github.com/pantsbuild/pants/pull/19266))

Documentation

* update scie-jump cache directory reference (Cherry-pick of 18485) ([19153](https://github.com/pantsbuild/pants/pull/19153))

* Fix docs link to pants_from_sources script. (Cherry-pick of 19088) ([19089](https://github.com/pantsbuild/pants/pull/19089))

release_2.18.0.dev1

New Features

* Add support for packaging python AWS Lambda layers ([19123](https://github.com/pantsbuild/pants/pull/19123))

* Add visibility linter to report all violations. ([17671](https://github.com/pantsbuild/pants/pull/17671))

User API Changes

* Remove the old Python tool lockfile functionality. ([19218](https://github.com/pantsbuild/pants/pull/19218))

* Rename `python_awslambda` to `python_aws_lambda_function` ([19216](https://github.com/pantsbuild/pants/pull/19216))

* Deprecate the version/extra_requirements options on python tools. ([19204](https://github.com/pantsbuild/pants/pull/19204))

Plugin API Changes

* Deprecate using `PythonBinary` ([19209](https://github.com/pantsbuild/pants/pull/19209))

Bug Fixes

* store stdout/stderr output from tests as bytes ([19184](https://github.com/pantsbuild/pants/pull/19184))

* Discover Scala REPL main class and coordinates ([19189](https://github.com/pantsbuild/pants/pull/19189))

* Scrub the Pyenv install dir before attempting an install. ([19193](https://github.com/pantsbuild/pants/pull/19193))

* Include scala_artifact classpath rule ([19190](https://github.com/pantsbuild/pants/pull/19190))

* `docker_image`: secrets paths are now expanding `~` to the users home directory. ([19130](https://github.com/pantsbuild/pants/pull/19130))

* Support explicit dependencies with scala_artifact ([19187](https://github.com/pantsbuild/pants/pull/19187))

* Avoid extra `.` in `from .. import` parent imports in Rust Python dep inference ([19175](https://github.com/pantsbuild/pants/pull/19175))

Documentation

* Update FaaS docs for 2.18, including Lambda layers ([19217](https://github.com/pantsbuild/pants/pull/19217))

* Add `tobni` to Maintainers ([19195](https://github.com/pantsbuild/pants/pull/19195))

* Adjust FaaS docs for `layout = "zip"` ([19180](https://github.com/pantsbuild/pants/pull/19180))

release_2.17.0rc0

User API Changes

* Deprecate the `version/extra_requirements` options on python tools. (Cherry-pick of 19204) ([19211](https://github.com/pantsbuild/pants/pull/19211))

* Terraform: Hashes for MacOS binaries have changed (Cherry-pick of 19004) ([19136](https://github.com/pantsbuild/pants/pull/19136))

* Implement layout="zip" for Lambda/GCF, deprecating lambdex (Cherry-pick of 19076) ([19120](https://github.com/pantsbuild/pants/pull/19120))

* Deprecate `[mypy].extra_type_stubs` and its lockfile. (Cherry-pick of 19084) ([19087](https://github.com/pantsbuild/pants/pull/19087))

* Bring the tool `--export` option deprecation forward. (Cherry-pick of 19079) ([19083](https://github.com/pantsbuild/pants/pull/19083))

Bug Fixes

* Discover Scala REPL main class and coordinates (Cherry-pick of 19189) ([19203](https://github.com/pantsbuild/pants/pull/19203))

* Scrub the Pyenv install dir before attempting an install. (Cherry-pick of 19193) ([19197](https://github.com/pantsbuild/pants/pull/19197))

* Avoid extra `.` in `from .. import` parent imports in Rust Python dep inference (Cherry-pick of 19175) ([19177](https://github.com/pantsbuild/pants/pull/19177))

* Don't try and garbage collect tempfiles (Cherry-pick of 19103) ([19113](https://github.com/pantsbuild/pants/pull/19113))

* If a shebang already exists when adding a preamble, preserve it. (Cherry-pick of 19133) ([19138](https://github.com/pantsbuild/pants/pull/19138))

* Workaround `botocore` bug in S3 URL Handler backend (Cherry-pick of 19056) ([19111](https://github.com/pantsbuild/pants/pull/19111))

Documentation

* Add `tobni` to Maintainers (Cherry-pick of 19195) ([19207](https://github.com/pantsbuild/pants/pull/19207))

* Adjust FaaS docs for `layout = "zip"` (Cherry-pick of 19180) ([19198](https://github.com/pantsbuild/pants/pull/19198))

* Add `botocore-a-la-carte` reference to `s3` URL Handler (Cherry-pick of 19055) ([19109](https://github.com/pantsbuild/pants/pull/19109))

* add bazel-remote to list of compatible remote caches (Cherry-pick of 19041) ([19115](https://github.com/pantsbuild/pants/pull/19115))

* Fix docs link to `pants_from_sources` script. (Cherry-pick of 19088) ([19091](https://github.com/pantsbuild/pants/pull/19091))

release_2.16.0rc5

User API Changes

* Deprecate the `version`/`extra_requirements` options on python tools. (Cherry-pick of 19204) ([19210](https://github.com/pantsbuild/pants/pull/19210))

Bug Fixes

* Scrub the Pyenv install dir before attempting an install. (Cherry-pick of 19193) ([19196](https://github.com/pantsbuild/pants/pull/19196))

* Use `{bin_name()} run` as `$0` in `run_shell_command` (Cherry-pick of 19020) ([19036](https://github.com/pantsbuild/pants/pull/19036))

Documentation

* Add `tobni` to Maintainers (Cherry-pick of 19195) ([19206](https://github.com/pantsbuild/pants/pull/19206))

* Add `botocore-a-la-carte` reference to `s3` URL Handler (Cherry-pick of 19055) ([19108](https://github.com/pantsbuild/pants/pull/19108))

* update scie-jump cache directory reference (Cherry-pick of 18485) ([19154](https://github.com/pantsbuild/pants/pull/19154))

release_2.18.0.dev0

New Features

* Support scala_artifact ([19128](https://github.com/pantsbuild/pants/pull/19128))

* pass "--debug" flag to all helm invocations if requested ([19093](https://github.com/pantsbuild/pants/pull/19093))

* Enable env vars in `node_build_script` ([19100](https://github.com/pantsbuild/pants/pull/19100))

User API Changes

* Remove or bump deprecations ([19169](https://github.com/pantsbuild/pants/pull/19169))

* Switch to [lambdex].layout = "zip" by default, deprecating the section ([19122](https://github.com/pantsbuild/pants/pull/19122))

* javascript: Allow nodejs-backed tools to point to a resolve and/or package manager ([19040](https://github.com/pantsbuild/pants/pull/19040))

* Terraform: Hashes for MacOS binaries have changed ([19004](https://github.com/pantsbuild/pants/pull/19004))

* Implement layout="zip" for Lambda/GCF, deprecating lambdex ([19076](https://github.com/pantsbuild/pants/pull/19076))

* Run `terraform init` as part of `check` goal ([18974](https://github.com/pantsbuild/pants/pull/18974))

* Deprecate [mypy].extra_type_stubs and its lockfile. ([19084](https://github.com/pantsbuild/pants/pull/19084))

* Remove more 2.18.0.dev0 deprecations (follow up to 19073) ([19077](https://github.com/pantsbuild/pants/pull/19077))

* Bring the tool `--export` option deprecation forward. ([19079](https://github.com/pantsbuild/pants/pull/19079))

* Only build and release wheels for Python 3.9. ([18829](https://github.com/pantsbuild/pants/pull/18829))

* Require pants to run via scie-pants. ([19075](https://github.com/pantsbuild/pants/pull/19075))

* Some 2.18.0.dev0 deprecations ([19073](https://github.com/pantsbuild/pants/pull/19073))

* Implement layout="zip" for Lambda/GCF, skipping lambdex ([19022](https://github.com/pantsbuild/pants/pull/19022))

Plugin API Changes

* Simplify interpreter-related CI config. ([19096](https://github.com/pantsbuild/pants/pull/19096))

Bug Fixes

* If a shebang already exists when adding a preamble, preserve it. ([19133](https://github.com/pantsbuild/pants/pull/19133))

* Workaround `botocore` bug in S3 URL Handler backend ([19056](https://github.com/pantsbuild/pants/pull/19056))

* Don't try and garbage collect tempfiles ([19103](https://github.com/pantsbuild/pants/pull/19103))

* Allow the usage of digits in named cache names ([19052](https://github.com/pantsbuild/pants/pull/19052))

Documentation

* Fix docs link to pants_from_sources script. ([19088](https://github.com/pantsbuild/pants/pull/19088))

* Add `botocore-a-la-carte` reference too `s3` URL Handler ([19055](https://github.com/pantsbuild/pants/pull/19055))

* add bazel-remote to list of compatible remote caches ([19041](https://github.com/pantsbuild/pants/pull/19041))

release_2.16.0rc4

User API Changes

* Terraform: Hashes for MacOS binaries have changed (Cherry-pick of 19004) ([19135](https://github.com/pantsbuild/pants/pull/19135))

* Deprecate `[mypy].extra_type_stubs` and its lockfile. (Cherry-pick of 19084) ([19086](https://github.com/pantsbuild/pants/pull/19086))

* Bring the tool `--export` option deprecation forward. (Cherry-pick of 19079) ([19081](https://github.com/pantsbuild/pants/pull/19081))

Bug Fixes

* If a shebang already exists when adding a preamble, preserve it. (Cherry-pick of 19133) ([19137](https://github.com/pantsbuild/pants/pull/19137))

Documentation

* add bazel-remote to list of compatible remote caches (Cherry-pick of 19041) ([19114](https://github.com/pantsbuild/pants/pull/19114))

* Fix docs link to `pants_from_sources` script. (Cherry-pick of 19088) ([19090](https://github.com/pantsbuild/pants/pull/19090))

release_2.15.1

The second stable release of the `2.15.x` series, with no changes since the previous `rc`!

release_2.17.0a1

Due to infrastructure issues, `2.17.0a1` is a second attempt at publishing `2.17.0a0`.

release_2.16.0rc3

User API Changes

* Support Python requirement target addrs in tool requirements. (Cherry-pick of 19014) ([19023](https://github.com/pantsbuild/pants/pull/19023))

Documentation

* Clarify how to set $0 properly in `run_in_shell_command` (Cherry-pick of 19019) ([19031](https://github.com/pantsbuild/pants/pull/19031))

* Docs tweaks for 2.16.x (Cherry-pick of 19009) ([19012](https://github.com/pantsbuild/pants/pull/19012))

release_2.17.0a0

NOTE: `2.17.0a0` was not released to PyPI due to infrastructure issues.

New Features

* Add a workunit logging plugin ([18984](https://github.com/pantsbuild/pants/pull/18984))

* javascript: Add `yarnv1` support ([18928](https://github.com/pantsbuild/pants/pull/18928))

* javascript: Support Node.js subpath imports ([18934](https://github.com/pantsbuild/pants/pull/18934))

* Add Taplo toml formatter ([18865](https://github.com/pantsbuild/pants/pull/18865))

* Include the Pants native client in released wheels ([18957](https://github.com/pantsbuild/pants/pull/18957))

* Extract Python dependencies in an intrinsic ([18854](https://github.com/pantsbuild/pants/pull/18854))

User API Changes

* Do not publish wheels for all SHAs, and publish to PyPI from Github Actions. ([19028](https://github.com/pantsbuild/pants/pull/19028))

* Support Python requirement target addrs in tool requirements. ([19014](https://github.com/pantsbuild/pants/pull/19014))

* javascript: Add an explicit `npm_distribution` target instead of coupling to `node_package` ([18925](https://github.com/pantsbuild/pants/pull/18925))

* Shorten the deprecation for `export` without `--resolve`. ([19000](https://github.com/pantsbuild/pants/pull/19000))

* Upgrade Pex to 2.1.137. ([19003](https://github.com/pantsbuild/pants/pull/19003))

* Remove the underlying implementation of `anonymous-telemetry` ([18952](https://github.com/pantsbuild/pants/pull/18952))

Plugin API Changes

* Port Django migrations inference away from `PythonDependencyVisitorRequest` ([19008](https://github.com/pantsbuild/pants/pull/19008))

* fmtrequest -> abstractfmtrequest ([18935](https://github.com/pantsbuild/pants/pull/18935))

Bug Fixes

* Use `{bin_name()} run` as `$0` in `run_shell_command` ([19020](https://github.com/pantsbuild/pants/pull/19020))

* Make `DigestSubset` symlink-aware ([18963](https://github.com/pantsbuild/pants/pull/18963))

* javascript: Do not add literal {chroot} to pnpm cache path ([18921](https://github.com/pantsbuild/pants/pull/18921))

Documentation

* Clarify how to set $0 properly in `run_in_shell_command` ([19019](https://github.com/pantsbuild/pants/pull/19019))

* Docs tweaks for 2.16.x ([19009](https://github.com/pantsbuild/pants/pull/19009))

* Fix example `first_party_dependency_version_scheme` in docs ([18993](https://github.com/pantsbuild/pants/pull/18993))

release_2.14.2

The third stable release of the `2.14.x` series, with no changes since the previous release candidate!

release_2.15.1rc3

Bug Fixes

* Require urllib3<2, to reduce installation issues (cherry-pick of 18959) ([18973](https://github.com/pantsbuild/pants/pull/18973))

* Do not choke on missing lockfiles. (Cherry-pick of 18940) ([18947](https://github.com/pantsbuild/pants/pull/18947))

Performance

* Optimize `Target` and `FieldSet` operations (Cherry-pick of 18917) ([18949](https://github.com/pantsbuild/pants/pull/18949))

Documentation

* Fix `awslambda-python` documentation (Cherry-pick of 18302) ([18929](https://github.com/pantsbuild/pants/pull/18929))

release_2.16.0rc2

User API Changes

* Use the resolve's ICs for tools. (Cherry-pick of 18776) ([18806](https://github.com/pantsbuild/pants/pull/18806))

* Default to using the entire tool lockfile. (Cherry-pick of 18793) ([18807](https://github.com/pantsbuild/pants/pull/18807))

Bug Fixes

* Require urllib3<2, to reduce installation issues (cherry-pick of 18959) ([18971](https://github.com/pantsbuild/pants/pull/18971))

* Make `DigestSubset` symlink-aware (Cherry-pick of 18963) ([18970](https://github.com/pantsbuild/pants/pull/18970))

* Do not choke on missing lockfiles. (Cherry-pick of 18940) ([18948](https://github.com/pantsbuild/pants/pull/18948))

* Actually run deprecated targets fixer (Cherry-pick of 18860) ([18893](https://github.com/pantsbuild/pants/pull/18893))

* Remove existing entry if any when materialising symlink (Cherry-pick of 18873) ([18878](https://github.com/pantsbuild/pants/pull/18878))

* Ensure non-ambiguous args/env vars injection into PEXes (Cherry-pick of 18861) ([18877](https://github.com/pantsbuild/pants/pull/18877))

* Patch `StreamingWorkunitContext.get_expanded_specs()`. (Cherry-pick of 18713) ([18866](https://github.com/pantsbuild/pants/pull/18866))

* help backends: Only list enabled experimental backends unless advanced help. (Cherry-pick of 18821) ([18867](https://github.com/pantsbuild/pants/pull/18867))

* Include `pants.backend.url_handlers.s3` in pants distribution. (Cherry-pick of 18826) ([18870](https://github.com/pantsbuild/pants/pull/18870))

* Handle workdir="."/default properly in run_shell_command (Cherry-pick of 18840) ([18850](https://github.com/pantsbuild/pants/pull/18850))

* Write adhoc_tool(stdout/stderr="...") relative to workdir, support absolute paths (Cherry-pick of 18814) ([18839](https://github.com/pantsbuild/pants/pull/18839))

* Use build root as workdir for shell_command(workdir="") (Cherry-pick of 18813) ([18832](https://github.com/pantsbuild/pants/pull/18832))

Performance

* Optimize `Target` and `FieldSet` operations (cherry-pick 18917) ([18944](https://github.com/pantsbuild/pants/pull/18944))

Documentation

* update troubleshooting document about self-hosted action runner (Cherry-pick of 18900) ([18943](https://github.com/pantsbuild/pants/pull/18943))

* doc: mention `use_local_alias` for the `[docker].registries` option. (Cherry-pick of 18946) ([18950](https://github.com/pantsbuild/pants/pull/18950))

* Fix adhoc output_... example, document run_shell_command workdir changes (Cherry-pick of 18894) ([18910](https://github.com/pantsbuild/pants/pull/18910))

* Include `symbols` as topic in usage help. (Cherry-pick of 18825) ([18869](https://github.com/pantsbuild/pants/pull/18869))

* Update mypy and pytest documentation to refer to install_from_resolve (Cherry pick of 18791) ([18858](https://github.com/pantsbuild/pants/pull/18858))

release_2.17.0.dev5

New Features

* javascript: Implement dependency inference opt-out and improve resillience ([18931](https://github.com/pantsbuild/pants/pull/18931))

* javascript: Add support for the pnpm package manager ([18864](https://github.com/pantsbuild/pants/pull/18864))

* Eagerly clean running nodes rather than interrupting them. ([18855](https://github.com/pantsbuild/pants/pull/18855))

* javascript: Nodejs tests batch support ([18742](https://github.com/pantsbuild/pants/pull/18742))

* New API type: `CurrentExecutingGoals`. ([18788](https://github.com/pantsbuild/pants/pull/18788))

User API Changes

* javascript: Support `package` goal in `node_build_script` target ([18926](https://github.com/pantsbuild/pants/pull/18926))

* Deprecate running Pants outside scie-pants. ([18833](https://github.com/pantsbuild/pants/pull/18833))

* Upgrade Pex to 2.1.135. ([18876](https://github.com/pantsbuild/pants/pull/18876))

Plugin API Changes

* Remove redundant PythonToolBase/JvmToolBase features. ([18805](https://github.com/pantsbuild/pants/pull/18805))

Bug Fixes

* Ensure packaged artefacts are fully replaced in dist/ ([18930](https://github.com/pantsbuild/pants/pull/18930))

* Use a set when calculating resolve names ([18939](https://github.com/pantsbuild/pants/pull/18939))

* Use a set when calculating resolve names ([18939](https://github.com/pantsbuild/pants/pull/18939))

* javascript: Handle package.json placed at the root of the repository ([18919](https://github.com/pantsbuild/pants/pull/18919))

* Actually run deprecated targets fixer ([18860](https://github.com/pantsbuild/pants/pull/18860))

* Remove existing entry if any when materialising symlink ([18873](https://github.com/pantsbuild/pants/pull/18873))

* Ensure non-ambiguous args/env vars injection into PEXes ([18861](https://github.com/pantsbuild/pants/pull/18861))

* Handle workdir="."/default properly in run_shell_command ([18840](https://github.com/pantsbuild/pants/pull/18840))

* Write adhoc_tool(stdout/stderr="...") relative to workdir, support absolute paths ([18814](https://github.com/pantsbuild/pants/pull/18814))

* Patch `StreamingWorkunitContext.get_expanded_specs()`. ([18713](https://github.com/pantsbuild/pants/pull/18713))

* help backends: Only list enabled experimental backends unless advanced help. ([18821](https://github.com/pantsbuild/pants/pull/18821))

* Use build root as workdir for shell_command(workdir="") ([18813](https://github.com/pantsbuild/pants/pull/18813))

* Include `pants.backend.url_handlers.s3` in pants distribution. ([18826](https://github.com/pantsbuild/pants/pull/18826))

Performance

* Optimize `Target` and `FieldSet` operations ([18917](https://github.com/pantsbuild/pants/pull/18917))

* Triage some noqa: PNT30 await-in-loops ([18831](https://github.com/pantsbuild/pants/pull/18831))

Documentation

* Update the identity of the response team for CoC violation reporting. ([16410](https://github.com/pantsbuild/pants/pull/16410))

* Fix adhoc output_... example, document run_shell_command workdir changes ([18894](https://github.com/pantsbuild/pants/pull/18894))

* Add missing backtick in help string ([18907](https://github.com/pantsbuild/pants/pull/18907))

* Add Salesforce to the users list ([18891](https://github.com/pantsbuild/pants/pull/18891))

* update troubleshooting document about self-hosted action runner ([18900](https://github.com/pantsbuild/pants/pull/18900))

* Credit the Works on ARM program for our CI resources. ([18892](https://github.com/pantsbuild/pants/pull/18892))

* feat: update installation.md ([18836](https://github.com/pantsbuild/pants/pull/18836))

* Remove reference to readme.com as the way to edit documentation ([18863](https://github.com/pantsbuild/pants/pull/18863))

* Fix library name typo in third party example ([18862](https://github.com/pantsbuild/pants/pull/18862))

* Update mypy and pytest documentation to refer to install_from_resolve ([18791](https://github.com/pantsbuild/pants/pull/18791))

* Include `symbols` as topic in usage help. ([18825](https://github.com/pantsbuild/pants/pull/18825))

* docs: reorder contributor steps, rustup is required for git hooks install to work smoothly ([18828](https://github.com/pantsbuild/pants/pull/18828))

release_2.17.0.dev4

New Features

* javascript: Manage `npm` version with corepack ([18748](https://github.com/pantsbuild/pants/pull/18748))

* `python_distribution` editable installs in exports ([18639](https://github.com/pantsbuild/pants/pull/18639))

User API Changes

* Default to using the entire tool lockfile. ([18793](https://github.com/pantsbuild/pants/pull/18793))

* Upgrade Pex to 2.1.134. ([18785](https://github.com/pantsbuild/pants/pull/18785))

* Use the resolve's ICs for tools. ([18776](https://github.com/pantsbuild/pants/pull/18776))

* Use Self backport in `BinaryPath` factory method. ([18763](https://github.com/pantsbuild/pants/pull/18763))

* Deprecate "Secondary Ownership" semantics ([18737](https://github.com/pantsbuild/pants/pull/18737))

* Expand versions range for `ruff` + upgrade it ([18707](https://github.com/pantsbuild/pants/pull/18707))

Plugin API Changes

* Allow `BinaryPaths` to close over their type. ([18760](https://github.com/pantsbuild/pants/pull/18760))

* Set a central default ICs for tools. ([18714](https://github.com/pantsbuild/pants/pull/18714))

Bug Fixes

* The `OverridesField.compute_value()` must return a hashable value. ([18787](https://github.com/pantsbuild/pants/pull/18787))

* Dedup graph errors. ([18770](https://github.com/pantsbuild/pants/pull/18770))

* Flush metadata to disk before renaming immutable store files ([18768](https://github.com/pantsbuild/pants/pull/18768))

* Clear FSDB materialization cache when `remove`ing a file ([18747](https://github.com/pantsbuild/pants/pull/18747))

* Use address as stable key when batching field sets in `lint`/`test` ([18725](https://github.com/pantsbuild/pants/pull/18725))

* Fix `repr` for `Field`s that don't define `default`. ([18719](https://github.com/pantsbuild/pants/pull/18719))

* Add `ruff` lint rules ([18716](https://github.com/pantsbuild/pants/pull/18716))

* javascript: Use binary shims in nodejs sandboxes ([18682](https://github.com/pantsbuild/pants/pull/18682))

Documentation

* Improve error location for invalid targets/target fields. ([18366](https://github.com/pantsbuild/pants/pull/18366))

* Add info on how to configure Docker Desktop for using `docker_environment` ([18786](https://github.com/pantsbuild/pants/pull/18786))

* Update linter documentation to refer to `install_from_resolve` ([18781](https://github.com/pantsbuild/pants/pull/18781))

* docs: Fix typo on requirements-overrides code snippet ([18750](https://github.com/pantsbuild/pants/pull/18750))

* Edit Python publishing docs for clarity. ([18718](https://github.com/pantsbuild/pants/pull/18718))

release_2.16.0rc1

User API Changes

* Upgrade Pex to 2.1.134. (Cherry-pick of 18785) ([18789](https://github.com/pantsbuild/pants/pull/18789))

Bug Fixes

* The `OverridesField.compute_value()` must return a hashable value. (Cherry-pick of 18787) ([18799](https://github.com/pantsbuild/pants/pull/18799))

* Makes `adhoc_tool` actually respect the `extra_env_vars` field; adds tests (Cherry-pick of 18692) ([18694](https://github.com/pantsbuild/pants/pull/18694))

* Use address as stable key when batching field sets in `lint`/`test` (Cherry-pick of 18725) ([18734](https://github.com/pantsbuild/pants/pull/18734))

* Add `ruff` lint rules (Cherry-pick of 18716) ([18739](https://github.com/pantsbuild/pants/pull/18739))

* Fix `repr` for `Field`s that don't define `default`. (Cherry-pick of 18719) ([18724](https://github.com/pantsbuild/pants/pull/18724))

* Adds a fully-qualified path to a Python interpreter for `pex_binary` `RunRequest`s (Cherry-pick of 18699) ([18700](https://github.com/pantsbuild/pants/pull/18700))

* Add timeout to remote store calls, and adjust name of cache timeout. (Cherry-pick of 18695) ([18697](https://github.com/pantsbuild/pants/pull/18697))

* Bump minimum supported version of Pex to v2.1.129. (Cherry-pick of 18678) ([18687](https://github.com/pantsbuild/pants/pull/18687))

* Fix JVM resource JAR creation on older Mac OSes (Cherry-pick of 18673) ([18676](https://github.com/pantsbuild/pants/pull/18676))

Documentation

* Update linter documentation to refer to `install_from_resolve` (Cherry-pick of 18781) ([18782](https://github.com/pantsbuild/pants/pull/18782))

* Add PEP 621 `pyproject.toml` file docs (Cherry-pick of 18672) ([18677](https://github.com/pantsbuild/pants/pull/18677))

* Improve lockfile consumption error message. (Cherry-pick of 18638) ([18653](https://github.com/pantsbuild/pants/pull/18653))

* Document AWS CDK issue that multiple users have encountered. (Cherry-pick of 18656) ([18666](https://github.com/pantsbuild/pants/pull/18666))

* Remove a python-specific tip from the general prereqs page. (Cherry-pick of 18637) ([18650](https://github.com/pantsbuild/pants/pull/18650))

release_2.15.1rc2

Bug Fixes

* The `OverridesField.compute_value()` must return a hashable value. (Cherry-pick of 18787) ([18798](https://github.com/pantsbuild/pants/pull/18798))

* Use address as stable key when batching field sets in `lint`/`test` (Cherry-pick of 18725) ([18733](https://github.com/pantsbuild/pants/pull/18733))

* Fix `repr` for `Field`s that don't define `default`. (Cherry-pick of 18719) ([18723](https://github.com/pantsbuild/pants/pull/18723))

* Fix JVM resource JAR creation on older Mac OSes (Cherry-pick of 18673) ([18675](https://github.com/pantsbuild/pants/pull/18675))

Documentation

* Jacob Floyd/Huon Wilson updates to team page (Cherry-pick of 18221) ([18795](https://github.com/pantsbuild/pants/pull/18795))

* Remove defunct newsletter (Cherry-pick of 18355) ([18796](https://github.com/pantsbuild/pants/pull/18796))

* Add Pylint post (Cherry-pick of 18079) ([18794](https://github.com/pantsbuild/pants/pull/18794))

* Remove a python-specific tip from the general prereqs page. (Cherry-pick of 18637) ([18651](https://github.com/pantsbuild/pants/pull/18651))

release_2.14.2rc2

Bug Fixes

* Fix JVM resource JAR creation on older Mac OSes (Cherry-pick of 18673) ([18674](https://github.com/pantsbuild/pants/pull/18674))

Documentation

* Remove defunct newsletter (Cherry-pick of 18355) ([18797](https://github.com/pantsbuild/pants/pull/18797))

release_2.17.0.dev3

New Features

* Helm: Add support for DNS lookups in Chart templates ([18670](https://github.com/pantsbuild/pants/pull/18670))

* Include global Git ignore file and `.git/info/exclude` in `pants_ignore` to ignore for file watching ([18649](https://github.com/pantsbuild/pants/pull/18649))

User API Changes

* Remove deprecated default ICs. ([18627](https://github.com/pantsbuild/pants/pull/18627))

Plugin API Changes

* Move/Rename: `goals/setup_py.py` -> `{util_rules,goals}/package_dists.py` + `subsystems/setup_py_generation.py` ([18702](https://github.com/pantsbuild/pants/pull/18702))

* Deprecate some `Request` types in favor of `Get()` with only one arg ([18655](https://github.com/pantsbuild/pants/pull/18655))

* Add support for `Get(MyType)` syntax with no input args ([18648](https://github.com/pantsbuild/pants/pull/18648))

Bug fixes

* Adds a fully-qualified path to a Python interpreter for `pex_binary` `RunRequest`s ([18699](https://github.com/pantsbuild/pants/pull/18699))

* Remove implicit conversion from `std::io::Error` to `StoreError` ([18696](https://github.com/pantsbuild/pants/pull/18696))

* Add timeout to remote store calls, and adjust name of cache timeout. ([18695](https://github.com/pantsbuild/pants/pull/18695))

* Makes `adhoc_tool` actually respect the `extra_env_vars` field; adds tests ([18692](https://github.com/pantsbuild/pants/pull/18692))

* doc: Describe relevant error modes during rule compilation ([18663](https://github.com/pantsbuild/pants/pull/18663))

* Bump minimum supported version of Pex to v2.1.129. ([18678](https://github.com/pantsbuild/pants/pull/18678))

* Fix JVM resource JAR creation on older Mac OSes ([18673](https://github.com/pantsbuild/pants/pull/18673))

* javascript: Do not read none mapped package.json files in javascript rules ([18523](https://github.com/pantsbuild/pants/pull/18523))

Documentation

* Add PEP 621 pyproject.toml file docs ([18672](https://github.com/pantsbuild/pants/pull/18672))

* Document AWS CDK issue that multiple users have encountered. ([18656](https://github.com/pantsbuild/pants/pull/18656))

* Error when goals used without relevant backends activated ([18420](https://github.com/pantsbuild/pants/pull/18420))

* Improve lockfile consumption error message. ([18638](https://github.com/pantsbuild/pants/pull/18638))

* Remove a python-specific tip from the general prereqs page. ([18637](https://github.com/pantsbuild/pants/pull/18637))

* Make UUID message clearer ([18561](https://github.com/pantsbuild/pants/pull/18561))

release_2.17.0.dev2

New Features

* javascript: Test goal with package manager installed test runner support ([18554](https://github.com/pantsbuild/pants/pull/18554))

* expose PANTS_VERSION and make it string-comparable ([18573](https://github.com/pantsbuild/pants/pull/18573))

User API Changes

* Upgrade Pex to 2.1.131. ([18626](https://github.com/pantsbuild/pants/pull/18626))

Bug fixes

* Ensure that sandboxed processes exit before their sandboxes are cleaned up ([18632](https://github.com/pantsbuild/pants/pull/18632))

* Plumb entire lockfile/internal only code through `create_pex_from_targets` ([18622](https://github.com/pantsbuild/pants/pull/18622))

* narrow pex_binary files warning ([18619](https://github.com/pantsbuild/pants/pull/18619))

* Fix PexPEX invocations ([18610](https://github.com/pantsbuild/pants/pull/18610))

* Improve debug information for docker auth, and expose an environment variable. ([18599](https://github.com/pantsbuild/pants/pull/18599))

Performance

* Only materialize immutable files once per process ([18600](https://github.com/pantsbuild/pants/pull/18600))

Documentation

* Fix a string that should have been an f-string ([18608](https://github.com/pantsbuild/pants/pull/18608))

* Fix `./pants` -> `pants` in some docs and help strings. ([18596](https://github.com/pantsbuild/pants/pull/18596))

release_2.16.0rc0

Bug fixes

* Ensure that sandboxed processes exit before their sandboxes are clean… ([18640](https://github.com/pantsbuild/pants/pull/18640))

* Plumb entire lockfile/internal only code through `create_pex_from_targets` (Cherry-pick of 18622) ([18634](https://github.com/pantsbuild/pants/pull/18634))

* Fix PexPEX invocations (Cherry-pick of 18610) ([18633](https://github.com/pantsbuild/pants/pull/18633))

* narrow pex_binary files warning (Cherry-pick of 18619) ([18628](https://github.com/pantsbuild/pants/pull/18628))

* Improve debug information for docker auth, and expose an environment variable. (Cherry-pick of 18599) ([18604](https://github.com/pantsbuild/pants/pull/18604))

Documentation

* Fix a string that should have been an f-string (Cherry-pick of 18608) ([18611](https://github.com/pantsbuild/pants/pull/18611))

* Fix `./pants` -> `pants` in some docs and help strings. (Cherry-pick of 18596) ([18606](https://github.com/pantsbuild/pants/pull/18606))

release_2.15.1rc1

Bug fixes

* Ensure that sandboxed processes exit before their sandboxes are clean… ([18641](https://github.com/pantsbuild/pants/pull/18641))

* Plumb entire lockfile/internal only code through `create_pex_from_targets` (cherry-pick of 18622) ([18636](https://github.com/pantsbuild/pants/pull/18636))

* Fix export-codgen with multiple output types from same input type (Cherry-pick of 18373) ([18377](https://github.com/pantsbuild/pants/pull/18377))

* Improve debug information for docker auth, and expose an environment variable. (Cherry-pick of 18599) ([18603](https://github.com/pantsbuild/pants/pull/18603))

Documentation

* Fix `./pants` -> `pants` in some docs and help strings. (cherrypick of 18596) ([18607](https://github.com/pantsbuild/pants/pull/18607))

release_2.14.2rc1

Bug fixes

* Ensure that sandboxed processes exit before their sandboxes are clean… ([18642](https://github.com/pantsbuild/pants/pull/18642))

* Plumb entire lockfile/internal only code through `create_pex_from_targets` (cherry-pick of 18622) ([18635](https://github.com/pantsbuild/pants/pull/18635))

release_2.17.0.dev1

New Features

* engine: add an option to clear the destination directory when writing digest to disk ([18534](https://github.com/pantsbuild/pants/pull/18534))

* javascript: NodeJS bootstrapping via binary paths, PATH, asdf or nvm ([18520](https://github.com/pantsbuild/pants/pull/18520))

* javascript: Initial NPM support ([18326](https://github.com/pantsbuild/pants/pull/18326))

* Always provide Python-for-Pants-scripts ([18433](https://github.com/pantsbuild/pants/pull/18433))

User API Changes

* Upgrade Pex to 2.1.130. ([18576](https://github.com/pantsbuild/pants/pull/18576))

* Deprecate old-style custom tool lockfiles. ([18494](https://github.com/pantsbuild/pants/pull/18494))

* Let a user resolve shadow a tool lockfile of the same name ([18481](https://github.com/pantsbuild/pants/pull/18481))

Bug fixes

* Ensure that a symlinked exported venv exists and is valid. ([18575](https://github.com/pantsbuild/pants/pull/18575))

* Fail fast for attempts to use `test --debug` with a docker environment ([18560](https://github.com/pantsbuild/pants/pull/18560))

* Declare ruff outputs as files. ([18551](https://github.com/pantsbuild/pants/pull/18551))

* Add support for Docker registry auth ([18541](https://github.com/pantsbuild/pants/pull/18541))

* Fix Poetry req synthesis for URLs with markers. ([18535](https://github.com/pantsbuild/pants/pull/18535))

* Re-enable hardlinking using `fclonefileat` on macOS. ([18501](https://github.com/pantsbuild/pants/pull/18501))

Performance

* Materialize "large" files in a new store location and hardlink them in sandboxes ([18153](https://github.com/pantsbuild/pants/pull/18153))

* Finish parallelizing materialization of Process inputs ([18469](https://github.com/pantsbuild/pants/pull/18469))

Documentation

* First pass at `adhoc_tool` documentation ([18531](https://github.com/pantsbuild/pants/pull/18531))

* Add Tobias Nilsson to team page ([18571](https://github.com/pantsbuild/pants/pull/18571))

* docs: fix an f-string in help ([18539](https://github.com/pantsbuild/pants/pull/18539))

* Clarify that `experimental_` shell functions are deprecated and replaced ([18529](https://github.com/pantsbuild/pants/pull/18529))

* Update docs on running pants from sources with scie-pants. ([18513](https://github.com/pantsbuild/pants/pull/18513))

* Add ExoFlare to user list. ([18496](https://github.com/pantsbuild/pants/pull/18496))

* Fix malformed pantsbuild/example-python link in documentation ([18484](https://github.com/pantsbuild/pants/pull/18484))

* update scie-jump cache directory reference ([18485](https://github.com/pantsbuild/pants/pull/18485))

* Expand lockfile documentation to its own page. ([18471](https://github.com/pantsbuild/pants/pull/18471))

release_2.16.0a1

New Features

* Always provide Python-for-Pants-scripts (Cherry-pick of 18433) ([18495](https://github.com/pantsbuild/pants/pull/18495))

* Expose environment information on process metadata (Cherry-pick of 18458) ([18463](https://github.com/pantsbuild/pants/pull/18463))

User API Changes

* Upgrade Pex to 2.1.130. (Cherry-pick of 18576) ([18578](https://github.com/pantsbuild/pants/pull/18578))

* Deprecate old-style custom tool lockfiles. (18494) ([18498](https://github.com/pantsbuild/pants/pull/18498))

* Let a user resolve shadow a tool lockfile of the same name (Cherry-pick of 18481) ([18493](https://github.com/pantsbuild/pants/pull/18493))

* Audit and update requirements for Python tools. (cherrypick 18431) ([18460](https://github.com/pantsbuild/pants/pull/18460))

Bug fixes

* Ensure that a symlinked exported venv exists and is valid. (Cherry-pick of 18575) ([18585](https://github.com/pantsbuild/pants/pull/18585))

* Fail fast for attempts to use `test --debug` with a docker environment (Cherry-pick of 18560) ([18568](https://github.com/pantsbuild/pants/pull/18568))

* Declare ruff outputs as files. (Cherry-pick of 18551) ([18557](https://github.com/pantsbuild/pants/pull/18557))

* Add support for Docker registry auth (Cherry-pick of 18541) ([18549](https://github.com/pantsbuild/pants/pull/18549))

* Fix Poetry req synthesis for URLs with markers. (Cherry-pick of 18535) ([18536](https://github.com/pantsbuild/pants/pull/18536))

* Preserve environment variables in `pantsd` to allow Docker auth. (Cherry-pick of 18465) ([18468](https://github.com/pantsbuild/pants/pull/18468))

* Only expose the equiv of `from typing import *` in prelude files (Cherry-pick of 18452) ([18455](https://github.com/pantsbuild/pants/pull/18455))

* Support type hints in prelude files. (Cherry-pick of 18442) ([18449](https://github.com/pantsbuild/pants/pull/18449))

* Synthesized lockfile targets should never err on missing lockfiles. (Cherry-pick of 18406) ([18447](https://github.com/pantsbuild/pants/pull/18447))

Documentation

* First pass at `adhoc_tool` documentation (Cherry-pick of 18531) ([18581](https://github.com/pantsbuild/pants/pull/18581))

* Update docs on running pants from sources with scie-pants. (Cherry-pick of 18513) ([18514](https://github.com/pantsbuild/pants/pull/18514))

* Remove the superfluous updated: front matter from readme docs. (cherrypick of 18475) ([18476](https://github.com/pantsbuild/pants/pull/18476))

* Expand lockfile documentation to its own page. (cherrypick of 18471) ([18474](https://github.com/pantsbuild/pants/pull/18474))

release_2.15.1rc0

Bug fixes

* Fail fast for attempts to use `test --debug` with a docker environment (Cherry-pick of 18560) ([18567](https://github.com/pantsbuild/pants/pull/18567))

* Add support for Docker registry auth (Cherry-pick of 18541) ([18550](https://github.com/pantsbuild/pants/pull/18550))

* Fix Poetry req synthesis for URLs with markers. (Cherry-pick of 18535) ([18537](https://github.com/pantsbuild/pants/pull/18537))

* Preserve environment variables in `pantsd` to allow Docker auth. (Cherry-pick of 18465) ([18467](https://github.com/pantsbuild/pants/pull/18467))

* Synthesized lockfile targets should never err on missing lockfiles. (Cherry-pick of 18406) ([18446](https://github.com/pantsbuild/pants/pull/18446))

* go: skip go v1.20+ when searching for the GOROOT ([18429](https://github.com/pantsbuild/pants/pull/18429))

Documentation

* Some doc fixes suggested by users. (Cherry-pick of 18393) ([18394](https://github.com/pantsbuild/pants/pull/18394))

release_2.14.2rc0

Bug fixes

* Fix Poetry req synthesis for URLs with markers. (Cherry-pick of 18535) ([18538](https://github.com/pantsbuild/pants/pull/18538))

* Make mypy cache per-repo (Cherry-pick of 18043) ([18060](https://github.com/pantsbuild/pants/pull/18060))

release_2.17.0.dev0

New Features

* Expose environment information on process metadata ([18458](https://github.com/pantsbuild/pants/pull/18458))

* Support running `pants` from anywhere in the project. ([18412](https://github.com/pantsbuild/pants/pull/18412))

User API Changes

* Audit and update requirements for Python tools. ([18431](https://github.com/pantsbuild/pants/pull/18431))

* Upgrade Pex to 2.1.128. ([18453](https://github.com/pantsbuild/pants/pull/18453))

Bug fixes

* Preserve environment variables in `pantsd` to allow Docker auth. ([18465](https://github.com/pantsbuild/pants/pull/18465))

* Only expose the equiv of `from typing import *` in prelude files ([18452](https://github.com/pantsbuild/pants/pull/18452))

* Support type hints in prelude files. ([18442](https://github.com/pantsbuild/pants/pull/18442))

* Synthesized lockfile targets should never err on missing lockfiles. ([18406](https://github.com/pantsbuild/pants/pull/18406))

* Fixes to visualisations for xdot ([18421](https://github.com/pantsbuild/pants/pull/18421))

release_2.16.0a0

New Features

* Allow python tools to be installed from a user resolve. ([18418](https://github.com/pantsbuild/pants/pull/18418))

* golang: add support for passthrough args for gofmt ([18409](https://github.com/pantsbuild/pants/pull/18409))

* Add the ability for Pants to provide Python via a union (with a pyenv impl) ([18352](https://github.com/pantsbuild/pants/pull/18352))

* Add `sources_fingerprint` to `peek` on source-creating targets ([18383](https://github.com/pantsbuild/pants/pull/18383))

* New `BUILD` file symbols help info ([18378](https://github.com/pantsbuild/pants/pull/18378))

* Visibility: support matching on target names. ([18369](https://github.com/pantsbuild/pants/pull/18369))

* Support for `peek`ing at dependency/dependents rules ([18112](https://github.com/pantsbuild/pants/pull/18112))

* Adds support for supplying "runnable" dependencies to the `execution_dependencies` field ([18347](https://github.com/pantsbuild/pants/pull/18347))

* javascript: Support esm modules and commonjs specific javascript file extensions ([18208](https://github.com/pantsbuild/pants/pull/18208))

* Adds `system_binary` target, which can be used to reproducibly find a pre-installed binary for use with `adhoc_tool` ([18332](https://github.com/pantsbuild/pants/pull/18332))

* Enable running third-party Go `main` packages ([17449](https://github.com/pantsbuild/pants/pull/17449))

User API Changes

* Add `python311` runtime to `python_google_cloud_function` target ([18405](https://github.com/pantsbuild/pants/pull/18405))

* Delegate lockfile requirement validation to Pex when possible. ([18415](https://github.com/pantsbuild/pants/pull/18415))

* Upgrade Pex to 2.1.126. ([18408](https://github.com/pantsbuild/pants/pull/18408))

* Deprecate the default interpreter constraints. ([18390](https://github.com/pantsbuild/pants/pull/18390))

* Give pantsd more RAM by default. ([18389](https://github.com/pantsbuild/pants/pull/18389))

Plugin API Changes

* Support specifying a named resolve as the superset in a `PexRequirements`. ([18397](https://github.com/pantsbuild/pants/pull/18397))

* Deprecate the `rule_helper` decorator. ([18330](https://github.com/pantsbuild/pants/pull/18330))

* Get rid of the `LockfileContent` class ([18305](https://github.com/pantsbuild/pants/pull/18305))

Bug fixes

* python: collect files with '[tool.ruff' sections as candidates for Ruff config files ([18413](https://github.com/pantsbuild/pants/pull/18413))

* Fix OSError when running pants in systemd-nspawn container ([18398](https://github.com/pantsbuild/pants/pull/18398))

* Fix `paths` issue with transitive excludes. ([18396](https://github.com/pantsbuild/pants/pull/18396))

* Fix export-codgen with multiple output types from same input type ([18373](https://github.com/pantsbuild/pants/pull/18373))

* Errors in `--loop` wait for changes rather than re-running immediately ([18367](https://github.com/pantsbuild/pants/pull/18367))

* Support using `env()` in prelude macro files ([18273](https://github.com/pantsbuild/pants/pull/18273))

* Docker environment uses a volume for named caches ([18327](https://github.com/pantsbuild/pants/pull/18327))

* Load `fromfile` files relative to build root ([18311](https://github.com/pantsbuild/pants/pull/18311))

* Ensure that the pep-517 backend shim works on Python 2.7. ([18295](https://github.com/pantsbuild/pants/pull/18295))

Documentation

* Update documentation on how to install the pants binary ([18372](https://github.com/pantsbuild/pants/pull/18372))

* Some doc fixes suggested by users. ([18393](https://github.com/pantsbuild/pants/pull/18393))

* docs: tidy up writing plugins tutorial ([18380](https://github.com/pantsbuild/pants/pull/18380))

* docs: upgrade plugin writing tutorial to 2.15.0 ([18371](https://github.com/pantsbuild/pants/pull/18371))

* Use valid container/app names in helm examples ([18358](https://github.com/pantsbuild/pants/pull/18358))

* Remove defunct newsletter ([18355](https://github.com/pantsbuild/pants/pull/18355))

* docs: mention code generation when troubleshooting missing imports from first-party code ([18073](https://github.com/pantsbuild/pants/pull/18073))

* Fix documentation example for `python_awslambda` targets ([18302](https://github.com/pantsbuild/pants/pull/18302))

* Change bool values to lowercase in TOML snippets ([18299](https://github.com/pantsbuild/pants/pull/18299))


release_2.15.0
What's New

Pants 2.15 brings support for several new features:

Environments

Pants now supports alternate execution "environments" for build actions. These "environments" can be explicitly
configured as desired via several new target types (including having multiple environments of the same type).
The new `environment` field on many targets tells Pants which environment to use for a particular target.

Pants previously supported local execution (which is now configured by the `local_environment` target type) and
remote execution via the Remote Execution API (which is now configured by the `remote_environment` target type).

New in Pants 2.15 is support for executing build actions within a Docker container configured via the
`docker_environment` target type.

See the [Environments documentation](https://www.pantsbuild.org/v2.15/docs/environments) for more information.

Test Batching

`./pants test` now supports batching compatible tests together so that they execute in the same process.
This can improve performance of test execution by sharing test environment setup across multiple test files,
but must be balanced against the impact on caching and concurrency.

The Python backend is the first user of the test batching support.

New goal: `fix`

The `fix` goal has been added to run tools which generally will perform more invasive changes on your source
files than the `fmt` goal. The `fmt` goal remains for tools which merely format code without making
semantic changes.

Backends

Python

Several changes have been made to the Python backend:

- Support for the new Environments feature. Relevant targets now have a new `environment` field
to configure which environment to use for that target.
- Batched execution of `pytest` tests.
- Support for `lcov` coverage format.
- Support for `pyright` typechecking.
- Python lockfiles are now represented in the build graph via synthetic targets.
- Upgrades to default version of several tools including coverage and Flake8.

Go

The Go backend received several changes including:

- Basic support for Cgo
- Coverage reports can be generated in HTML and not just the raw data file used by `go tool cover`.
- Support for [the `golangci-lint` linter](https://www.pantsbuild.org/v2.15/docs/go#golangci-lint).
- Support for multiple `go_mod` targets in same repository.
- A new `go-generate` custom goal to run `go generate` on any `//go:generate` instructions in a package.
- `$GOROOT/bin` is now prepended to `PATH` when running tests to enable them to easily find the `go` binary for
the Go toolchain in use.

Note: Due to certain changes in Go v1.20, Pants 2.15.x and earlier Pants versions will not work with Go v1.20
and later releases. Instead, use Pants v2.16.x or later Pants versions to support Go v1.20 and later releases.

New: OpenAPI

The new OpenAPI backend provides support for linting OpenAPI API specifications using the `spectral` tool
and generating Java code from the OpenAPI specifications.

Enable the `pants.backend.experimental.openapi` backend for base OpenAPI support,
the `pants.backend.experimental.openapi.lint.spectral` backend for linting support, and
the `pants.backend.experimental.openapi.codegen.java` backend for Java code generation support.

Plugin API changes

Several changes were made to the Plugin API including the changes highlighted below. Read the
[Plugin upgrade guide](https://www.pantsbuild.org/v2.15/docs/plugin-upgrade-guide#215) for a full description
of the changes highlighted below (as well as other changes not highlighted here), including how to migrate
existing plugins.

Formatters / Linters

The schema used for formatters and linters has been changed in order to allow for formatters and linters which
do not require a target on which to operate. See the [applicable section of the Plugin upgrade guide](https://www.pantsbuild.org/v2.15/docs/plugin-upgrade-guide#lint-and-fmt-schema-changes)
for the specific changes.

Batched Tests

The plugin API used by the `test` goal has been changed significantly to support the explicit batching of tests. See the
[applicable section of the Plugin upgrade guide](https://www.pantsbuild.org/v2.15/docs/plugin-upgrade-guide#test-schema-changes)
for the specific changes.

Synthetic Targets

Plugins may now add "synthetic targets" to the build graph to create freestanding targets programmatically.
These synthetic targets can also be generator targets in order to further create generated targets. See the
[plugin documentation for the Synthetic Targets API](https://www.pantsbuild.org/v2.15/docs/target-api-concepts#synthetic-targets-api)
for more information.

release_2.15.0rc7

Bug fixes

* Docker environment uses a volume for named caches (Cherry-pick of 18327) ([18337](https://github.com/pantsbuild/pants/pull/18337))

* go: add backends which were missing from distribution (Cherrypick of 18312) ([18316](https://github.com/pantsbuild/pants/pull/18316))

* Ensure that the pep-517 backend shim works on Python 2.7. (Cherry-pick of 18295) ([18300](https://github.com/pantsbuild/pants/pull/18300))

release_2.16.0.dev7

New Features

* Allow exporting codegenerated files/resources ([18236](https://github.com/pantsbuild/pants/pull/18236))

* python: teach tailor goal to create resource targets for py.typed marker files ([18174](https://github.com/pantsbuild/pants/pull/18174))

* The beginnings of a Django plugin. ([18173](https://github.com/pantsbuild/pants/pull/18173))

* Add backend for projects that use openstack/stevedore ([18132](https://github.com/pantsbuild/pants/pull/18132))

* [python-infer]: allow ignoring unowned imports ([18094](https://github.com/pantsbuild/pants/pull/18094))

* Print diff report when generating Python lockfiles. ([17347](https://github.com/pantsbuild/pants/pull/17347))

User API Changes

* Deprecates `experimental_run_shell_command` in favour of `run_shell_command` ([18266](https://github.com/pantsbuild/pants/pull/18266))

* Deprecates `experimental_shell_command`, replacing with `shell_command` ([18255](https://github.com/pantsbuild/pants/pull/18255))

* Extracts `backend.adhoc` package and `backend.experimental.adhoc` backend for `adhoc_tool` ([18237](https://github.com/pantsbuild/pants/pull/18237))

* Upgrade Pex to 2.1.122. ([18230](https://github.com/pantsbuild/pants/pull/18230))

* Relativize the pants_bin_name if necessary. ([18204](https://github.com/pantsbuild/pants/pull/18204))

* Adjust the default for `root_output_directory` ([18192](https://github.com/pantsbuild/pants/pull/18192))

* Visibility backend: adjust rule set selector syntax making path values default rather than target types. ([18154](https://github.com/pantsbuild/pants/pull/18154))

* Adds fields to capture stdout/stderr to `experimental_run_in_sandbox` ([18165](https://github.com/pantsbuild/pants/pull/18165))

* `shell_command`/`run_in_sandbox` workdir/output dir adjustments ([18157](https://github.com/pantsbuild/pants/pull/18157))

* Default to the new "Dependents" header in the py_constraints report. ([18142](https://github.com/pantsbuild/pants/pull/18142))

Plugin API Changes

* Improve type inference for `rule`s ([17947](https://github.com/pantsbuild/pants/pull/17947))

* deprecate `frozen_after_init` ([18127](https://github.com/pantsbuild/pants/pull/18127))

Bug fixes

* go: support embed configuration in stdlib packages ([18271](https://github.com/pantsbuild/pants/pull/18271))

* Upgrade to Lambdex 0.1.9 ([18257](https://github.com/pantsbuild/pants/pull/18257))

* Delete override of expected `exe` name for `shfmt`. ([18258](https://github.com/pantsbuild/pants/pull/18258))

* Fix bootstrap issue with `__defaults__` and environments. ([18251](https://github.com/pantsbuild/pants/pull/18251))

* Allow breakpoints to be hit when run_in_sandbox is False ([18244](https://github.com/pantsbuild/pants/pull/18244))

* Avoid bind-mounts for docker environments on macOS ([18225](https://github.com/pantsbuild/pants/pull/18225))

* Move ruff from fmt to fix ([18228](https://github.com/pantsbuild/pants/pull/18228))

* Stream large remote cache downloads directly to disk ([18054](https://github.com/pantsbuild/pants/pull/18054))

* BUILD file target field default should respect values from `__defaults__`. ([18172](https://github.com/pantsbuild/pants/pull/18172))

* Fix published wheel RECORDs. ([18219](https://github.com/pantsbuild/pants/pull/18219))

* Always explicitly shutdown executors ([18216](https://github.com/pantsbuild/pants/pull/18216))

* go: upgrade golangci-lint to fix issue with Go v1.20 ([18207](https://github.com/pantsbuild/pants/pull/18207))

* go: disable coverage redesign experiment on Go v1.20+ ([18205](https://github.com/pantsbuild/pants/pull/18205))

* Use `EnvironmentAwarePackageRequest` in many more contexts. ([18203](https://github.com/pantsbuild/pants/pull/18203))

* Have lambdex create a new output file. ([18200](https://github.com/pantsbuild/pants/pull/18200))

* Shutdown all threads as part of Scheduler shutdown ([18166](https://github.com/pantsbuild/pants/pull/18166))

* Fix the dep inference scripts source root bug. ([18164](https://github.com/pantsbuild/pants/pull/18164))

* Add the `environment` field to most Python binary target types ([18144](https://github.com/pantsbuild/pants/pull/18144))

* go: don't check for `Target` attribute on stdlib packages ([18148](https://github.com/pantsbuild/pants/pull/18148))

* go: fix backend to work when run in non-local environments ([18140](https://github.com/pantsbuild/pants/pull/18140))

* Run `pyupgrade` until convergance ([18128](https://github.com/pantsbuild/pants/pull/18128))

Documentation

* docs: use an example black version that does not explode ([18270](https://github.com/pantsbuild/pants/pull/18270))

* docs: fix typo ([18238](https://github.com/pantsbuild/pants/pull/18238))

* Update the stated release target to match our desired reality. ([18234](https://github.com/pantsbuild/pants/pull/18234))

* docs: add What's New section for 2.15.x release notes (18226) ([18232](https://github.com/pantsbuild/pants/pull/18232))

* Add warning about dependency inference + `extra_type_stubs`. ([17076](https://github.com/pantsbuild/pants/pull/17076))

* docs: further updates to 2.16.x What's New ([18227](https://github.com/pantsbuild/pants/pull/18227))

* Jacob Floyd/Huon Wilson updates to team page ([18221](https://github.com/pantsbuild/pants/pull/18221))

* docs: add "What's New" section to 2.16 release notes ([18146](https://github.com/pantsbuild/pants/pull/18146))

* Document the new get-pants.sh name. ([18137](https://github.com/pantsbuild/pants/pull/18137))

* Add Pylint post ([18079](https://github.com/pantsbuild/pants/pull/18079))

* Change to Pantsbuild's custom YouTube url ([18133](https://github.com/pantsbuild/pants/pull/18133))

* Recommend checking the pantsup.sh script in. ([18120](https://github.com/pantsbuild/pants/pull/18120))

* Don't update old release notes. ([18123](https://github.com/pantsbuild/pants/pull/18123))

* Change `./pants` to `pants` in the docs ([18121](https://github.com/pantsbuild/pants/pull/18121))


release_2.15.0rc6

New Features

* Allow exporting codegenerated files/resources (Cherry-pick of 18236) ([18241](https://github.com/pantsbuild/pants/pull/18241))

Bug fixes

* Fix bootstrap issue with `__defaults__` and environments. (Cherry-pick of 18251) ([18262](https://github.com/pantsbuild/pants/pull/18262))

* Upgrade to Lambdex 0.1.9 (Cherry-pick of 18257) ([18261](https://github.com/pantsbuild/pants/pull/18261))

* Delete override of expected `exe` name for `shfmt`. (Cherry-pick of 18258) ([18259](https://github.com/pantsbuild/pants/pull/18259))

* Allow breakpoints to be hit when run_in_sandbox is False (Cherry-pick of 18244) ([18245](https://github.com/pantsbuild/pants/pull/18245))

Documentation

* docs: add What's New section for 2.15.x release notes ([18226](https://github.com/pantsbuild/pants/pull/18226))

release_2.15.0rc5

Bug fixes

* Fix published wheel RECORDs. (Cherry-pick of 18219) ([18220](https://github.com/pantsbuild/pants/pull/18220))

* Always explicitly shutdown executors (Cherry-pick of 18216) ([18218](https://github.com/pantsbuild/pants/pull/18218))

* Use `EnvironmentAwarePackageRequest` in many more contexts. (Cherry-pick of 18203) ([18206](https://github.com/pantsbuild/pants/pull/18206))

* Have lambdex create a new output file. (Cherry-pick of 18200) ([18201](https://github.com/pantsbuild/pants/pull/18201))

release_2.15.0rc4

Bug fixes

* Shutdown all threads as part of Scheduler shutdown (Cherry-pick of 18166) ([18188](https://github.com/pantsbuild/pants/pull/18188))

release_2.15.0rc3

New Features

* Add `environment=` to `experimental_shell_command`. (Cherry-pick of 17575) ([18064](https://github.com/pantsbuild/pants/pull/18064))

Bug fixes

* Add the `environment` field to most Python binary target types (Cherry-pick of 18144) ([18150](https://github.com/pantsbuild/pants/pull/18150))

* Run `pyupgrade` until convergance (Cherry-pick of 18128) ([18130](https://github.com/pantsbuild/pants/pull/18130))

* Make mypy cache per-repo (Cherry-pick of 18043) ([18061](https://github.com/pantsbuild/pants/pull/18061))

* go: detect when `go.sum` needs additional entries filled in (Cherrypick of 17811) ([18118](https://github.com/pantsbuild/pants/pull/18118))

* Explicitly use "python" ijson backend (cherry-pick of 17787) ([18077](https://github.com/pantsbuild/pants/pull/18077))

* Fix caching of PATH lookups in remote execution (Cherry-pick of 18026) ([18062](https://github.com/pantsbuild/pants/pull/18062))

Documentation

* Document the new get-pants.sh name. (Cherry-pick of 18137) ([18139](https://github.com/pantsbuild/pants/pull/18139))

* Recommend checking the pantsup.sh script in. (Cherry-pick of 18120) ([18134](https://github.com/pantsbuild/pants/pull/18134))

* Change ./pants to pants in the docs (cherry-pick of 18121) ([18124](https://github.com/pantsbuild/pants/pull/18124))

* docs: fix markdown inline code typo in a docstring (Cherry-pick of 18002) ([18103](https://github.com/pantsbuild/pants/pull/18103))

* docs: add tutorials to get started writing plugins (Cherry-pick) ([18107](https://github.com/pantsbuild/pants/pull/18107))

* docs: mention name clashing between custom goals and options when writing plugins (Cherry-pick of 17899) ([18105](https://github.com/pantsbuild/pants/pull/18105))

* docs: tidy up Writing plugins : rules-api directory files (Cherry-pick of 17710) ([18102](https://github.com/pantsbuild/pants/pull/18102))

* Document new pants launcher binary, aka scie-pants. (Cherry-pick of 18056) ([18075](https://github.com/pantsbuild/pants/pull/18075))

* Docs: improve docs on handling option values in cli (Cherry-pick of 17506) ([18069](https://github.com/pantsbuild/pants/pull/18069))

* Update and reorganize resource hub (17922) ([18068](https://github.com/pantsbuild/pants/pull/18068))

* Add Daniel Goldman and Darcy Shen to team page (Cherry-pick of 17921) ([18066](https://github.com/pantsbuild/pants/pull/18066))

* Nudge more technical support toward GH Discussions (Cherry-pick of 17906) ([18065](https://github.com/pantsbuild/pants/pull/18065))

release_2.16.0.dev6

New Features

* go: add `environment` field to `go_binary` ([18113](https://github.com/pantsbuild/pants/pull/18113))

* Add experimental backend for ruff with lint and fmt goals ([17945](https://github.com/pantsbuild/pants/pull/17945))

* Add support for `fmt` cue files. ([18106](https://github.com/pantsbuild/pants/pull/18106))

* Add new experimental backend for CUE with initial support for the `lint` goal. ([17943](https://github.com/pantsbuild/pants/pull/17943))

* Add yamllint as a lint tool for YAML sources ([17821](https://github.com/pantsbuild/pants/pull/17821))

* lint: add pydocstyle python backend ([17596](https://github.com/pantsbuild/pants/pull/17596))

User API Changes

* Upgrade Pex to 2.1.121. ([18037](https://github.com/pantsbuild/pants/pull/18037))

Plugin API Changes

* Make the python dep inference script extensible. ([17997](https://github.com/pantsbuild/pants/pull/17997))

* Remove some dead code from `lockfile.py` ([18041](https://github.com/pantsbuild/pants/pull/18041))

Bug fixes

* Inject a path-safe target spec into `experimental_shell_command` etc processes ([18092](https://github.com/pantsbuild/pants/pull/18092))

* docker: Allow overriding FROM args when determining upstream image dependencies ([18009](https://github.com/pantsbuild/pants/pull/18009))

* Make mypy cache per-repo ([18043](https://github.com/pantsbuild/pants/pull/18043))

* Fix caching of PATH lookups in remote execution ([18026](https://github.com/pantsbuild/pants/pull/18026))

Documentation

* docs: make tutorials to get started writing plugins visible on readme pages ([18083](https://github.com/pantsbuild/pants/pull/18083))

* Document new pants launcher binary, aka scie-pants. ([18056](https://github.com/pantsbuild/pants/pull/18056))

* Front matter for new tutorial pages. ([18074](https://github.com/pantsbuild/pants/pull/18074))

* Cosmetic fix for current value information in help output for pass-through arguments. ([18051](https://github.com/pantsbuild/pants/pull/18051))

* docs: add pydocstyle to the docs and help reference ([18033](https://github.com/pantsbuild/pants/pull/18033))

* docs: add tutorial to get started writing plugins: No 3 ([18018](https://github.com/pantsbuild/pants/pull/18018))


release_2.15.0rc2

New Features

* Added support for discovering and patching `pyright` config files (cherry-pick of 17771) ([18030](https://github.com/pantsbuild/pants/pull/18030))

Bug fixes

* Streamline local dist handling when running python sources. (Cherry-pick of 17742) ([18035](https://github.com/pantsbuild/pants/pull/18035))

* Adds workunit for interactive processes. (Cherry-pick of 17544) ([17996](https://github.com/pantsbuild/pants/pull/17996))

* Pyright should grab non-transitive dependencies and make them available in the sandbox (Cherry-pick of 17235) ([17980](https://github.com/pantsbuild/pants/pull/17980))

* add `skip_pyright` field to python test targets (Cherry-pick of 17960) ([17968](https://github.com/pantsbuild/pants/pull/17968))

* Do not load the BUILD file prelude (macros) in the bootstrap scheduler. (Cherry-pick of 17939) ([17941](https://github.com/pantsbuild/pants/pull/17941))

Documentation

* Document how to update the pants script. (Cherry-pick of 17976) ([17979](https://github.com/pantsbuild/pants/pull/17979))

release_2.14.1

The second stable release of the `2.14.x` series, with no changes since the previous release candidate!

release_2.16.0.dev5

New Features

* New `env()` BUILD file function. ([17652](https://github.com/pantsbuild/pants/pull/17652))

* Support REPL command history. ([17959](https://github.com/pantsbuild/pants/pull/17959))

* Resolve Python dep inference ambiguity via locality. ([17931](https://github.com/pantsbuild/pants/pull/17931))

* Add targets to re-wrap source files in different `SourcesField` types. ([17877](https://github.com/pantsbuild/pants/pull/17877))

* Allow plugins to add custom schema/authority URL handler rules ([17898](https://github.com/pantsbuild/pants/pull/17898))

* Support freezing command line args and env vars into pex binaries. ([17905](https://github.com/pantsbuild/pants/pull/17905))

* Support catching `rule` errors ([17911](https://github.com/pantsbuild/pants/pull/17911))

User API Changes

* Ugrade Pex to 2.1.120 ([17957](https://github.com/pantsbuild/pants/pull/17957))

* Adds `workdir` field for `experimental_shell_command` and friends ([17928](https://github.com/pantsbuild/pants/pull/17928))

Bug fixes

* Let pyright see dependencies in other source roots. ([18014](https://github.com/pantsbuild/pants/pull/18014))

* go: gather and link transitive prebuilt object files for cgo mode ([17971](https://github.com/pantsbuild/pants/pull/17971))

* add skip_pyright field to python test targets ([17960](https://github.com/pantsbuild/pants/pull/17960))

* Allow `experimental_shell_command`/`experimental_run_in_sandbox` to specify `output_`s from anywhere under the buildroot ([17938](https://github.com/pantsbuild/pants/pull/17938))

* Do not load the BUILD file prelude (macros) in the bootstrap scheduler. ([17939](https://github.com/pantsbuild/pants/pull/17939))

Documentation

* WSL disclaimer in Getting Started/Prerequisites ([18000](https://github.com/pantsbuild/pants/pull/18000))

* Add Daniel Goldman and Darcy Shen to team page ([17921](https://github.com/pantsbuild/pants/pull/17921))

* Clarify runtime vs. complete_platforms for serverless. ([18001](https://github.com/pantsbuild/pants/pull/18001))

* docs: add tutorial to get started writing plugins: No 2 ([17890](https://github.com/pantsbuild/pants/pull/17890))

* docs: generate a JSON schema file to be used in IDEs when editing pants.toml ([17915](https://github.com/pantsbuild/pants/pull/17915))

* docs: fix markdown inline code typo in a docstring ([18002](https://github.com/pantsbuild/pants/pull/18002))

* fix type in `check` help output ([17969](https://github.com/pantsbuild/pants/pull/17969))

* Document how to update the pants script. ([17976](https://github.com/pantsbuild/pants/pull/17976))

* Add Kaiko to "who uses Pants" page. ([17949](https://github.com/pantsbuild/pants/pull/17949))

* docs: provide a link to Google Cloud Function in the backend docstring ([17948](https://github.com/pantsbuild/pants/pull/17948))

* docs: add info about beta stage support of protobuf for Scala and Java ([17935](https://github.com/pantsbuild/pants/pull/17935))

* docs: add the first tutorial on writing plugins to readme docs directory ([17930](https://github.com/pantsbuild/pants/pull/17930))

* docs: reformat the kotlin docs to have better line breaks on readme.com ([17929](https://github.com/pantsbuild/pants/pull/17929))

* Update and reorganize resource hub ([17922](https://github.com/pantsbuild/pants/pull/17922))

* Add Payhere to user list. ([17917](https://github.com/pantsbuild/pants/pull/17917))

* Nudge more technical support toward GH Discussions ([17906](https://github.com/pantsbuild/pants/pull/17906))

* go: update docs to remove caveats about implemented features ([17913](https://github.com/pantsbuild/pants/pull/17913))


release_2.16.0.dev4

New Features

* Add [buf] config and config_discovery options ([17885](https://github.com/pantsbuild/pants/pull/17885))

* New help topic: `backends`. ([17600](https://github.com/pantsbuild/pants/pull/17600))

* Make pants work when the uid doesn't map to a user. ([17881](https://github.com/pantsbuild/pants/pull/17881))

* Make JVM sources runnable ([17847](https://github.com/pantsbuild/pants/pull/17847))

* Support `python_requirement` as a `run`/`experimental_run_in_sandbox` target ([17864](https://github.com/pantsbuild/pants/pull/17864))

* Support `experimental_run_in_sandbox`/`./pants run` for `jvm_artifact` targets ([17827](https://github.com/pantsbuild/pants/pull/17827))

* go: support the `go test` profiling options ([17836](https://github.com/pantsbuild/pants/pull/17836))

* Add output_path field to python_distribution. ([17841](https://github.com/pantsbuild/pants/pull/17841))

User API Changes

* Upgrade default mypy-protobuf version to 3.4 ([17887](https://github.com/pantsbuild/pants/pull/17887))

* allow each resolve to be exported for multiple python interpreters ([17711](https://github.com/pantsbuild/pants/pull/17711))

* More default Python module mappings. ([17879](https://github.com/pantsbuild/pants/pull/17879))

* Make export cleanup a subset of `dist/export`, not the whole thing ([17849](https://github.com/pantsbuild/pants/pull/17849))

* Unify the messages for lockfile validation errors. ([17842](https://github.com/pantsbuild/pants/pull/17842))

* Unify validation of tool and user lockfile metadata. ([17834](https://github.com/pantsbuild/pants/pull/17834))

* Detect Pants-generated lockfiles before attempting to validate. ([17833](https://github.com/pantsbuild/pants/pull/17833))

Plugin API Changes

* Remove `immutable_input_digests` from shell code ([17886](https://github.com/pantsbuild/pants/pull/17886))

* Default `use_pantsd` to `False` in `run_pants` ([17874](https://github.com/pantsbuild/pants/pull/17874))

* Remove the ToolCustomLockfile/ToolDefaultLockfile classes. ([17843](https://github.com/pantsbuild/pants/pull/17843))

Bug fixes

* scala: support scala v3 which has different compiler/library artifacts ([17855](https://github.com/pantsbuild/pants/pull/17855))

Performance

* Bring back hardlinking big files ([17878](https://github.com/pantsbuild/pants/pull/17878))

* Don't invalidate watched files if non-perms metadata changed ([17875](https://github.com/pantsbuild/pants/pull/17875))

Documentation

* docs: mention name clashing between custom goals and options when writing plugins ([17899](https://github.com/pantsbuild/pants/pull/17899))

* docs: add tutorial to get started writing plugins: No 1 ([17732](https://github.com/pantsbuild/pants/pull/17732))

* Document batched `pytest` execution. ([17845](https://github.com/pantsbuild/pants/pull/17845))

* Tweak the docs about __defaults__. ([17829](https://github.com/pantsbuild/pants/pull/17829))

* docs: extend python test goal with info on collecting tests with pytests ([17894](https://github.com/pantsbuild/pants/pull/17894))


release_2.14.1rc0

Bug fixes

* scala: support scala v3 which has different compiler/library artifacts (Cherry pick of 17855) ([17867](https://github.com/pantsbuild/pants/pull/17867))

* Fix twine env vars propagation for publish goal (Cherry-pick of 17650) ([17658](https://github.com/pantsbuild/pants/pull/17658))

* Allow for `run --debug-adapter` to match breakpoints when source is running in a sandbox (Cherry-pick of 17566) ([17583](https://github.com/pantsbuild/pants/pull/17583))

* Do not try to create `""` output directory in `CreateArchive` (Cherry-pick of 17538) ([17547](https://github.com/pantsbuild/pants/pull/17547))

* Fix an unactionable `InteractiveProcessRequest` deprecation ([17546](https://github.com/pantsbuild/pants/pull/17546))

* Fix dep inference from shuint2_tests targets. (Cherry-pick of 17417) ([17421](https://github.com/pantsbuild/pants/pull/17421))

* Fix dirtying of uncacheable nodes (Cherry-pick of 17079) ([17396](https://github.com/pantsbuild/pants/pull/17396))

Documentation

* Fix broken docs links to manual build instructions (Cherry-pick of 17608) ([17609](https://github.com/pantsbuild/pants/pull/17609))

* Update team pages for SJ and Dan! (Cherry-pick of 17534) ([17569](https://github.com/pantsbuild/pants/pull/17569))

* Fix line breaks in a docs page. (Cherry-pick of 17527) ([17529](https://github.com/pantsbuild/pants/pull/17529))

* Clarify how `__defaults__` apply to target generators. (Cherry-pick of 17493) ([17498](https://github.com/pantsbuild/pants/pull/17498))

* Fix typo in docs: debug-adaptor should be debug-adapter (Cherry-pick of 17452) ([17453](https://github.com/pantsbuild/pants/pull/17453))

* Update nuke_if_too_big documentation (Cherry-pick of 17429) ([17430](https://github.com/pantsbuild/pants/pull/17430))

* Fix version templating in `vcs_version` docs (Cherry-pick of 17423) ([17424](https://github.com/pantsbuild/pants/pull/17424))

* Add 2.14 blog post link to changelog page. (Cherry-pick of 17381) ([17384](https://github.com/pantsbuild/pants/pull/17384))

* Document the existence of the init-pants action. (Cherry-pick of 17378) ([17380](https://github.com/pantsbuild/pants/pull/17380))

* Fix linebreak issues in the targets docs page. (Cherry-pick of 17364) ([17366](https://github.com/pantsbuild/pants/pull/17366))

release_2.15.0rc1

Bug fixes

* scala: support scala v3 which has different compiler/library artifacts (Cherry pick of 17855) ([17866](https://github.com/pantsbuild/pants/pull/17866))

* Restore support for :all: in `only_binary`/`no_binary`. (Cherry-pick of 17779) ([17784](https://github.com/pantsbuild/pants/pull/17784))

* Test DebugAdapter requests, and fix issues (Cherry-pick of 17678) ([17768](https://github.com/pantsbuild/pants/pull/17768))

* chdir in `rule_runner.run_interactive_process` (Cherry-pick of 17722) ([17765](https://github.com/pantsbuild/pants/pull/17765))

Performance

* Run python sources with a VenvPex (Cherry-pick of 17700) ([17761](https://github.com/pantsbuild/pants/pull/17761))

Documentation

* Document batched `pytest` execution. (Cherry-pick of 17845) ([17853](https://github.com/pantsbuild/pants/pull/17853))

* Tweak the docs about __defaults__. (Cherry-pick of 17829) ([17838](https://github.com/pantsbuild/pants/pull/17838))

release_2.16.0.dev3

New Features

* Allow targets that implement `RunFieldSet` to be executed in the sandbox for side-effects ([17716](https://github.com/pantsbuild/pants/pull/17716))

* `python_requirements` target generator can parse PEP 621 pyproject.toml files ([16932](https://github.com/pantsbuild/pants/pull/16932))

User API Changes

* Bump default version of shfmt from 3.2.4 to 3.6.0 ([17777](https://github.com/pantsbuild/pants/pull/17777))

* An enum of Python export formats. ([17800](https://github.com/pantsbuild/pants/pull/17800))

* Add export-codegen goal to more backends ([17773](https://github.com/pantsbuild/pants/pull/17773))

* Adds `execution_dependencies` for `experimental_shell_command` ([17743](https://github.com/pantsbuild/pants/pull/17743))

Plugin API Changes

* Remove boilerplate for run and test plugins ([17774](https://github.com/pantsbuild/pants/pull/17774))

Bug fixes

* go: detect when `go.sum` needs additional entries filled in ([17811](https://github.com/pantsbuild/pants/pull/17811))

* go: pass module sources through to linker if `${SRCDIR}` is referenced ([17780](https://github.com/pantsbuild/pants/pull/17780))

* go: improve options passed to assembler invocations ([17796](https://github.com/pantsbuild/pants/pull/17796))

* Explicitly use "python" ijson backend ([17787](https://github.com/pantsbuild/pants/pull/17787))

* Do not clear the `pantsd` log while restarting ([17783](https://github.com/pantsbuild/pants/pull/17783))

* Restore support for :all: in `only_binary`/`no_binary`. ([17779](https://github.com/pantsbuild/pants/pull/17779))

* go: remove notion of separate `__obj__` directory ([17775](https://github.com/pantsbuild/pants/pull/17775))

* Visibility: empty selector should match no target. ([17763](https://github.com/pantsbuild/pants/pull/17763))

* [Visibility] `**/..` globs can match root level files ([17681](https://github.com/pantsbuild/pants/pull/17681))

* Visibility: fix rules path for generated targets. ([17760](https://github.com/pantsbuild/pants/pull/17760))

Documentation

* Documentation for the new visibility rules ([17632](https://github.com/pantsbuild/pants/pull/17632))

* Add Doctrine's eng blog post and example repo to resource hub. ([17810](https://github.com/pantsbuild/pants/pull/17810))

* Add Astranis to user list. ([17812](https://github.com/pantsbuild/pants/pull/17812))

* Add Doctrine to user list ([17793](https://github.com/pantsbuild/pants/pull/17793))

* Doc: update `Get` docstring for multiple inputs. ([17730](https://github.com/pantsbuild/pants/pull/17730))


release_2.16.0.dev2

New Features

* go: use target spec for coverage output directories plus support import path ([17734](https://github.com/pantsbuild/pants/pull/17734))

* go: add `assembler_flags` field for adding arbitrary extra assembler flags ([17731](https://github.com/pantsbuild/pants/pull/17731))

* Expose target field defaults in BUILD files. ([17649](https://github.com/pantsbuild/pants/pull/17649))

* Add a new "preamble" plugin ([17682](https://github.com/pantsbuild/pants/pull/17682))

* go: support code coverage over multiple packages during single test ([17701](https://github.com/pantsbuild/pants/pull/17701))

* go: add `linker_flags` field to `go_mod` and `go_binary` target types ([17697](https://github.com/pantsbuild/pants/pull/17697))

* go: add `compiler_flags` field for adding arbitrary extra compiler flags ([17683](https://github.com/pantsbuild/pants/pull/17683))

User API Changes

* Include transitive requirements missing for `python_distribution`. ([17594](https://github.com/pantsbuild/pants/pull/17594))

* Extend default module mapping for Python 3rd-party dependency inference: pysocks and atlassian-python-api ([17654](https://github.com/pantsbuild/pants/pull/17654))

Bug fixes

* Test DebugAdapter requests, and fix issues ([17678](https://github.com/pantsbuild/pants/pull/17678))

* chdir in `rule_runner.run_interactive_process` ([17722](https://github.com/pantsbuild/pants/pull/17722))

* More precise running workunit for processes executing remotely ([17719](https://github.com/pantsbuild/pants/pull/17719))

* Don't strip the input of a `DictOption` file config ([17705](https://github.com/pantsbuild/pants/pull/17705))

* Visibility rules: error if more than one declaration per BUILD file. ([17669](https://github.com/pantsbuild/pants/pull/17669))

* Allow JVM source to depend on relocated_files target ([17005](https://github.com/pantsbuild/pants/pull/17005))

* Fix bug in Go test result exit code interpretation. ([17661](https://github.com/pantsbuild/pants/pull/17661))

Performance

* Immutably hardlink "large" files in a sandbox ([17520](https://github.com/pantsbuild/pants/pull/17520))

* Run python sources with a VenvPex ([17700](https://github.com/pantsbuild/pants/pull/17700))

Documentation

* Doc fixes and updates: ([17708](https://github.com/pantsbuild/pants/pull/17708))

* docs: tidy up Writing plugins : rules-api directory files ([17710](https://github.com/pantsbuild/pants/pull/17710))

* Update docker docs to clarify dependency handling. ([17655](https://github.com/pantsbuild/pants/pull/17655))


release_2.15.0rc0

Bug fixes

* More precise running workunit for processes executing remotely (Cherry-pick of 17719) ([17725](https://github.com/pantsbuild/pants/pull/17725))

* Fix twine env vars propagation for `publish` goal. (Cherry-pick of 17650) ([17659](https://github.com/pantsbuild/pants/pull/17659))

* Allow for `run --debug-adapter` to match breakpoints when source is running in a sandbox (Cherry-pick of 17566) ([17584](https://github.com/pantsbuild/pants/pull/17584))

* Do not try to create `""` output directory in `CreateArchive` (Cherry-pick of 17538) ([17548](https://github.com/pantsbuild/pants/pull/17548))

Documentation

* Fix broken docs links to manual build instructions (Cherry-pick of 17608) ([17610](https://github.com/pantsbuild/pants/pull/17610))

* Update team pages for SJ and Dan! (Cherry-pick of 17534) ([17568](https://github.com/pantsbuild/pants/pull/17568))

* Add Shantanu Kumar to Contributors list (Cherry-pick of 17579) ([17587](https://github.com/pantsbuild/pants/pull/17587))

release_2.16.0.dev1

New Features

* go: address sanitizer support ([17651](https://github.com/pantsbuild/pants/pull/17651))

* go: add support for C/C++ memory sanitizer ([17644](https://github.com/pantsbuild/pants/pull/17644))

* shell: add `experimental_test_shell_command` for arbitrary shell-driven tests ([17640](https://github.com/pantsbuild/pants/pull/17640))

* support Go data race detector ([17510](https://github.com/pantsbuild/pants/pull/17510))

* Add `Field.none_is_valid_value` bool class var option. ([17577](https://github.com/pantsbuild/pants/pull/17577))

User API Changes

* Remove deprecated `run --cleanup` option. ([17647](https://github.com/pantsbuild/pants/pull/17647))

* Upgrade Pex to 2.1.116. ([17637](https://github.com/pantsbuild/pants/pull/17637))

Plugin API Changes

* Remove deprecated Platform.current. ([17646](https://github.com/pantsbuild/pants/pull/17646))

Bug fixes

* Fix twine env vars propagation for `publish` goal. ([17650](https://github.com/pantsbuild/pants/pull/17650))

* Support `source=None` for `docker_image` targets. ([17578](https://github.com/pantsbuild/pants/pull/17578))

* Specify local environment for python source analysis goal ([17603](https://github.com/pantsbuild/pants/pull/17603))

* go: allow use of `go_asm.h` assembly header in assembly files ([17611](https://github.com/pantsbuild/pants/pull/17611))

* Visibility rule glob tweaks for `*` and `**` ([17588](https://github.com/pantsbuild/pants/pull/17588))

Documentation

* Fix broken docs links to manual build instructions ([17608](https://github.com/pantsbuild/pants/pull/17608))

* Docs: improve docs on handling option values in cli ([17506](https://github.com/pantsbuild/pants/pull/17506))


release_2.16.0.dev0

New Features

* Add `environment=` to `experimental_shell_command`. ([17575](https://github.com/pantsbuild/pants/pull/17575))

* Add debug goals to python ([17057](https://github.com/pantsbuild/pants/pull/17057))

* Target visibility rules ([17401](https://github.com/pantsbuild/pants/pull/17401))

* Emit a `__run.sh` into InteractiveProcess sandboxes. ([17532](https://github.com/pantsbuild/pants/pull/17532))

* Support newer pip versions. ([17555](https://github.com/pantsbuild/pants/pull/17555))

* New dependency rules Plugin API ([17550](https://github.com/pantsbuild/pants/pull/17550))

* Export metadata about a packaged docker image ([17299](https://github.com/pantsbuild/pants/pull/17299))

* Don't require hardcoded name in `python_distribution.provides` ([17522](https://github.com/pantsbuild/pants/pull/17522))

* Add `per_platform` object ([17334](https://github.com/pantsbuild/pants/pull/17334))

* Process output capturing is symlink-aware ([17496](https://github.com/pantsbuild/pants/pull/17496))

* go: introduce `GoBuildOptions` and `cgo_enabled` field ([17475](https://github.com/pantsbuild/pants/pull/17475))

* Disambiguate Python module providers by level of ancestry. ([17489](https://github.com/pantsbuild/pants/pull/17489))

* go: support ".syso" prebuilt object files ([17479](https://github.com/pantsbuild/pants/pull/17479))

* Add Docker registries `use_local_alias` configuration option. ([17265](https://github.com/pantsbuild/pants/pull/17265))

* Proposal for supporting Jar shading rules ([17251](https://github.com/pantsbuild/pants/pull/17251))

* A --resolve flag, to specify the resolves to export. ([17416](https://github.com/pantsbuild/pants/pull/17416))

* Handle duplicate JAR entries in `deploy_jar` ([17419](https://github.com/pantsbuild/pants/pull/17419))

User API Changes

* Upgrade default version of golangci-lint to 1.50.1 ([17574](https://github.com/pantsbuild/pants/pull/17574))

* Deprecate the old export semantics. ([17465](https://github.com/pantsbuild/pants/pull/17465))

* Add `restartable` field to `python_sources` ([17400](https://github.com/pantsbuild/pants/pull/17400))

* Deprecate the ` Dependees` column name in the py-constraints summary. ([17399](https://github.com/pantsbuild/pants/pull/17399))

* Rename the dependees goal to dependents. ([17397](https://github.com/pantsbuild/pants/pull/17397))

* Rename --changed-dependees to --changed-dependents ([17395](https://github.com/pantsbuild/pants/pull/17395))

Bug fixes

* Allow for `run --debug-adapter` to match breakpoints when source is running in a sandbox ([17566](https://github.com/pantsbuild/pants/pull/17566))

* Created an `NpxToolBase` as an inheritable Subsystem for `nodejs` tools ([17567](https://github.com/pantsbuild/pants/pull/17567))

* Fix loading of `SymlinkNodes` from the `Store`. ([17549](https://github.com/pantsbuild/pants/pull/17549))

* Do not try to create `""` output directory in `CreateArchive` ([17538](https://github.com/pantsbuild/pants/pull/17538))

* Persist digests before emitting them in `fs_util` ([17525](https://github.com/pantsbuild/pants/pull/17525))

* Fix memoization of `CoarsenedTarget.closure` ([17516](https://github.com/pantsbuild/pants/pull/17516))

* Support parsing targets from additional paths not containing BUILD files. ([17451](https://github.com/pantsbuild/pants/pull/17451))

* Ensure lockfile target exists before injecting a dependency to it. ([17365](https://github.com/pantsbuild/pants/pull/17365))

* Ensure correct eq/hash semantics for PythonArtifact. ([17484](https://github.com/pantsbuild/pants/pull/17484))

* Isolate config seed values from the DEFAULT section. ([17474](https://github.com/pantsbuild/pants/pull/17474))

* Fix poorly understood stdout redirection issue. ([17471](https://github.com/pantsbuild/pants/pull/17471))

* Fix propagation of the remote-execution-append-only-caches path ([17469](https://github.com/pantsbuild/pants/pull/17469))

* Pyright should grab non-transitive dependencies and make them available in the sandbox ([17235](https://github.com/pantsbuild/pants/pull/17235))

* Plumb symlink support through the Pants engine ([16844](https://github.com/pantsbuild/pants/pull/16844))

* Flip the default for `pull` on `docker_image` to `False` ([17459](https://github.com/pantsbuild/pants/pull/17459))

* Merge pytest addopts ([16614](https://github.com/pantsbuild/pants/pull/16614))

* Fix dep inference from `shuint2_tests` targets. ([17417](https://github.com/pantsbuild/pants/pull/17417))

* Fix `EnvironmentName` used in `test` runs ([17412](https://github.com/pantsbuild/pants/pull/17412))

* Add the m1 homebrew bin dir to the system binary search path. ([17411](https://github.com/pantsbuild/pants/pull/17411))

* Restore debug hints for `test` execution ([17406](https://github.com/pantsbuild/pants/pull/17406))

Performance

* Skip loading of local cache data when possible ([17495](https://github.com/pantsbuild/pants/pull/17495))

* Symlink site-packages into `pylint` venvs when possible. ([17488](https://github.com/pantsbuild/pants/pull/17488))

* Filter coarsened targets to only those that are relevant in `pylint` runner rule ([17487](https://github.com/pantsbuild/pants/pull/17487))

Documentation

* correct docs: direnv can't save ulimit ([17561](https://github.com/pantsbuild/pants/pull/17561))

* Update team pages for SJ and Dan! ([17534](https://github.com/pantsbuild/pants/pull/17534))

* Fix line breaks in a docs page. ([17527](https://github.com/pantsbuild/pants/pull/17527))

* Clarify how `__defaults__` apply to target generators. ([17493](https://github.com/pantsbuild/pants/pull/17493))

* Fix typo in docs: debug-adaptor should be debug-adapter ([17452](https://github.com/pantsbuild/pants/pull/17452))

* Update `nuke_if_too_big` documentation ([17429](https://github.com/pantsbuild/pants/pull/17429))

* Fix version templating in `vcs_version` docs ([17423](https://github.com/pantsbuild/pants/pull/17423))

release_2.15.0a1

New Features

* A --resolve flag, to specify the resolves to export. (Cherry-pick of 17416) ([17461](https://github.com/pantsbuild/pants/pull/17461))

User API Changes

* Deprecate the old export semantics. (Cherry-pick of 17465) ([17466](https://github.com/pantsbuild/pants/pull/17466))

Bug fixes

* Fix memoization of `CoarsenedTarget.closure` (Cherry-pick of 17516) ([17518](https://github.com/pantsbuild/pants/pull/17518))

* Support parsing targets from additional paths not containing BUILD files. (Cherry-pick of 17451) ([17513](https://github.com/pantsbuild/pants/pull/17513))

* Ensure lockfile target exists before injecting a dependency to it. (Cherry-pick of 17365) ([17505](https://github.com/pantsbuild/pants/pull/17505))

* Ensure correct eq/hash semantics for PythonArtifact. (Cherry-pick of 17484) ([17492](https://github.com/pantsbuild/pants/pull/17492))

* Flip the default for `pull` on `docker_image` to `False` (Cherry-pick of 17459) ([17460](https://github.com/pantsbuild/pants/pull/17460))

* Isolate config seed values from the DEFAULT section. (Cherry-pick of 17474) ([17485](https://github.com/pantsbuild/pants/pull/17485))

* Fix poorly understood stdout redirection issue. (Cherry-pick of 17471) ([17473](https://github.com/pantsbuild/pants/pull/17473))

* Fix propagation of the remote-execution-append-only-caches path (Cherry-pick of 17469) ([17472](https://github.com/pantsbuild/pants/pull/17472))

* Fix dep inference from `shuint2_tests` targets. (Cherry-pick of 17417) ([17422](https://github.com/pantsbuild/pants/pull/17422))

* Fix `EnvironmentName` used in `test` runs (Cherry-pick of 17412) ([17415](https://github.com/pantsbuild/pants/pull/17415))

* Restore debug hints for `test` execution (Cherry-pick of 17406) ([17407](https://github.com/pantsbuild/pants/pull/17407))

Performance

* Skip loading of local cache data when possible (Cherry-pick of 17495) ([17524](https://github.com/pantsbuild/pants/pull/17524))

* Symlink site-packages into `pylint` venvs when possible. (Cherry-pick of 17488) ([17491](https://github.com/pantsbuild/pants/pull/17491))

* Filter coarsened targets to only those that are relevant in `pylint` runner rule (Cherry-pick of 17487) ([17490](https://github.com/pantsbuild/pants/pull/17490))

Documentation

* Fix line breaks in a docs page. (Cherry-pick of 17527) ([17528](https://github.com/pantsbuild/pants/pull/17528))

* Clarify how `__defaults__` apply to target generators. (Cherry-pick of 17493) ([17499](https://github.com/pantsbuild/pants/pull/17499))

* Fix version templating in `vcs_version` docs (Cherry-pick of 17423) ([17425](https://github.com/pantsbuild/pants/pull/17425))

release_2.15.0a0

New Features

* Add support for batched `pytest` execution ([17385](https://github.com/pantsbuild/pants/pull/17385))

* Add a `batch_size` parameter to the `test` subsystem. ([17361](https://github.com/pantsbuild/pants/pull/17361))

* Replace `skip` placeholders with real `SkipOption`s in test subsystems. ([17360](https://github.com/pantsbuild/pants/pull/17360))

Plugin API Changes

* Refactor optional typing in generic partitioning utils. ([17371](https://github.com/pantsbuild/pants/pull/17371))

* Refactor plumbing for `test` goal to support batched tests. ([17134](https://github.com/pantsbuild/pants/pull/17134))

* Rework partitioning types for more flexibility. ([17288](https://github.com/pantsbuild/pants/pull/17288))

Bug fixes

* Ensure PATH to shims are absolute for the protobuf buf linter. ([17367](https://github.com/pantsbuild/pants/pull/17367))

* Include process execution strategy in Process cache key ([17340](https://github.com/pantsbuild/pants/pull/17340))

* Fix use of `--shard` with `--debug`/`--debug-adapter` in `test`. ([17321](https://github.com/pantsbuild/pants/pull/17321))

* go: properly handle xtest packages when building ([17307](https://github.com/pantsbuild/pants/pull/17307))

* Retry the streaming portion of downloads, as well as the setup. ([17298](https://github.com/pantsbuild/pants/pull/17298))

Performance

* Implement cancellation of remote processes ([17341](https://github.com/pantsbuild/pants/pull/17341))

Documentation

* Document Synthetic Targets API.([17330](https://github.com/pantsbuild/pants/pull/17330))

* Initial documentation for Environments ([17096](https://github.com/pantsbuild/pants/pull/17096))

* Add 2.14 blog post link to changelog page. ([17381](https://github.com/pantsbuild/pants/pull/17381))

* Document the existence of the init-pants action. ([17378](https://github.com/pantsbuild/pants/pull/17378))

* Add a section about `test` to plugin API guide. ([17362](https://github.com/pantsbuild/pants/pull/17362))

* Revise the error message associated with OOM-killed events ([17373](https://github.com/pantsbuild/pants/pull/17373))

* Fix linebreak issues in the targets docs page. ([17364](https://github.com/pantsbuild/pants/pull/17364))

* Fix a nit in the Getting Help docs. ([17295](https://github.com/pantsbuild/pants/pull/17295))

release_2.13.1

The second stable release in the 2.13.x series, with no changes since 2.13.1rc2.

release_2.14.0

The first stable release of the `2.14.x` series, with no changes since the previous release candidate!

release_2.14.0rc5

Bug fixes

* Retry the streaming portion of downloads, as well as the setup. (Cherry-pick of 17298) ([17302](https://github.com/pantsbuild/pants/pull/17302))

* Fix incomplete cherry-pick of 17177. ([17312](https://github.com/pantsbuild/pants/pull/17312))

Documentation

* Fix a nit in the Getting Help docs. (Cherry-pick of 17295) ([17296](https://github.com/pantsbuild/pants/pull/17296))

release_2.15.0.dev5

New Features

* Synthesize targets for Python lockfiles ([17097](https://github.com/pantsbuild/pants/pull/17097))

* Refactor `shunit2` into a proper subsystem. ([17257](https://github.com/pantsbuild/pants/pull/17257))

* Add lcov support ([17256](https://github.com/pantsbuild/pants/pull/17256))

* New API to create synthetic targets. ([16998](https://github.com/pantsbuild/pants/pull/16998))

* Support custom post renderers in Helm deployments ([17215](https://github.com/pantsbuild/pants/pull/17215))

* Add a `fix` goal ([17202](https://github.com/pantsbuild/pants/pull/17202))

* Add basic support for pyright typechecking ([17163](https://github.com/pantsbuild/pants/pull/17163))

User API Changes

* Upgrade Pex to 2.1.111. ([17267](https://github.com/pantsbuild/pants/pull/17267))

* Upgrade the Pants-provided `coverage` to version 6.5.X ([17254](https://github.com/pantsbuild/pants/pull/17254))

* Upgrade default Flake8 version to 5.0 ([17226](https://github.com/pantsbuild/pants/pull/17226))

* Add Snowflake connector to module mapping ([17165](https://github.com/pantsbuild/pants/pull/17165))

* Always include relevant params in workunit descriptions, and include descriptions in traces by default ([17119](https://github.com/pantsbuild/pants/pull/17119))

Plugin API Changes

* Rename `SubPartition` to `Batch` in partitioning types. ([17263](https://github.com/pantsbuild/pants/pull/17263))

* Make fmt/lint result types less boilerplate-y ([17192](https://github.com/pantsbuild/pants/pull/17192))

* Begin migration to explicitly scoped environments ([17155](https://github.com/pantsbuild/pants/pull/17155))

Bug fixes

* Fix remote execution not working with remote caching and eager fetch mode ([17272](https://github.com/pantsbuild/pants/pull/17272))

* Remote cache reads are resilient to remote execution writing to the cache ([17195](https://github.com/pantsbuild/pants/pull/17195))

* Adjust `ensure_remote_has_recursive` to succeed if content only exists remotely ([17204](https://github.com/pantsbuild/pants/pull/17204))

* Declaring Javascript, Prettier, and Pyright backends/plugins in BUILD ([17190](https://github.com/pantsbuild/pants/pull/17190))

* Set PEX_ROOT for export post-processing command. ([17177](https://github.com/pantsbuild/pants/pull/17177))

* Fix macros depending on macros from other files ([17183](https://github.com/pantsbuild/pants/pull/17183))

* go/gofmt: filter out non-go files from file list ([17171](https://github.com/pantsbuild/pants/pull/17171))

* Fix dep inference with empty lines in multiline imports. ([17284](https://github.com/pantsbuild/pants/pull/17284))

Documentation

* Change fmt/lint/check docs with latest changes ([17133](https://github.com/pantsbuild/pants/pull/17133))

* Add CI talk to resources ([17238](https://github.com/pantsbuild/pants/pull/17238))

release_2.14.0rc4

Bug fixes

* Fix remote execution not working with remote caching and eager fetch mode (Cherry-pick of 17272) ([17275](https://github.com/pantsbuild/pants/pull/17275))

* Fix macros depending on macros from other files (Cherry-pick of 17183) ([17245](https://github.com/pantsbuild/pants/pull/17245))

* Adjust `ensure_remote_has_recursive` to succeed if content only exists remotely (Cherry-pick of 17204) ([17244](https://github.com/pantsbuild/pants/pull/17244))

Performance

* Set PEX_ROOT for export post-processing command. (cherry-pick of 17177) ([17200](https://github.com/pantsbuild/pants/pull/17200))

Documentation

* Add CI talk to resources (Cherry-pick of 17238) ([17241](https://github.com/pantsbuild/pants/pull/17241))

release_2.13.1rc2

Bug fixes

* Fix remote execution not working with remote caching and eager fetch mode (Cherry-pick of 17272) ([17274](https://github.com/pantsbuild/pants/pull/17274))

* Adjust `ensure_remote_has_recursive` to succeed if content only exists remotely (Cherry-pick of 17204) ([17243](https://github.com/pantsbuild/pants/pull/17243))

* fixup name of opt-in flag in error message ([17038](https://github.com/pantsbuild/pants/pull/17038))

Documentation

* Add CI talk to resources (Cherry-pick of 17238) ([17242](https://github.com/pantsbuild/pants/pull/17242))

release_2.15.0.dev4

New Features

* Optionally export venvs via symlink into the pex_root. ([17130](https://github.com/pantsbuild/pants/pull/17130))

* go: add cgo support for tailor ([17087](https://github.com/pantsbuild/pants/pull/17087))

User API Changes

* Upgrade Pex to 2.1.108. ([17112](https://github.com/pantsbuild/pants/pull/17112))

Plugin API Changes

* Switch `LintRequest.name` to `.tool_subsystem` ([17103](https://github.com/pantsbuild/pants/pull/17103))

* Rename/Refactor `style_request` to better capture intent. ([17084](https://github.com/pantsbuild/pants/pull/17084))

Bug fixes

* Move pyoxidized pants binary out of the main source tree ([16703](https://github.com/pantsbuild/pants/pull/16703))

Documentation

* Generate help info about target_field_name to the docsite. ([17138](https://github.com/pantsbuild/pants/pull/17138))

* Add Aiven to user list. ([17131](https://github.com/pantsbuild/pants/pull/17131))

* Fix `bsp-groups.toml` example in documentation ([17125](https://github.com/pantsbuild/pants/pull/17125))

* Update maintainer job description ([17022](https://github.com/pantsbuild/pants/pull/17022))

release_2.14.0rc3

User API Changes

* Upgrade Pex to 2.1.108. (Cherry-pick of 17112) ([17120](https://github.com/pantsbuild/pants/pull/17120))

* Upgrade Pex to 2.1.107. (Cherry-pick of 17081) ([17113](https://github.com/pantsbuild/pants/pull/17113))

Bug fixes

* Exit normally from K8S parser with unsupported manifests (Cherry-pick of 17037) ([17143](https://github.com/pantsbuild/pants/pull/17143))

* Fix dep inference with empty lines in multiline imports. (Cherry-pick of 17284) ([17285](https://github.com/pantsbuild/pants/pull/17285))

Documentation

* Fix spurious linebreaks in the CI docs page. (Cherry-pick of 17154) ([17158](https://github.com/pantsbuild/pants/pull/17158))

* Add Marcelo to team page, move Josh Reed to Maintainer (Cherry-pick of 16826) ([17152](https://github.com/pantsbuild/pants/pull/17152))

* Add Doron Somech's proudest contribution (Cherry-pick of 17029) ([17150](https://github.com/pantsbuild/pants/pull/17150))

* Fix Helm K8S parser help message (Cherry-pick of 17091) ([17145](https://github.com/pantsbuild/pants/pull/17145))

* Fix `bsp-groups.toml` example in documentation (Cherry-pick of 17125) ([17148](https://github.com/pantsbuild/pants/pull/17148))

* Update maintainer job description (Cherry-pick of 17022) ([17111](https://github.com/pantsbuild/pants/pull/17111))

* Update `pytest-xdist` docs. (Cherry-pick of 17071) ([17072](https://github.com/pantsbuild/pants/pull/17072))

release_2.13.1rc1

User API Changes

* Upgrade Pex to 2.1.108. (Cherry-pick of 17112) ([17123](https://github.com/pantsbuild/pants/pull/17123))

* Upgrade Pex to 2.1.107. (Cherry-pick of 17081) ([17121](https://github.com/pantsbuild/pants/pull/17121))

* Upgrade Pex to 2.1.103. (Cherry-pick of 16426) ([17114](https://github.com/pantsbuild/pants/pull/17114))

Documentation

* Fix spurious linebreaks in the CI docs page. (Cherry-pick of 17154) ([17156](https://github.com/pantsbuild/pants/pull/17156))

* Add Marcelo to team page, move Josh Reed to Maintainer (Cherry-pick of 16826) ([17151](https://github.com/pantsbuild/pants/pull/17151))

* Add Doron Somech's proudest contribution (Cherry-pick of 17029) ([17149](https://github.com/pantsbuild/pants/pull/17149))

* Fix `bsp-groups.toml` example in documentation (Cherry-pick of 17125) ([17147](https://github.com/pantsbuild/pants/pull/17147))

* Update maintainer job description (Cherry-pick of 17022) ([17110](https://github.com/pantsbuild/pants/pull/17110))

* Fix the [python-bootstrap].search_path option name in the docs. (Cherry-pick of 17063) ([17066](https://github.com/pantsbuild/pants/pull/17066))

release_2.15.0.dev3

New Features

* Add `venv_site_packages_copies` field to `pex_binary` ([17046](https://github.com/pantsbuild/pants/pull/17046))

* Add golangci-lint to go backend ([16994](https://github.com/pantsbuild/pants/pull/16994))

* go: add `go-generate` goal to run `go generate` on a package ([16909](https://github.com/pantsbuild/pants/pull/16909))

* Support Java codegen for the OpenAPI backend ([16862](https://github.com/pantsbuild/pants/pull/16862))

* go: render coverage reports as HTML ([16995](https://github.com/pantsbuild/pants/pull/16995))

* Environment-aware subsystems ([16965](https://github.com/pantsbuild/pants/pull/16965))

* Environment sensitive options ([16840](https://github.com/pantsbuild/pants/pull/16840))

* Add retries to NetDownload intrinsic. ([16798](https://github.com/pantsbuild/pants/pull/16798))

* go: add basic support for cgo ([16413](https://github.com/pantsbuild/pants/pull/16413))

* Add support for add-trailing-comma tool ([16776](https://github.com/pantsbuild/pants/pull/16776))

User API Changes

* Upgrade Pex to 2.1.107. ([17081](https://github.com/pantsbuild/pants/pull/17081))

* Restore the deprecated `filter` goal indefinitely ([17027](https://github.com/pantsbuild/pants/pull/17027))

Plugin API Changes

* Improve usability of the `--engine-visualize-to` option ([17080](https://github.com/pantsbuild/pants/pull/17080))

* Change `fmt` plugin schema to allow for targetless formatters ([16980](https://github.com/pantsbuild/pants/pull/16980))

* Renames `SubsystemRule()` to `Subsystem.rules()` ([16954](https://github.com/pantsbuild/pants/pull/16954))

* Introduce new schema for lint plugins ([16735](https://github.com/pantsbuild/pants/pull/16735))

* `Environment`, `EnvironmentRequest`, and `CompleteEnvironment` now include `Vars` in the name ([16851](https://github.com/pantsbuild/pants/pull/16851))

* `MockGet` expects `input_types` kwarg, not `input_type` ([16839](https://github.com/pantsbuild/pants/pull/16839))

Bug fixes

* Fix dirtying of uncacheable nodes ([17079](https://github.com/pantsbuild/pants/pull/17079))

* Make interpreter path expansion cache-correct ([17051](https://github.com/pantsbuild/pants/pull/17051))

* Add python 3.10 to acceptable GCF runtimes ([17028](https://github.com/pantsbuild/pants/pull/17028))

* Don't cache VCS version outside the current pants session. ([17017](https://github.com/pantsbuild/pants/pull/17017))

* Fix Pantsd not properly invalidating when `CPPFLAGS` and `LDFLAGS` change ([17009](https://github.com/pantsbuild/pants/pull/17009))

* Add `parametrize()` support for `__defaults__`. ([16977](https://github.com/pantsbuild/pants/pull/16977))

* go: prepend $GOROOT/bin to PATH for tests ([16993](https://github.com/pantsbuild/pants/pull/16993))

* Fix for hang with redirected stdio. ([16970](https://github.com/pantsbuild/pants/pull/16970))

* Fix invalid field error message for parametrized fields. ([16911](https://github.com/pantsbuild/pants/pull/16911))

* Fix venv re-population race. ([16931](https://github.com/pantsbuild/pants/pull/16931))

* `wait` for killed nailgun processes. ([16924](https://github.com/pantsbuild/pants/pull/16924))

* remove override of register_plugin_field ([16919](https://github.com/pantsbuild/pants/pull/16919))

* Only request source roots for PEP-517 deps that belong on the syspath ([16903](https://github.com/pantsbuild/pants/pull/16903))

* Upgrade `javaparser`, and use a permissive language level to support parsing more code ([16896](https://github.com/pantsbuild/pants/pull/16896))

* docker: upgrade bollard crate for bug fix ([16850](https://github.com/pantsbuild/pants/pull/16850))

* Preserve stdio when a local process times out. ([16841](https://github.com/pantsbuild/pants/pull/16841))

Performance

* Add an optional speculation delay when using a remote cache ([16922](https://github.com/pantsbuild/pants/pull/16922))

* Only use remote cache when cache scope is Always or Successful ([16920](https://github.com/pantsbuild/pants/pull/16920))

Documentation

* Fix Helm K8S parser help message ([17091](https://github.com/pantsbuild/pants/pull/17091))

* Update `pytest-xdist` docs. ([17071](https://github.com/pantsbuild/pants/pull/17071))

* Fix the [python-bootstrap].search_path option name in the docs. ([17063](https://github.com/pantsbuild/pants/pull/17063))

* Add Doron Somech's proudest contribution ([17029](https://github.com/pantsbuild/pants/pull/17029))

* improve remote cache logging for hit or miss ([16975](https://github.com/pantsbuild/pants/pull/16975))

* Remove bad linebreaks from python-run-goal page. ([16976](https://github.com/pantsbuild/pants/pull/16976))

* Update changelog on docsite with 2.13, 2.14 links ([16918](https://github.com/pantsbuild/pants/pull/16918))

* Add Marcelo to team page, move Josh Reed to Maintainer ([16826](https://github.com/pantsbuild/pants/pull/16826))

* Don't mention a specific version in the manual install instructions. ([16888](https://github.com/pantsbuild/pants/pull/16888))

release_2.14.0rc2

User API Changes

* Restore the deprecated `filter` goal indefinitely (Cherry-pick of 17027) ([17052](https://github.com/pantsbuild/pants/pull/17052))

Bug fixes

* Add python 3.10 to acceptable GCF runtimes (Cherry-pick of 17028) ([17053](https://github.com/pantsbuild/pants/pull/17053))

* Fix JVM resources jar file to be deterministic by default (Cherry-pick of 16950) ([17033](https://github.com/pantsbuild/pants/pull/17033))

* Don't cache VCS version outside the current pants session. (Cherry-pick of 17017) ([17021](https://github.com/pantsbuild/pants/pull/17021))

* Fix invalid field error message for parametrized fields. (Cherry-pick of 16911) ([17010](https://github.com/pantsbuild/pants/pull/17010))

* Add `parametrize()` support for `__defaults__`. (Cherry-pick of 16977) ([17008](https://github.com/pantsbuild/pants/pull/17008))

* go: prepend $GOROOT/bin to PATH for tests (Cherry pick of 16993) ([16997](https://github.com/pantsbuild/pants/pull/16997))

* Fix for hang with redirected stdio. (Cherry-pick of 16970) ([16973](https://github.com/pantsbuild/pants/pull/16973))

* `wait` for killed nailgun processes. (Cherry-pick of 16924) ([16939](https://github.com/pantsbuild/pants/pull/16939))

* Fix venv re-population race. (Cherry-pick of 16931) ([16935](https://github.com/pantsbuild/pants/pull/16935))

* remove override of register_plugin_field (Cherry pick of 16919) ([16923](https://github.com/pantsbuild/pants/pull/16923))

* Only request source roots for PEP-517 deps that belong on the syspath (cherrypick of 16903) ([16917](https://github.com/pantsbuild/pants/pull/16917))

Performance

* Add an optional speculation delay when using a remote cache (Cherry-pick of 16922) ([16956](https://github.com/pantsbuild/pants/pull/16956))

Documentation

* Improve remote cache logging for hit or miss (Cherry-pick of 16975) ([16986](https://github.com/pantsbuild/pants/pull/16986))

* Remove bad linebreaks from python-run-goal page. (Cherry-pick of 16976) ([16982](https://github.com/pantsbuild/pants/pull/16982))

* Update changelog on docsite with 2.13, 2.14 links (Cherry-pick of 16918) ([16958](https://github.com/pantsbuild/pants/pull/16958))

release_2.13.1rc0

New Features

* Add retries to NetDownload intrinsic. (Cherry-pick of 16798) ([16884](https://github.com/pantsbuild/pants/pull/16884))

Bug fixes

* Add python 3.10 to acceptable GCF runtimes (Cherry-pick of 17028) ([17054](https://github.com/pantsbuild/pants/pull/17054))

* Fix JVM resources jar file to be deterministic by default (Cherry-pick of 16950) ([17032](https://github.com/pantsbuild/pants/pull/17032))

* Don't cache VCS version outside the current pants session. (Cherry-pick of 17017) ([17020](https://github.com/pantsbuild/pants/pull/17020))

* Fix for hang with redirected stdio. (Cherry-pick of 16970) ([16972](https://github.com/pantsbuild/pants/pull/16972))

* `wait` for killed nailgun processes. (Cherry-pick of 16924) ([16938](https://github.com/pantsbuild/pants/pull/16938))

* Fix venv re-population race. (Cherry-pick of 16931) ([16936](https://github.com/pantsbuild/pants/pull/16936))

* Preserve stdio when a local process times out. (Cherry-pick of 16841) ([16885](https://github.com/pantsbuild/pants/pull/16885))

Documentation

* Add Thales Menato's proudest contribution (Cherry-pick of 17023) ([17024](https://github.com/pantsbuild/pants/pull/17024))

* Fix invalid field error message for parametrized fields. (Cherry-pick of 16911) ([17006](https://github.com/pantsbuild/pants/pull/17006))

* Remove bad linebreaks from python-run-goal page. (Cherry-pick of 16976) ([16981](https://github.com/pantsbuild/pants/pull/16981))

* Update changelog on docsite with 2.13 links (cherrypick of 16918) ([16957](https://github.com/pantsbuild/pants/pull/16957))

* Add IBM, Coinbase, and Astranis case studies (Cherry-pick of 16805) ([16813](https://github.com/pantsbuild/pants/pull/16813))

* fix broken shortlinks that invoked "docs:" instead of "doc:" (Cherry-pick of 16804) ([16810](https://github.com/pantsbuild/pants/pull/16810))

release_2.14.0rc1

New Features

* Add retries to NetDownload intrinsic. (Cherry-pick of 16798) ([16879](https://github.com/pantsbuild/pants/pull/16879))

Bug fixes

* Upgrade `javaparser`, and use a permissive language level to support parsing more code (Cherry-pick of 16896) ([16904](https://github.com/pantsbuild/pants/pull/16904))

* Preserve stdio when a local process times out. (Cherry-pick of 16841) ([16880](https://github.com/pantsbuild/pants/pull/16880))

* go: analyze imports paths by module to enable multiple `go_mod` targets (Cherry pick of 16386) ([16799](https://github.com/pantsbuild/pants/pull/16799))

Documentation

* Don't mention a specific version in the manual install instructions (cherrypick of 16888) ([16889](https://github.com/pantsbuild/pants/pull/16889))

* Add IBM, Coinbase, and Astranis case studies (Cherry-pick of 16805) ([16814](https://github.com/pantsbuild/pants/pull/16814))

* Fix broken shortlinks that invoked "docs:" instead of "doc:" (Cherry-pick of 16804) ([16811](https://github.com/pantsbuild/pants/pull/16811))

release_2.15.0.dev2

New Features

* Force colors from mypy always, strip in pants when --no-colors ([16586](https://github.com/pantsbuild/pants/pull/16586))

* Add OpenAPI backend ([16199](https://github.com/pantsbuild/pants/pull/16199))

* go: analyze imports paths by module to enable multiple `go_mod` targets ([16386](https://github.com/pantsbuild/pants/pull/16386))

Bug fixes

* docker: capture output once after container exits ([16783](https://github.com/pantsbuild/pants/pull/16783))

* docker: lazily initialize docker connection ([16779](https://github.com/pantsbuild/pants/pull/16779))

Documentation

* Add IBM, Coinbase, and Astranis case studies ([16805](https://github.com/pantsbuild/pants/pull/16805))

* Fix broken shortlinks that invoked "docs:" instead of "doc:" ([16804](https://github.com/pantsbuild/pants/pull/16804))

* Add Brand24 to user list. ([16793](https://github.com/pantsbuild/pants/pull/16793))

release_2.14.0rc0

New Features

* Force colors from mypy always, strip in pants when `--no-colors` (Cherry-pick of 16586) ([16808](https://github.com/pantsbuild/pants/pull/16808))

release_2.13.0

The first stable release of 2.13.0, with no changes since 2.13.0rc3.

See our [blog post](https://blog.pantsbuild.org/introducing-pants-2-13/) for a summary of what's new in Pants 2.13.

release_2.15.0.dev1

New Features

* go: support placing resource files in packages (and not just embedding) ([16688](https://github.com/pantsbuild/pants/pull/16688))

* "naive" docker command runner ([16670](https://github.com/pantsbuild/pants/pull/16670))

* Adds `binary_name` field to PyOxidizer support ([16696](https://github.com/pantsbuild/pants/pull/16696))

Plugin API Changes

* The environment to use becomes a context-specific parameter ([16721](https://github.com/pantsbuild/pants/pull/16721))

* Deprecate `Platform.current` in favor of requesting an injected `Platform` ([16765](https://github.com/pantsbuild/pants/pull/16765))

* Allow `union`s to declare additional types which are provided to implementers ([16717](https://github.com/pantsbuild/pants/pull/16717))

* Deprecate remote_auth_plugin option - plugins can use entry points now. ([16691](https://github.com/pantsbuild/pants/pull/16691))

Bug fixes

* Add support for inferring dependencies used in type context bounds ([16709](https://github.com/pantsbuild/pants/pull/16709))

* Resolve properly provided symbol names for types defined at top level package ([16690](https://github.com/pantsbuild/pants/pull/16690))

* Include type bound constraints in consumed symbols during Scala inference ([16692](https://github.com/pantsbuild/pants/pull/16692))

* Make experimental_shell_command deterministic ([16675](https://github.com/pantsbuild/pants/pull/16675))

Documentation

* List commercial Pants services that optionally supplement community's extensive free tier ([16706](https://github.com/pantsbuild/pants/pull/16706))

* In python resource example, use importlib.resources to read assets ([16695](https://github.com/pantsbuild/pants/pull/16695))

* Welcome community members to consider joining team ([16681](https://github.com/pantsbuild/pants/pull/16681))

release_2.14.0a1

New Features

* Add suport for string interpolation in Helm deployments (Cherry-pick of 16611) ([16723](https://github.com/pantsbuild/pants/pull/16723))

* Support Docker custom tags via plugin hook (Cherry-pick of 16662) ([16719](https://github.com/pantsbuild/pants/pull/16719))

* Support Pex's `--path-mapping` with lockfiles for better local requirement support (Cherry-pick of 16584) ([16625](https://github.com/pantsbuild/pants/pull/16625))

Bug fixes

* Add support for inferring dependencies used in type context bounds (Cherry-pick of 16709) ([16725](https://github.com/pantsbuild/pants/pull/16725))

* Resolve properly provided symbol names for types defined at top level package (Cherry-pick of 16690) ([16718](https://github.com/pantsbuild/pants/pull/16718))

* Make experimental_shell_command deterministic (Cherry-pick of 16675) ([16700](https://github.com/pantsbuild/pants/pull/16700))

* Wire BUILD file formatters in `lint` (Cherry-pick of 16666) ([16694](https://github.com/pantsbuild/pants/pull/16694))

* Include type bound constraints in consumed symbols during Scala inference (Cherry-pick of 16692) ([16698](https://github.com/pantsbuild/pants/pull/16698))

* Make `FilespecMatcher` case-sensitive (Cherry-pick of 16673) ([16677](https://github.com/pantsbuild/pants/pull/16677))

* Ensure the sandbox distdir exists when creating dists via PEP517 (Cherrypick of 16647) ([16659](https://github.com/pantsbuild/pants/pull/16659))

Performance

* Implement a batched local lookup for missing fingerprints. (Cherry-pick of 16627) ([16701](https://github.com/pantsbuild/pants/pull/16701))

* Optimize `CreateDigest` implementation. (Cherry-pick of 16617) ([16648](https://github.com/pantsbuild/pants/pull/16648))

Documentation

* List commercial Pants services that optionally supplement community's extensive free tier (Cherry-pick of 16706) ([16742](https://github.com/pantsbuild/pants/pull/16742))

* Welcome community members to consider joining team (Cherry-pick of 16681) ([16745](https://github.com/pantsbuild/pants/pull/16745))

* Clarify wording for `--skip` options (Cherry-pick of 16622) ([16702](https://github.com/pantsbuild/pants/pull/16702))

* Fix example BSP groups file. (Cherry-pick of 16649) ([16653](https://github.com/pantsbuild/pants/pull/16653))

* Fix `./pants help` docs on command line specs (Cherry-pick of 16616) ([16624](https://github.com/pantsbuild/pants/pull/16624))

* Create page of Pants team members and proudest contribs (Cherry-pick of 16676) ([16730](https://github.com/pantsbuild/pants/pull/16730))

release_2.12.1

The second stable release of 2.12, with only updates to the docs website.

Documentation

* Create page of Pants team members and proudest contribs (Cherry-pick of 16676) ([16678](https://github.com/pantsbuild/pants/pull/16678))

* Fix example BSP groups file. (Cherry-pick of 16649) ([16651](https://github.com/pantsbuild/pants/pull/16651))

release_2.13.0rc3

Bug fixes

* Make experimental_shell_command deterministic (Cherry-pick of 16675) ([16699](https://github.com/pantsbuild/pants/pull/16699))

* Ensure the sandbox distdir exists when creating dists via PEP517 (Cherrypick of 16647) ([16660](https://github.com/pantsbuild/pants/pull/16660))

Documentation

* Create page of Pants team members and proudest contribs (Cherry-pick of 16676) ([16729](https://github.com/pantsbuild/pants/pull/16729))

* Fix example BSP groups file. (Cherry-pick of 16649) ([16652](https://github.com/pantsbuild/pants/pull/16652))

release_2.15.0.dev0

New Features

* Add support for string interpolation in Helm deployments ([16611](https://github.com/pantsbuild/pants/pull/16611))

* Add --squash and --pull options support for docker build ([16607](https://github.com/pantsbuild/pants/pull/16607))

* Support Pex's `--path-mapping` with lockfiles for better local requirement support ([16584](https://github.com/pantsbuild/pants/pull/16584))

* [experimental] adds `pants_oxidized_experimental` target, creating a standalone binary distribution for Pants ([16484](https://github.com/pantsbuild/pants/pull/16484))

User API Changes

* Remove deprecated `[python].only_binary`, `[python].no_binary`, and `[python].tailor_ignore_solitary_init_files` ([16638](https://github.com/pantsbuild/pants/pull/16638))

* Remove deprecated `[python].lockfile_generator` and deprecate `poetry` subsystem (used previously for lockfile generation) ([16633](https://github.com/pantsbuild/pants/pull/16633))

* Remove deprecated `use_deprecated_directory_cli_args_semantics` option ([16630](https://github.com/pantsbuild/pants/pull/16630))

Plugin API Changes

* Add support for passing multiple input params to a `rule` `Get` ([16668](https://github.com/pantsbuild/pants/pull/16668))

* Remove deprecated `matches_filespec` and `get_git` functions ([16629](https://github.com/pantsbuild/pants/pull/16629))

* Remove unnecessary type parameter from `Get` ([16634](https://github.com/pantsbuild/pants/pull/16634))

Bug fixes

* Fix dirtying of uncacheable nodes ([17079](https://github.com/pantsbuild/pants/pull/17079))

* Make `FilespecMatcher` case-sensitive ([16673](https://github.com/pantsbuild/pants/pull/16673))

* Ensure the sandbox distdir exists when creating dists via PEP517. ([16647](https://github.com/pantsbuild/pants/pull/16647))

Performance

* Implement a batched local lookup for missing fingerprints. ([16627](https://github.com/pantsbuild/pants/pull/16627))

* Optimize `CreateDigest` implementation. ([16617](https://github.com/pantsbuild/pants/pull/16617))

Documentation

* Create page of Pants team members and proudest contribs ([16676](https://github.com/pantsbuild/pants/pull/16676))

* Fix example BSP groups file. ([16649](https://github.com/pantsbuild/pants/pull/16649))

* Clarify wording for `--skip` options ([16622](https://github.com/pantsbuild/pants/pull/16622))

* Fix `./pants help` docs on command line specs ([16616](https://github.com/pantsbuild/pants/pull/16616))

* Mention team meetings as a Contributor permission ([16543](https://github.com/pantsbuild/pants/pull/16543))

release_2.13.0rc2

User API Changes

* Bump default version of `setuptools` to 63.4 ([16618](https://github.com/pantsbuild/pants/pull/16618))

Bug fixes

* Have `run` run `__main__.py` for non-zipapp PEXs (Cherry-pick of 16568) ([16635](https://github.com/pantsbuild/pants/pull/16635))

* Add `grpcio` to default Python module mapping ([16604](https://github.com/pantsbuild/pants/pull/16604))

* Record `RemoteStoreBlobBytesUploaded` for all upload strategies, rather than only for large blobs. (Cherry-pick of 16545) ([16555](https://github.com/pantsbuild/pants/pull/16555))

Performance

* Improve performance of `Owners` rule (Cherry-pick of 16563) ([16597](https://github.com/pantsbuild/pants/pull/16597))

* Fix performance for generating lockfiles for `pytest` and `setuptools` (Cherry-pick of 16591) ([16596](https://github.com/pantsbuild/pants/pull/16596))

Documentation

* Fix `./pants help` docs on command line specs (Cherry-pick of 16616) ([16623](https://github.com/pantsbuild/pants/pull/16623))

* Use Markdown h3 for ToC support (Cherry-pick of 15964) ([16558](https://github.com/pantsbuild/pants/pull/16558))

* Fix broken link to community page (Cherry-pick of 16468) ([16557](https://github.com/pantsbuild/pants/pull/16557))

release_2.12.1rc4

User API Changes

* Bump default version of `setuptools` to 63.4 ([16619](https://github.com/pantsbuild/pants/pull/16619))

Bug fixes

* Add `grpcio` to default Python module mapping ([16605](https://github.com/pantsbuild/pants/pull/16605))

* Fix `IndexError` when codegen is missing expected `python_requirement` targets ([16590](https://github.com/pantsbuild/pants/pull/16590))

Documentation

* Fix broken link to community page (Cherry-pick of 16468) ([16556](https://github.com/pantsbuild/pants/pull/16556))

release_2.14.0a0

New Features

* Add Plugin hook for adding custom additional Docker image tags. ([16077](https://github.com/pantsbuild/pants/pull/16077))

* Add new fmt plugins for build file formatting ([16560](https://github.com/pantsbuild/pants/pull/16560))

* Add buildifier as a BUILD file formatter ([16573](https://github.com/pantsbuild/pants/pull/16573))

* go: add support for test coverage ([16550](https://github.com/pantsbuild/pants/pull/16550))

* Disable 80 col hard wrapping in mypy output ([16488](https://github.com/pantsbuild/pants/pull/16488))

* Allow for automatic use of `pytest-xdist` ([16499](https://github.com/pantsbuild/pants/pull/16499))

* Add `[pyoxidizer].lockfile` ([16537](https://github.com/pantsbuild/pants/pull/16537))

* Add `[flake8].extra_files` to allow configuring plugins like Bandit ([16470](https://github.com/pantsbuild/pants/pull/16470))

* Support 3rd party Helm artifacts in Helm deployments ([16478](https://github.com/pantsbuild/pants/pull/16478))

User API Changes

* Mark `[python].requirement_constraints` as deprecated (but not planned for removal) ([16606](https://github.com/pantsbuild/pants/pull/16606))

* Add `[python-repos].find_links` as preferred alias for `[python-repos].repos` ([16582](https://github.com/pantsbuild/pants/pull/16582))

* Fix that running on a BUILD file expands to all of its targets ([16546](https://github.com/pantsbuild/pants/pull/16546))

* Deprecate `[python].only_binary` and `[python].no_binary` in favor of more powerful `[python].resolves_to_only_binary` and `[python].resolves_to_no_binary` ([16513](https://github.com/pantsbuild/pants/pull/16513))

Plugin API Changes

* Rename `FmtRequest` to `FmtTargetsRequest` (plus some `fix` refactoring) ([16535](https://github.com/pantsbuild/pants/pull/16535))

Bug fixes

* Auto-detect Helm chart source roots ([16531](https://github.com/pantsbuild/pants/pull/16531))

* Have `run` run `__main__.py` for non-zipapp PEXs ([16568](https://github.com/pantsbuild/pants/pull/16568))

* Record `RemoteStoreBlobBytesUploaded` for all upload strategies, rather than only for large blobs. ([16545](https://github.com/pantsbuild/pants/pull/16545))

* Prevent running N^2 publish processes during deploy goal ([16516](https://github.com/pantsbuild/pants/pull/16516))

* Track Python indexes, find-links, and manylinux in lockfile headers ([16525](https://github.com/pantsbuild/pants/pull/16525))

Performance

* Fix performance for generating lockfiles for `pytest` and `setuptools` ([16591](https://github.com/pantsbuild/pants/pull/16591))

* Improve performance of `Owners` rule ([16563](https://github.com/pantsbuild/pants/pull/16563))

Documentation

* More succint phrasing and better formatting for cli help. ([16549](https://github.com/pantsbuild/pants/pull/16549))

* Document `[python].resolves_to_constraints_file` and `[python].resolves_to_no_binary` ([16548](https://github.com/pantsbuild/pants/pull/16548))

* Fix broken link to community page ([16468](https://github.com/pantsbuild/pants/pull/16468))

release_2.13.0rc1

User API Changes

* Replace `--[no-]process-cleanup` with `--keep-sandboxes={always,never,on_failure}` (Cherry-pick of 16415) ([16417](https://github.com/pantsbuild/pants/pull/16417))

* Deprecate `[python].tailor_ignore_solitary_init_files` in favor of more useful `[python].tailor_ignore_empty_init_files` (Cherry-pick of 16305) ([16334](https://github.com/pantsbuild/pants/pull/16334))

* Upgrade Pex to 2.1.102. (Cherry-pick of 16313) ([16323](https://github.com/pantsbuild/pants/pull/16323))

Bug fixes

* Add missing `help` message to experimental backends (Cherry-pick of 16403) ([16500](https://github.com/pantsbuild/pants/pull/16500))

* Fix `CacheContentBehavior::Defer` with a remote cache (Cherry-pick of 16439) ([16441](https://github.com/pantsbuild/pants/pull/16441))

* Fix docker invalidation bug (cherrypick of 16419) ([16431](https://github.com/pantsbuild/pants/pull/16431))

* Set immutable_input_digests on a docker RunRequest. (Cherry-pick of 16385) ([16396](https://github.com/pantsbuild/pants/pull/16396))

* go: pass -p option to `go tool asm` on Go v1.19+ (Cherry pick of 16381) ([16395](https://github.com/pantsbuild/pants/pull/16395))

* consume inits part of package object within the inner scope (Cherry-pick of 16282) ([16371](https://github.com/pantsbuild/pants/pull/16371))

* Add a newline at the end of `paths` output (Cherry-pick of 16302) ([16372](https://github.com/pantsbuild/pants/pull/16372))

* fix kotlin tailor for junit tests (Cherry pick of 16333) ([16341](https://github.com/pantsbuild/pants/pull/16341))

* Explicitly add directory entries to resources JARs (Cherry-pick of 16264) ([16296](https://github.com/pantsbuild/pants/pull/16296))

* Allow using `--import` option with Autoflake (Cherry-pick of 16192) ([16275](https://github.com/pantsbuild/pants/pull/16275))

* Dont use PEX as an API to fix `ModuleNotFoundError` for `--debug-adapter` (Cherry-pick of 16263) ([16267](https://github.com/pantsbuild/pants/pull/16267))

Performance

* Implement a `validate` mode to reduce network usage for remote caches (Cherry-pick of 16398) ([16409](https://github.com/pantsbuild/pants/pull/16409))

Documentation

* Update docs on how to run Pants in CI. (Cherry-pick of 16503) ([16509](https://github.com/pantsbuild/pants/pull/16509))

* Fix partition description for MyPy when multiple resolves (Cherry-pick of 16486) ([16498](https://github.com/pantsbuild/pants/pull/16498))

* Fix source roots docs. (Cherry-pick of 16363) ([16365](https://github.com/pantsbuild/pants/pull/16365))

* Link to dev.to post on resource hub (cherrypick 16331) ([16349](https://github.com/pantsbuild/pants/pull/16349))

* add tailor docs for kotlin backend (Cherry pick of 16332) ([16338](https://github.com/pantsbuild/pants/pull/16338))

* docs: add initial Kotlin docs (Cherry pick of 16304) ([16329](https://github.com/pantsbuild/pants/pull/16329))

* Document test sharding and update plugin docs with 2.13 changes (Cherry-pick of 16293) ([16306](https://github.com/pantsbuild/pants/pull/16306))

release_2.12.1rc3

Bug fixes

* Include Helm chart dependency inference rules (cherrypick of 16368) ([16490](https://github.com/pantsbuild/pants/pull/16490))

* Fix docker invalidation bug. (cherrypick 16419) ([16479](https://github.com/pantsbuild/pants/pull/16479))

* Explicitly add directory entries to resources JARs (Cherry-pick of 16264) ([16295](https://github.com/pantsbuild/pants/pull/16295))

Documentation

* Fix source roots docs (Cherry-pick of 16363) ([16364](https://github.com/pantsbuild/pants/pull/16364))

* Link to dev.to post on resource hub (cherrypick 16331) ([16348](https://github.com/pantsbuild/pants/pull/16348))

release_2.14.0.dev6

New Features

* Support adding to dict-valued options in config files. ([16481](https://github.com/pantsbuild/pants/pull/16481))

* Add `[mypy].extra_type_stubs_lockfile` ([16461](https://github.com/pantsbuild/pants/pull/16461))

* Proposal for a Helm Deployment goal implementation ([15882](https://github.com/pantsbuild/pants/pull/15882))

* Add support for using environment variables in JVM tests ([16455](https://github.com/pantsbuild/pants/pull/16455))

* Add `[python].resolves_to_constraints_file` ([16420](https://github.com/pantsbuild/pants/pull/16420))

Plugin API Changes

* `GenerateToolLockfileSentinel` encouraged to use language-specific subclasses ([16449](https://github.com/pantsbuild/pants/pull/16449))

* Allow backend packages to also register remote auth plugins ([16444](https://github.com/pantsbuild/pants/pull/16444))

Bug fixes

* Fix `--process-cleanup` deprecation. ([16447](https://github.com/pantsbuild/pants/pull/16447))

* Fix `CacheContentBehavior::Defer` with a remote cache ([16439](https://github.com/pantsbuild/pants/pull/16439))

Documentation

* Update docs on how to run Pants in CI. ([16503](https://github.com/pantsbuild/pants/pull/16503))

* Fix partition description for MyPy when multiple resolves ([16486](https://github.com/pantsbuild/pants/pull/16486))

* Add IBM to user list. ([16457](https://github.com/pantsbuild/pants/pull/16457))

release_2.14.0.dev5

New Features

* Add `[pytest].config` to set custom config file paths ([16423](https://github.com/pantsbuild/pants/pull/16423))

* java/protobuf: add support for grpc-java codegen ([16350](https://github.com/pantsbuild/pants/pull/16350))

User API Changes

* Upgrade Pex to 2.1.103. ([16313](https://github.com/pantsbuild/pants/pull/16426))
*
* Deprecate `[python].lockfile_generator` ([16418](https://github.com/pantsbuild/pants/pull/16418))

* Replace `--[no-]process-cleanup` with `--keep-sandboxes={always,never,on_failure}` ([16415](https://github.com/pantsbuild/pants/pull/16415))

* Add a few popular python packages to default modules mapping ([16330](https://github.com/pantsbuild/pants/pull/16330))

* Deprecate `[python].tailor_ignore_solitary_init_files` in favor of more useful `[python].tailor_ignore_empty_init_files` ([16305](https://github.com/pantsbuild/pants/pull/16305))

* Upgrade Pex to 2.1.102. ([16313](https://github.com/pantsbuild/pants/pull/16313))

* Enable `[python-infer].unowned_dependency_behavior="warning"` by default. ([16281](https://github.com/pantsbuild/pants/pull/16281))

* Upgrade Pex to 2.1.101. ([16297](https://github.com/pantsbuild/pants/pull/16297))

Plugin API Changes

* Add entry point support for remote auth plugin ([16212](https://github.com/pantsbuild/pants/pull/16212))

* Provide foundations for a deploy goal ([16335](https://github.com/pantsbuild/pants/pull/16335))

Bug fixes

* Fix docker invalidation bug. ([16419](https://github.com/pantsbuild/pants/pull/16419))

* Add missing `help` message to experimental backends ([16403](https://github.com/pantsbuild/pants/pull/16403))

* Set immutable_input_digests on a docker RunRequest. ([16385](https://github.com/pantsbuild/pants/pull/16385))

* go: pass -p option to `go tool asm` on Go v1.19+ ([16381](https://github.com/pantsbuild/pants/pull/16381))

* jvm: fix fetching artifacts with non-jar packaging ([16358](https://github.com/pantsbuild/pants/pull/16358))

* [internal] Add missing timeout field to target generators ([16314](https://github.com/pantsbuild/pants/pull/16314))

* Include Helm chart dependency inference rules ([16368](https://github.com/pantsbuild/pants/pull/16368))

* [internal] Use `f_globals` instead of `inspect.getmodule` in `collect_rules` ([16357](https://github.com/pantsbuild/pants/pull/16357))

* Silence mkdir, cp, and mv commands with MyPy caching ([16340](https://github.com/pantsbuild/pants/pull/16340))

* fix kotlin tailor for junit tests ([16333](https://github.com/pantsbuild/pants/pull/16333))

* Leverage a multiprocess-safe strategy for MyPy's cache ([16290](https://github.com/pantsbuild/pants/pull/16290))

* Eagerly error for symlink loops ([16319](https://github.com/pantsbuild/pants/pull/16319))

* Add a newline at the end of `paths` output ([16302](https://github.com/pantsbuild/pants/pull/16302))

* Consume inits part of package object within the inner scope ([16282](https://github.com/pantsbuild/pants/pull/16282))

* Explicitly add directory entries to resources JARs ([16264](https://github.com/pantsbuild/pants/pull/16264))

Performance

* Implement a `validate` mode to reduce network usage for remote caches ([16398](https://github.com/pantsbuild/pants/pull/16398))

Documentation

* Document how to use Pylint reports ([16399](https://github.com/pantsbuild/pants/pull/16399))

* Fix source roots docs. ([16363](https://github.com/pantsbuild/pants/pull/16363))

* Show advanced options with `help` if there are no basic options ([16352](https://github.com/pantsbuild/pants/pull/16352))

* Improve a docker backend warning. ([16355](https://github.com/pantsbuild/pants/pull/16355))

* Link to dev.to post on resource hub. ([16331](https://github.com/pantsbuild/pants/pull/16331))

* Only show the deprecated option section with `help` if there are deprecated options ([16339](https://github.com/pantsbuild/pants/pull/16339))

* add tailor docs for kotlin backend ([16332](https://github.com/pantsbuild/pants/pull/16332))

* Fix the experimental_run_shell_command example. ([16286](https://github.com/pantsbuild/pants/pull/16286))

* Fix typo in backend name ([16312](https://github.com/pantsbuild/pants/pull/16312))

* docs: add initial Kotlin docs ([16304](https://github.com/pantsbuild/pants/pull/16304))

* Document test sharding and update plugin docs with 2.13 changes ([16293](https://github.com/pantsbuild/pants/pull/16293))

release_2.14.0.dev4

There was no 2.14.0.dev4 because of technical issues.

release_2.14.0.dev3

New Features

* add Go ASDF support ([16246](https://github.com/pantsbuild/pants/pull/16246))

* Add `[python].default_run_goal_use_sandbox` ([16239](https://github.com/pantsbuild/pants/pull/16239))

* Add `include_sources` to `pex_binary` target ([16215](https://github.com/pantsbuild/pants/pull/16215))

* allow JVM sources to have files dependencies ([16203](https://github.com/pantsbuild/pants/pull/16203))

* Optionally strip metadata and timestamps from JVM jars ([16134](https://github.com/pantsbuild/pants/pull/16134))

* Support timeouts in Helm unittest targets ([16181](https://github.com/pantsbuild/pants/pull/16181))

* Allow for dependency inference plugins to provide excludes ([16155](https://github.com/pantsbuild/pants/pull/16155))

* Add support for strict and color flags in Helm unittest ([15947](https://github.com/pantsbuild/pants/pull/15947))

User API Changes

* Ban `../` in `source` and `sources` fields ([16227](https://github.com/pantsbuild/pants/pull/16227))

* Warn users if they set remote cache and or/execution via config while the values are provided by the auth plugin. ([16165](https://github.com/pantsbuild/pants/pull/16165))

* Upgrade Pex to 2.1.99. ([16184](https://github.com/pantsbuild/pants/pull/16184))

* Upgrade python reqs, upgrade default setuptools to 63.1.0 ([16168](https://github.com/pantsbuild/pants/pull/16168))

* Add test timeouts to JUnit and Scalatest targets. ([16126](https://github.com/pantsbuild/pants/pull/16126))

Plugin API Changes

* Generically compute dynamic defaults for `Field`s ([16206](https://github.com/pantsbuild/pants/pull/16206))

* Add support for auth plugin setting its name ([16171](https://github.com/pantsbuild/pants/pull/16171))

* Fold dep injection into inference, and use FieldSet ([16107](https://github.com/pantsbuild/pants/pull/16107))

Bug fixes

* Allow using `--import` option with Autoflake ([16192](https://github.com/pantsbuild/pants/pull/16192))

* Dont use PEX as an API to fix `ModuleNotFoundError` for `--debug-adapter` ([16263](https://github.com/pantsbuild/pants/pull/16263))

* Apply parameter filling for `parametrize`d dependencies to excludes, and fix accommodation for file-addressed atom targets ([16249](https://github.com/pantsbuild/pants/pull/16249))

* [internal] Refactors `output_field` to default to something that disambiguates on parametrized fields ([16232](https://github.com/pantsbuild/pants/pull/16232))

* fix scala plugins args order causing cache issues ([16228](https://github.com/pantsbuild/pants/pull/16228))

* Fix explicit dependencies of `parametrize`d targets not working for some target types ([16197](https://github.com/pantsbuild/pants/pull/16197))

* Add `overrides` field to Scala targets ([16204](https://github.com/pantsbuild/pants/pull/16204))

* Fill address parameters in all cases, rather than only when a consumer is `parametrize`d. ([16198](https://github.com/pantsbuild/pants/pull/16198))

* Use filelists to make archive creation tasks more reliable ([16183](https://github.com/pantsbuild/pants/pull/16183))

* Allow macros to raise builtin Errors ([16174](https://github.com/pantsbuild/pants/pull/16174))

* Fix defaulting of parameters in explicitly specified deps on `parametrize`d targets for AsyncFieldMixin ([16176](https://github.com/pantsbuild/pants/pull/16176))

* java: add proper inference of Scrooge Java Thrift dependencies ([16130](https://github.com/pantsbuild/pants/pull/16130))

* Fix "dependency" pluralization ([16150](https://github.com/pantsbuild/pants/pull/16150))

* Improve memoization of interpreter constraints, Python parsing, and request classes ([16141](https://github.com/pantsbuild/pants/pull/16141))

* Add support for `InteractiveProcess` consuming inputs while `run_in_workspace=True` ([16093](https://github.com/pantsbuild/pants/pull/16093))

* Optimize `get_expanded_specs` for `StreamingWorkunit` plugins ([16106](https://github.com/pantsbuild/pants/pull/16106))

Performance

* Port `rule` `Get`s to rust ([16160](https://github.com/pantsbuild/pants/pull/16160))

Documentation

* Add Vicara Solutions to the users page. ([16221](https://github.com/pantsbuild/pants/pull/16221))

* Document the "fromfile" feature. ([16205](https://github.com/pantsbuild/pants/pull/16205))

* Document `--filter` options working with any goal ([16090](https://github.com/pantsbuild/pants/pull/16090))

* Updates installation docs to refer to the 1-step setup script ([16149](https://github.com/pantsbuild/pants/pull/16149))

* Add 2.12 changelog to docsite ([16136](https://github.com/pantsbuild/pants/pull/16136))

release_2.13.0rc0

New Features

* allow JVM sources to have files dependencies (Cherry-pick of 16203) ([16236](https://github.com/pantsbuild/pants/pull/16236))

* Add [python].default_run_goal_use_sandbox (Cherry-pick of 16239) ([16253](https://github.com/pantsbuild/pants/pull/16253))

* Add `include_sources` to `pex_binary` target (Cherry-pick of 16215) ([16252](https://github.com/pantsbuild/pants/pull/16252))

* Add support for extra env variables in go tests (Cherry-pick of 16013) ([16067](https://github.com/pantsbuild/pants/pull/16067))

User API Changes

* Ban `../` in `source` and `sources` fields (Cherry-pick of 16227) ([16237](https://github.com/pantsbuild/pants/pull/16237))

* Upgrade Pex to 2.1.99. (Cherry-pick of 16184) ([16225](https://github.com/pantsbuild/pants/pull/16225))

* Correct deprecation warning to 2.15 (Cherry-pick of 16056) ([16218](https://github.com/pantsbuild/pants/pull/16218))

* Fix poetry locks missing hashes. (Cherry-pick of 16112) ([16113](https://github.com/pantsbuild/pants/pull/16113))

Plugin API Changes

* Generically compute dynamic defaults for `Field`s (Cherry-pick of 16206) ([16219](https://github.com/pantsbuild/pants/pull/16219))

Bug fixes

* Refactors `output_field` to default to something that disambiguates on paramtrized fields (Cherry-pick of 16232) ([16254](https://github.com/pantsbuild/pants/pull/16254))

* Apply parameter filling for `parametrize`d dependencies to excludes, and fix accommodation for file-addressed atom targets (Cherry-pick of 16249) ([16250](https://github.com/pantsbuild/pants/pull/16250))

* Remove removal of use_deprecated_pex_binary_run_semantics in 2.13.x ([16108](https://github.com/pantsbuild/pants/pull/16108))

* Fix scala plugins args order causing cache issues (Cherry-pick of 16228) ([16234](https://github.com/pantsbuild/pants/pull/16234))

* Add overrides field to scala targets (Cherry-pick of 16204) ([16235](https://github.com/pantsbuild/pants/pull/16235))

* Fix explicit dependencies of `parametrize`d targets not working for some target types (16197) ([16214](https://github.com/pantsbuild/pants/pull/16214))

* Fill address parameters in all cases, rather than only when a consumer is `parametrize`d. (Cherry-pick of 16198) ([16210](https://github.com/pantsbuild/pants/pull/16210))

* Use filelists to make archive creation tasks more reliable (Cherry-pick of 16183) ([16186](https://github.com/pantsbuild/pants/pull/16186))

* Fix defaulting of parameters in explicitly specified deps on `parametrize`d targets for AsyncFieldMixin (Cherry-pick of 16176) ([16180](https://github.com/pantsbuild/pants/pull/16180))

* Improve memoization of interpreter constraints, Python parsing, and request classes (Cherry-pick of 16141) ([16154](https://github.com/pantsbuild/pants/pull/16154))

* Add support for `InteractiveProcess` consuming inputs while `run_in_workspace=True` (Cherry-pick of 16093) ([16148](https://github.com/pantsbuild/pants/pull/16148))

* Optimize `get_expanded_specs` for `StreamingWorkunit` plugins (Cherry-pick of 16106) ([16147](https://github.com/pantsbuild/pants/pull/16147))

* Record ongoing backtrack attempts (Cherry-pick of 16075) ([16080](https://github.com/pantsbuild/pants/pull/16080))

* Write to caches during backtracking (Cherry-pick of 16078) ([16081](https://github.com/pantsbuild/pants/pull/16081))

* Fix `--changed-since` with `tailor` and `update-build-files` when no changes ([16066](https://github.com/pantsbuild/pants/pull/16066))

* Fix pantsd TTY handling. (Cherry-pick of 16038) ([16048](https://github.com/pantsbuild/pants/pull/16048))

Performance

* Port `rule` `Get`s to rust (Cherry-pick of 16160) ([16177](https://github.com/pantsbuild/pants/pull/16177))

Documentation

* Document `--filter` options working with any goal (Cherry-pick of 16090) ([16209](https://github.com/pantsbuild/pants/pull/16209))

* Document the "fromfile" feature. (cherrypick of 16205) ([16208](https://github.com/pantsbuild/pants/pull/16208))

* Add 2.12 changelog to docsite (cherrypick 16136) ([16139](https://github.com/pantsbuild/pants/pull/16139))

* New doc explaining vcs_version. (Cherrypick of 16092) ([16102](https://github.com/pantsbuild/pants/pull/16102))

* Fix typo in warning for `[python].resolve_all_constraints` (Cherry-pick of 16068) ([16073](https://github.com/pantsbuild/pants/pull/16073))

* Update docs with 2.12 changes: default Pex lockfile generator, `pants.toml` env var interpolation, pip VCS requirements, and Python interpreter constraints (Cherry-pick of 16000) ([16058](https://github.com/pantsbuild/pants/pull/16058))

* Fix CI provider table rendering. (cherrypick of 16051) ([16060](https://github.com/pantsbuild/pants/pull/16060))

* Document Docker registries configuration options for `skip_push` and `extra_image_tags`. (Cherry-pick of 16015) ([16020](https://github.com/pantsbuild/pants/pull/16020))

release_2.12.1rc2

Bug fixes

* Apply parameter filling for `parametrize`d dependencies to excludes, and fix accommodation for file-addressed atom targets (Cherry-pick of 16249) ([16251](https://github.com/pantsbuild/pants/pull/16251))

* [internal] Refactors `output_field` to default to something that disambiguates on parametrized fields (cherry-pick of 16232) ([16248](https://github.com/pantsbuild/pants/pull/16248))

release_2.12.1rc1

Plugin API Changes

* Generically compute dynamic defaults for `Field`s (Cherry-pick of 16206) ([16220](https://github.com/pantsbuild/pants/pull/16220))

Bug fixes

* Fix scala plugins args order causing cache issues (Cherry-pick of 16228) ([16233](https://github.com/pantsbuild/pants/pull/16233))

* Fix explicit dependencies of `parametrize`d targets not working for some target types (Cherry-pick of 16197) ([16213](https://github.com/pantsbuild/pants/pull/16213))

* Fill address parameters in all cases, rather than only when a consumer is `parametrize`d. (Cherry-pick of 16198) ([16211](https://github.com/pantsbuild/pants/pull/16211))

* Use filelists to make archive creation tasks more reliable (Cherry-pick of 16183) ([16185](https://github.com/pantsbuild/pants/pull/16185))

Documentation

* Document the "fromfile" feature. (cherrypick of 16205) ([16207](https://github.com/pantsbuild/pants/pull/16207))

release_2.12.1rc0

User API Changes

* Fix poetry locks missing hashes. (Cherry-pick of 16112) ([16114](https://github.com/pantsbuild/pants/pull/16114))

Bug fixes

* Fix defaulting of parameters in explicitly specified deps on `parametrize`d targets for AsyncFieldMixin (Cherry-pick of 16176) ([16179](https://github.com/pantsbuild/pants/pull/16179))

* Improve memoization of interpreter constraints, Python parsing, and request classes (Cherry-pick of 16141) ([16153](https://github.com/pantsbuild/pants/pull/16153))

* Fix pantsd TTY handling. (Cherry-pick of 16038) ([16047](https://github.com/pantsbuild/pants/pull/16047))

Documentation

* Updates installation docs to refer to the 1-step setup script (Cherry-picks of 16149) ([16157](https://github.com/pantsbuild/pants/pull/16157))

* Add 2.12 changelog to docsite (cherrypick 16136) ([16138](https://github.com/pantsbuild/pants/pull/16138))

* Update docs with 2.12 changes: default Pex lockfile generator, `pants.toml` env var interpolation, pip VCS requirements, and Python interpreter constraints (Cherry-pick of 16000) ([16059](https://github.com/pantsbuild/pants/pull/16059))

* Fix CI provider table rendering. (cherrypick of 16051) ([16061](https://github.com/pantsbuild/pants/pull/16061))

* Document Docker registries configuration options for `skip_push` and `extra_image_tags`. (Cherry-pick of 16015) ([16021](https://github.com/pantsbuild/pants/pull/16021))

* Bump 2.12 install version ([16002](https://github.com/pantsbuild/pants/pull/16002))

release_2.14.0.dev2

User API Changes

* Revert "Upgrade Pex to 2.1.95. (16110)" ([16125](https://github.com/pantsbuild/pants/pull/16125))

* Add a lock for the Poetry tool. ([16117](https://github.com/pantsbuild/pants/pull/16117))

* Upgrade Pex to 2.1.95. ([16110](https://github.com/pantsbuild/pants/pull/16110))

* Fix poetry locks missing hashes. ([16112](https://github.com/pantsbuild/pants/pull/16112))

* java/avro: inject runtime library dependency ([15904](https://github.com/pantsbuild/pants/pull/15904))

Bug fixes

* Fix issue with `__defaults__` not propagating over gaps in the tree of BUILD files. ([16089](https://github.com/pantsbuild/pants/pull/16089))

* Write to caches during backtracking ([16078](https://github.com/pantsbuild/pants/pull/16078))

* Record ongoing backtrack attempts ([16075](https://github.com/pantsbuild/pants/pull/16075))

Documentation

* New doc explaining vcs_version. ([16092](https://github.com/pantsbuild/pants/pull/16092))

* Fix typo in warning for `[python].resolve_all_constraints` ([16068](https://github.com/pantsbuild/pants/pull/16068))

release_2.14.0.dev1

New Features

* Add support for extra env variables in go tests ([16013](https://github.com/pantsbuild/pants/pull/16013))

* Add ability to `run` any `PythonSourceField` ([15849](https://github.com/pantsbuild/pants/pull/15849))

* Add `--debug-adapter` flag to `run` ([15829](https://github.com/pantsbuild/pants/pull/15829))

User API Changes

* Correct deprecation warning for addressing `pex_binary` targets by filename to 2.15 ([16056](https://github.com/pantsbuild/pants/pull/16056))

* Default `scala-infer` `force_add_siblings_as_dependencies` to False. ([16031](https://github.com/pantsbuild/pants/pull/16031))

* Upgrade Pex to 2.1.94. ([16029](https://github.com/pantsbuild/pants/pull/16029))

* Remove `python-infer` `inits` option. ([16036](https://github.com/pantsbuild/pants/pull/16036))

* Remove `golang` `expected_version` option. ([16033](https://github.com/pantsbuild/pants/pull/16033))

* Remove the `filter` goal. ([16032](https://github.com/pantsbuild/pants/pull/16032))

* Default `--use-deprecated-pex-binary-run-semantics` to `False`. ([16034](https://github.com/pantsbuild/pants/pull/16034))

* Default `python` `tailor_pex_binary_targets` to `False`. ([16035](https://github.com/pantsbuild/pants/pull/16035))

* Deprecate not setting `tailor_pex_binary_targets` explictly ([15962](https://github.com/pantsbuild/pants/pull/15962))

* `tailor` and `update-build-files` require specifying CLI arguments ([15941](https://github.com/pantsbuild/pants/pull/15941))

* Upgrade default version of black to 22.6.0 ([15960](https://github.com/pantsbuild/pants/pull/15960))

* Upgrade default version of pyupgrade to 2.34.0 ([15956](https://github.com/pantsbuild/pants/pull/15956))

Plugin API Changes

* `fmt` plugins can add new files ([15846](https://github.com/pantsbuild/pants/pull/15846))

* Pants internally uses dedicated Sources and Dependencies fields ([16037](https://github.com/pantsbuild/pants/pull/16037))

Bug fixes

* Fix pantsd TTY handling. ([16038](https://github.com/pantsbuild/pants/pull/16038))

* revert REAPI batch API PRs ([16016](https://github.com/pantsbuild/pants/pull/16016))

* Backtrack through calls from `rules` to synchronous engine methods ([15979](https://github.com/pantsbuild/pants/pull/15979))

Documentation

* Fix CI provider table rendering. ([16051](https://github.com/pantsbuild/pants/pull/16051))

* Update docs with 2.12 changes: default Pex lockfile generator, `pants.toml` env var interpolation, pip VCS requirements, and Python interpreter constraints ([16000](https://github.com/pantsbuild/pants/pull/16000))

* Fix alpha release email template typo. ([16027](https://github.com/pantsbuild/pants/pull/16027))

* Document Docker registries configuration options for `skip_push` and `extra_image_tags`. ([16015](https://github.com/pantsbuild/pants/pull/16015))

* Update Python documentation with 2.11 changes ([15857](https://github.com/pantsbuild/pants/pull/15857))

* Update the docs for `fmt` and test report changes ([15968](https://github.com/pantsbuild/pants/pull/15968))

* Use Markdown h3 for ToC support ([15964](https://github.com/pantsbuild/pants/pull/15964))

* Direct people to a quick form before they join Slack. ([15957](https://github.com/pantsbuild/pants/pull/15957))

release_2.13.0a1

New Features

* Add ability to `run` any `PythonSourceField` (Cherry-pick of 15849) ([16022](https://github.com/pantsbuild/pants/pull/16022))

* Add `--debug-adapter` flag to `run` (Cherry-pick of 15829) ([15988](https://github.com/pantsbuild/pants/pull/15988))

* Add repository config option to Docker registries. (Cherry pick of 15884) ([15952](https://github.com/pantsbuild/pants/pull/15952))

User API Changes

* Deprecate not setting `tailor_pex_binary_targets` explictly (Cherry-pick of 15962) ([16023](https://github.com/pantsbuild/pants/pull/16023))

* Upgrade default iPython to 7.34, which drops Python 3.6 (Cherry-pick of 15934) ([15938](https://github.com/pantsbuild/pants/pull/15938))

Plugin API Changes

* Introduce a plugin API to provide all thread local state, and deprecate stdio-specific methods (Cherry-pick of 15890) ([15916](https://github.com/pantsbuild/pants/pull/15916))

Bug fixes

* Backtrack through calls from `rules` to synchronous engine methods (Cherry-pick of 15979) ([16001](https://github.com/pantsbuild/pants/pull/16001))

* Assorted remote metrics fixes. (Cherry-pick of 15914) ([15976](https://github.com/pantsbuild/pants/pull/15976))

* Fix bad "<infallible>" description in invalid addresses error messages (Cherry-pick of 15859) ([15936](https://github.com/pantsbuild/pants/pull/15936))

* Fix reporting of time spent downloading files (Cherry-pick of 15873) ([15921](https://github.com/pantsbuild/pants/pull/15921))

* Upgrade to `nails` `0.13.0` to pick up support for `JDK >=13`. (Cherry-pick of 15899) ([15918](https://github.com/pantsbuild/pants/pull/15918))

* Allow JVM memory controls to bound the process pool size to less than the process parallelism (Cherry-pick of 15903) ([15917](https://github.com/pantsbuild/pants/pull/15917))

* Increment the missing-digest backtracking level once per attempt (Cherry pick of 15889) ([15897](https://github.com/pantsbuild/pants/pull/15897))

* Scala: should visit ctor args of base type (Cherry pick of 15880) ([15892](https://github.com/pantsbuild/pants/pull/15892))

* Scala: mark an object that extends another type as recursive (Cherry pick of 15865) ([15891](https://github.com/pantsbuild/pants/pull/15891))

Performance

* terraform: use immutable input for Terraform tool (Cherry-pick of 15037) ([15998](https://github.com/pantsbuild/pants/pull/15998))

* Improve performance of file arguments when `--owners-not-found-behavior` not used ([15931](https://github.com/pantsbuild/pants/pull/15931))

* Dedupe `load_bytes_with` calls to a remote Store (Cherry-pick of 15901) ([15915](https://github.com/pantsbuild/pants/pull/15915))

Documentation

* Update Python documentation with 2.11 changes (Cherry-pick of 15857) ([15981](https://github.com/pantsbuild/pants/pull/15981))

* Update certificate environment variable advice for 14808. (Cherry-pick of 15943) ([15974](https://github.com/pantsbuild/pants/pull/15974))

* Update the docs for `fmt` and test report changes (Cherry-pick of 15968) ([15971](https://github.com/pantsbuild/pants/pull/15971))

* Clarify deprecation messages for `tailor` and `update-build-files` requiring CLI arguments (Cherry-pick of 15932) ([15937](https://github.com/pantsbuild/pants/pull/15937))

release_2.12.0

The first stable release of the `2.12.x` series, with only documentation changes since the previous `rc`!

Documentation

* Update certificate environment variable advice for 14808. (Cherry-pick of 15943) ([15973](https://github.com/pantsbuild/pants/pull/15973))

* Update the docs for `fmt` and test report changes (Cherry-pick of 15968) ([15970](https://github.com/pantsbuild/pants/pull/15970))

release_2.11.1

The second stable release in the `2.11.x` series, with only documentation changes since the previous `rc`!

Documentation

* Update certificate environment variable advice for 14808. (Cherry-pick of 15943) ([15972](https://github.com/pantsbuild/pants/pull/15972))

release_2.14.0.dev0

New Features

* Add repository config option to Docker registries. ([15884](https://github.com/pantsbuild/pants/pull/15884))

* Add `__defaults__` BUILD file symbol ([15836](https://github.com/pantsbuild/pants/pull/15836))

User API Changes

* Deprecate `--use-deprecated-directory-cli-args-semantics` and default to false ([15939](https://github.com/pantsbuild/pants/pull/15939))

* Remove deprecated `[golang].expected_version` in favor of `[golang].minimum_expected_version` ([15942](https://github.com/pantsbuild/pants/pull/15942))

* Upgrade default iPython to 7.34, which drops Python 3.6 ([15934](https://github.com/pantsbuild/pants/pull/15934))

* Remove deprecated `--excluded-target-regexp`, `--files-not-found-behavior`, and `--owners-not-found-behavior` global options ([15929](https://github.com/pantsbuild/pants/pull/15929))

* Deprecate implicit setting of `--remote-cache-{read,write,eager-fetch}` with `--remote-execution` ([15900](https://github.com/pantsbuild/pants/pull/15900))

* Upgrade Pex to 2.1.100. ([16285](https://github.com/pantsbuild/pants/pull/16285))

Plugin API Changes

* Plugin fields should propagate to subclassed target types. ([15876](https://github.com/pantsbuild/pants/pull/15876))

* Introduce a plugin API to provide all thread local state, and deprecate stdio-specific methods ([15890](https://github.com/pantsbuild/pants/pull/15890))

Bug fixes

* Assorted remote metrics fixes. ([15914](https://github.com/pantsbuild/pants/pull/15914))

* Fix bad "<infallible>" description in invalid addresses error messages ([15859](https://github.com/pantsbuild/pants/pull/15859))

* Allow JVM memory controls to bound the process pool size to less than the process parallelism ([15903](https://github.com/pantsbuild/pants/pull/15903))

* Upgrade to `nails` `0.13.0` to pick up support for `JDK >=13`. ([15899](https://github.com/pantsbuild/pants/pull/15899))

* Increment the missing-digest backtracking level once per attempt ([15889](https://github.com/pantsbuild/pants/pull/15889))

* Scala: should visit ctor args of base type ([15880](https://github.com/pantsbuild/pants/pull/15880))

* Scala: mark an object that extends another type as recursive ([15865](https://github.com/pantsbuild/pants/pull/15865))

* Fix reporting of time spent downloading files ([15873](https://github.com/pantsbuild/pants/pull/15873))

Performance

* Dedupe `load_bytes_with` calls to a remote Store ([15901](https://github.com/pantsbuild/pants/pull/15901))

* Improve mypy runs by adding the "incremental" mypy cache ([16276](https://github.com/pantsbuild/pants/pull/16276))

Documentation

* Add test debugging doc ([15948](https://github.com/pantsbuild/pants/pull/15948))

* Update certificate environment variable advice for 14808. ([15943](https://github.com/pantsbuild/pants/pull/15943))

* Clarify deprecation messages for `tailor` and `update-build-files` requiring CLI arguments ([15932](https://github.com/pantsbuild/pants/pull/15932))

* Fix GCF Handler documentation. ([16284](https://github.com/pantsbuild/pants/pull/16284))

release_2.12.0rc3

New Features

* Add option for max wait before terminating interactive process (Cherry-pick of 15767) ([15908](https://github.com/pantsbuild/pants/pull/15908))

User API Changes

* Change the default `remote_cache_warnings` warnings behavior to `backoff`. (Cherry-pick of 15745) ([15746](https://github.com/pantsbuild/pants/pull/15746))

Plugin API Changes

* Introduce a plugin API to provide all thread local state, and deprecate stdio-specific methods (Cherry-pick of 15890) ([15907](https://github.com/pantsbuild/pants/pull/15907))

Bug fixes

* Upgrade to `nails` `0.13.0` to pick up support for `JDK >=13`. (Cherry-pick of 15899) ([15906](https://github.com/pantsbuild/pants/pull/15906))

* Allow JVM memory controls to bound the process pool size to less than the process parallelism (Cherry-pick of 15903) ([15905](https://github.com/pantsbuild/pants/pull/15905))

* Fix `[python-infer].inits` and `[python-infer].conftests` to consider `resolve` field (Cherry-pick of 15787) ([15793](https://github.com/pantsbuild/pants/pull/15793))

* Record metrics for remote cache store errors (Cherry-pick of 15744) ([15747](https://github.com/pantsbuild/pants/pull/15747))

* Fix help for `--process-total-child-memory-usage` and `--process-per-child-memory-usage` (Cherry-pick of 15733) ([15737](https://github.com/pantsbuild/pants/pull/15737))

Documentation

* Fix broken links to `tailor` documentation ([15843](https://github.com/pantsbuild/pants/pull/15843))

* Adds current contents of readme.com docs to repo and adds notes on how to sync. (Cherry-picks 15810) ([15820](https://github.com/pantsbuild/pants/pull/15820))

* Handle anchors in `doc_url()` correctly (cherrypick of 15812) ([15823](https://github.com/pantsbuild/pants/pull/15823))

release_2.11.1rc3

Bug fixes

* Fix `[python-infer].inits` and `[python-infer].conftests` to consider `resolve` field (Cherry-pick of 15787) ([15794](https://github.com/pantsbuild/pants/pull/15794))

Documentation

* Fix broken links to `tailor` documentation ([15844](https://github.com/pantsbuild/pants/pull/15844))

* Handle anchors in `doc_url()` correctly (cherrypick of 15812) ([15822](https://github.com/pantsbuild/pants/pull/15822))

release_2.13.0a0

New Features

* Add option for max wait before terminating interactive process ([15767](https://github.com/pantsbuild/pants/pull/15767))

User API Changes

* Add `[scala-infer].force_add_siblings_as_dependencies` and deprecate it defaulting to true ([15841](https://github.com/pantsbuild/pants/pull/15841))

* Add `--debug-adapter` flag to `test` goal ([15799](https://github.com/pantsbuild/pants/pull/15799))

Plugin API Changes

* Add `skip_invalid_addresses` field to `UnparsedAddressInputs` ([15864](https://github.com/pantsbuild/pants/pull/15864))

* Add `MaybeAddress` for infallible evaluation of `AddressInput` ([15863](https://github.com/pantsbuild/pants/pull/15863))

* Add optional `StringSequenceField.valid_choices` ([15684](https://github.com/pantsbuild/pants/pull/15684))

* `WrappedTarget` now requires `WrappedTargetRequest` ([15789](https://github.com/pantsbuild/pants/pull/15789))

* Move `ResolveError` from `pants.base.exceptions` to `pants.build_graph.address` ([15790](https://github.com/pantsbuild/pants/pull/15790))

* `_TargetParametrizations` now requires `_TargetParametrizationsRequest` ([15759](https://github.com/pantsbuild/pants/pull/15759))

* `BuildFileAddress` now requires `BuildFileAddressRequest` ([15760](https://github.com/pantsbuild/pants/pull/15760))

Bug fixes

* Support `--help` for builtin goals. ([15798](https://github.com/pantsbuild/pants/pull/15798))

* Handle venv path special chars in coursier fetch ([15701](https://github.com/pantsbuild/pants/pull/15701))

* Fix `[python-infer].inits` and `[python-infer].conftests` to consider `resolve` field ([15787](https://github.com/pantsbuild/pants/pull/15787))

Performance

* Backtrack execution for missing digests to make `eager_fetch=false` more resilient ([15850](https://github.com/pantsbuild/pants/pull/15850))

* Remove synchronous remote cache lookup from remote execution ([15854](https://github.com/pantsbuild/pants/pull/15854))

Documentation

* Fix broken links to `tailor` documentation ([15842](https://github.com/pantsbuild/pants/pull/15842))

* Update docs for redesign of CLI arguments ([15816](https://github.com/pantsbuild/pants/pull/15816))

* Better error message when an address does not exist ([15788](https://github.com/pantsbuild/pants/pull/15788))

release_2.13.0.dev5

New Features

* Add GraphQL API server backend for the experimental-explorer goal ([15697](https://github.com/pantsbuild/pants/pull/15697))

* Add `extra_env_vars` field to `experimental_shell_command` target. ([15742](https://github.com/pantsbuild/pants/pull/15742))

* Add `experimental-explorer` builtin goal. ([15695](https://github.com/pantsbuild/pants/pull/15695))

User API Changes

* Always ignore paths which are not files, directories, or links. ([15773](https://github.com/pantsbuild/pants/pull/15773))

* Add API types and rules to cli help info ([14227](https://github.com/pantsbuild/pants/pull/14227))

* Change the default `remote_cache_warnings` warnings behavior to `backoff`. ([15745](https://github.com/pantsbuild/pants/pull/15745))

* Revert "Go can use both `file` and `resource` targets (15663)" ([15725](https://github.com/pantsbuild/pants/pull/15725))

* Deprecate `--exclude-target-regexp` in favor of `--filter-address-regex` ([15729](https://github.com/pantsbuild/pants/pull/15729))

Plugin API Changes

* Require setting `description_of_origin` with `AddressInput` and `UnparsedAddressInputs` ([15743](https://github.com/pantsbuild/pants/pull/15743))

* Require keyword arguments for `AddressInput` ([15741](https://github.com/pantsbuild/pants/pull/15741))

Bug fixes

* `tailor` should skip bad requirements targets ([15755](https://github.com/pantsbuild/pants/pull/15755))

* `tailor` for Go does not add targets when no ancestor `go.mod` ([15750](https://github.com/pantsbuild/pants/pull/15750))

* Record metrics for remote cache store errors ([15744](https://github.com/pantsbuild/pants/pull/15744))

* Fix help for `--process-total-child-memory-usage` and `--process-per-child-memory-usage` ([15733](https://github.com/pantsbuild/pants/pull/15733))

* Fix `--changed-since` with directories unknown to Pants ([15714](https://github.com/pantsbuild/pants/pull/15714))

Documentation

* Improve error messages for invalid addresses ([15751](https://github.com/pantsbuild/pants/pull/15751))

* Correctly describe the origin of invalid specs, e.g. `--paths-from` ([15730](https://github.com/pantsbuild/pants/pull/15730))

release_2.13.0.dev4

New Features

* Support running pex_binary targets directly on the in-repo sources. ([15689](https://github.com/pantsbuild/pants/pull/15689))

* Go can use both `file` and `resource` targets ([15663](https://github.com/pantsbuild/pants/pull/15663))

* Add ignore command line arguments, e.g. `-dir::` ([15619](https://github.com/pantsbuild/pants/pull/15619))

* Allow to skip linting on Helm charts ([15640](https://github.com/pantsbuild/pants/pull/15640))

* Helm charts support CRDS by default ([15623](https://github.com/pantsbuild/pants/pull/15623))

* Adds dependency injection rule for protobuf-java runtime ([15006](https://github.com/pantsbuild/pants/pull/15006))

User API Changes

* Make the global --no-process-cleanup conserve the `run` tmpdir. ([15683](https://github.com/pantsbuild/pants/pull/15683))

* Upgrade Pex to 2.1.90. ([15656](https://github.com/pantsbuild/pants/pull/15656))

* Remove `-d` as shorthand for `--logdir` ([15621](https://github.com/pantsbuild/pants/pull/15621))

Plugin API Changes

* `PutativeTargetsRequest.path_globs()` can take multiple globs ([15634](https://github.com/pantsbuild/pants/pull/15634))

* [Plugin API change] Remove default help message from MultipleSourcesField ([15633](https://github.com/pantsbuild/pants/pull/15633))

* Don't allow multiple flag names for the same option ([15627](https://github.com/pantsbuild/pants/pull/15627))

* Remove `PutativeTargetsSearchPaths` ([15625](https://github.com/pantsbuild/pants/pull/15625))

* Refactor `Specs` as prework for ignore Specs ([15620](https://github.com/pantsbuild/pants/pull/15620))

* Ban using short option names like `-x`, except for pre-blessed values ([15624](https://github.com/pantsbuild/pants/pull/15624))

Bug fixes

* Don't install Pex-style lockfile when no requirements used ([15706](https://github.com/pantsbuild/pants/pull/15706))

* `python_requirements()` can handle `-r reqs.txt` ([15672](https://github.com/pantsbuild/pants/pull/15672))

* Increase RuleGraph solver loop threshold to allow for larger `rule` sets ([15668](https://github.com/pantsbuild/pants/pull/15668))

* Fix `--help` output when specs given. ([15665](https://github.com/pantsbuild/pants/pull/15665))

* `update-build-files` falls back to interpreter constraints from tool lockfile for Black and Yapf ([15666](https://github.com/pantsbuild/pants/pull/15666))

* Fix detection of `--help` when specs given ([15664](https://github.com/pantsbuild/pants/pull/15664))

* Choose correct Scala dialect according to scala-version ([15649](https://github.com/pantsbuild/pants/pull/15649))

* Fix deleted files with `--changed-since` when using target-less goals like `count-loc` ([15662](https://github.com/pantsbuild/pants/pull/15662))

* Prevent collisions between attempts to materialize an immutable input digest. ([15652](https://github.com/pantsbuild/pants/pull/15652))

* Fix another case of direct Coursier lockfile consumption ([15650](https://github.com/pantsbuild/pants/pull/15650))

Documentation

* Mention language specific opt outs for `tailor` ([15673](https://github.com/pantsbuild/pants/pull/15673))

* Provide more "Did you mean ..." suggestions for the CLI help. ([15646](https://github.com/pantsbuild/pants/pull/15646))

* [docs] Add language specific file examples for sources help message of a target ([15635](https://github.com/pantsbuild/pants/pull/15635))

* Docs: show language specific file examples in sources field in the help of targets ([15595](https://github.com/pantsbuild/pants/pull/15595))

release_2.12.0rc2

New Features

* Add Memory controls to JVM processes (Cherry-pick of 15224) ([15682](https://github.com/pantsbuild/pants/pull/15682))

User API Changes

* Upgrade Pex to 2.1.90. (Cherry-pick of 15656) ([15658](https://github.com/pantsbuild/pants/pull/15658))

Bug fixes

* Don't install Pex-style lockfile when no requirements used (Cherry-pick of 15706) ([15707](https://github.com/pantsbuild/pants/pull/15707))

* `python_requirements()` can handle `-r reqs.txt` (Cherry-pick of 15672) ([15677](https://github.com/pantsbuild/pants/pull/15677))

* Prevent collisions between attempts to materialize an immutable input digest. (Cherry-pick of 15652) ([15680](https://github.com/pantsbuild/pants/pull/15680))

* Choose correct dialect according to scala-version (Cherry-pick of 15649) ([15681](https://github.com/pantsbuild/pants/pull/15681))

release_2.11.1rc2

User API Changes

* Upgrade Pex to 2.1.90. (Cherry-pick of 15656) ([15659](https://github.com/pantsbuild/pants/pull/15659))

Bug fixes

* Don't install Pex-style lockfile when no requirements used (Cherry-pick of 15706) ([15708](https://github.com/pantsbuild/pants/pull/15708))

* `python_requirements()` can handle `-r reqs.txt` (Cherry-pick of 15672) ([15678](https://github.com/pantsbuild/pants/pull/15678))

* Prevent collisions between attempts to materialize an immutable input digest. (Cherry-pick of 15652) ([15679](https://github.com/pantsbuild/pants/pull/15679))

release_2.13.0.dev3

New Features

* `dir:` and `dir::` work on target-less goals like `count-loc` ([15577](https://github.com/pantsbuild/pants/pull/15577))

* `--changed-since` works on target-less goals like `count-loc` ([14434](https://github.com/pantsbuild/pants/pull/14434))

* Add `--no-use-deprecated-directory-cli-args-semantics` so that directory arguments match all files/targets in the directory ([15589](https://github.com/pantsbuild/pants/pull/15589))

* `filter` options work with any goal now, not only the `filter` goal ([15599](https://github.com/pantsbuild/pants/pull/15599))

* Use new, consistent CLI args semantics for `tailor` if `use_deprecated_cli_args_semantics = false` ([15612](https://github.com/pantsbuild/pants/pull/15612))

* Support JVM options per tool ([15505](https://github.com/pantsbuild/pants/pull/15505))

* Allow turning off `export` of Python tools like `black` ([15509](https://github.com/pantsbuild/pants/pull/15509))

* Adding file downloading support to asset targets ([15457](https://github.com/pantsbuild/pants/pull/15457))

User API Changes

* Deprecate `filter` goal now that `filter` options can be used from any goal ([15600](https://github.com/pantsbuild/pants/pull/15600))

* Tailor `__main__.py` files as pex binaries ([15598](https://github.com/pantsbuild/pants/pull/15598))

* `update-build-files` now takes CLI args for which BUILD files to change ([15581](https://github.com/pantsbuild/pants/pull/15581))

* Don't error when `dir:` and `dir::` have no targets, as long as the directories exist ([15570](https://github.com/pantsbuild/pants/pull/15570))

* Deprecate `--owners-not-found-behavior` and set default to `ignore` ([15560](https://github.com/pantsbuild/pants/pull/15560))

* Add `--unmatched-cli-globs`, which before was controlled by `--owners-not-found-behavior` ([15556](https://github.com/pantsbuild/pants/pull/15556))

* Deprecate `files_not_found_behavior` in favor of `unmatched_build_file_globs` ([15555](https://github.com/pantsbuild/pants/pull/15555))

* Remove undocumented CLI file arguments ignore syntax ([15534](https://github.com/pantsbuild/pants/pull/15534))

* `go_third_party_package` targets now depend on their `go.mod` and `go.sum` ([15521](https://github.com/pantsbuild/pants/pull/15521))

* `--changed-dependees` no longer runs on sibling targets from same target generator ([15396](https://github.com/pantsbuild/pants/pull/15396))

* Change `_generator_sources_helper` to use `source: str` rather than `sources: list[str]` ([15475](https://github.com/pantsbuild/pants/pull/15475))

* Upgrade Pex to 2.1.88. ([15484](https://github.com/pantsbuild/pants/pull/15484))

* Revert "Deprecate `[python].tailor_ignore_solitary_init_files` in favor of more useful `[python].tailor_ignore_empty_init_files` (15469)" ([15492](https://github.com/pantsbuild/pants/pull/15492))

Plugin API Changes

* Replace `SpecsSnapshot` with lazier `SpecsPaths` ([15593](https://github.com/pantsbuild/pants/pull/15593))

* Rename classes in `specs.py` for unification of specs semantics ([15538](https://github.com/pantsbuild/pants/pull/15538))

* Remove `addressable=` kwarg from `tailor` ([15504](https://github.com/pantsbuild/pants/pull/15504))

* Remove `AbstractTestGenerator` from `pantsbuild.pants.testutil` ([15464](https://github.com/pantsbuild/pants/pull/15464))

Bug fixes

* Fix incorrect digest for JVM multiple `jvm_artifact(.., jar=..)` entries ([15571](https://github.com/pantsbuild/pants/pull/15571))

* Record Scala `package object` as provided name ([15582](https://github.com/pantsbuild/pants/pull/15582))

* Fix deprecation message for `--filter-target-type` with deprecated target alias ([15596](https://github.com/pantsbuild/pants/pull/15596))

* Fix scala inference doesn't infer name after function call ([15565](https://github.com/pantsbuild/pants/pull/15565))

* Fix JVM resource classification and artifact grouping ([15567](https://github.com/pantsbuild/pants/pull/15567))

* Apply `--tag` filtering to target-less goals like `count-loc` ([15479](https://github.com/pantsbuild/pants/pull/15479))

* Fix `tag` filtering with `--changed-dependees` ([15546](https://github.com/pantsbuild/pants/pull/15546))

* Fix non-deterministic order of `jvm_artifact(.., excludes=..)` ([15542](https://github.com/pantsbuild/pants/pull/15542))

* Support transitive file dependencies in Scalatest/JUnit ([15501](https://github.com/pantsbuild/pants/pull/15501))

* Improve `name=` used for Python requirement target generators with `tailor` ([15507](https://github.com/pantsbuild/pants/pull/15507))

* don't generate default tool lockfiles ([15488](https://github.com/pantsbuild/pants/pull/15488))

* Don't give a subsequent formatter an empty snapshot after skipping ([15483](https://github.com/pantsbuild/pants/pull/15483))

* jvm: fix incorrect check for root-only `ClasspathEntryRequest` implementations ([15494](https://github.com/pantsbuild/pants/pull/15494))

Performance

* `lint` only finds targets and files if the relevant linters were specified ([15579](https://github.com/pantsbuild/pants/pull/15579))

* `regex-lint` only reads files that will be checked ([15580](https://github.com/pantsbuild/pants/pull/15580))

Documentation

* Freshen up deprecated option formatting ([15590](https://github.com/pantsbuild/pants/pull/15590))

* Make required fields sort first on the docsite and in the './pants help target' output ([15587](https://github.com/pantsbuild/pants/pull/15587))

* Add a few default_help_reprs ([15588](https://github.com/pantsbuild/pants/pull/15588))

* Suggest a UUID when erroring about missing UUID ([15550](https://github.com/pantsbuild/pants/pull/15550))

* Tweak docs to include `no-infer-dep` in a few more places ([15547](https://github.com/pantsbuild/pants/pull/15547))

release_2.12.0rc1

New Features

* Allow turning off `export` of Python tools like `black` (Cherry-pick of 15509) ([15511](https://github.com/pantsbuild/pants/pull/15511))

* Support relative address syntax for JVM compiler plugin artifacts (Cherry-pick of 15462) ([15468](https://github.com/pantsbuild/pants/pull/15468))

User API Changes

* Upgrade Pex to 2.1.88. (Cherry-pick of 15484) ([15485](https://github.com/pantsbuild/pants/pull/15485))

Bug fixes

* Fix incorrect digest for JVM multiple `jvm_artifact(.., jar=..)` entries (Cherry-pick of 15571) ([15611](https://github.com/pantsbuild/pants/pull/15611))

* Record Scala `package object` as provided name (Cherry-pick of 15582) ([15608](https://github.com/pantsbuild/pants/pull/15608))

* Don't give a subsequent formatter an empty snapshot after skipping (Cherry-pick of 15483) ([15602](https://github.com/pantsbuild/pants/pull/15602))

* Fix lockfile generation for Docker and Terraform to not require Python backend (Cherry-pick of 15453) ([15604](https://github.com/pantsbuild/pants/pull/15604))

* Fix Scala inference not inferring a symbol name after a function call (Cherry-pick of 15565) ([15603](https://github.com/pantsbuild/pants/pull/15603))

* Fix non-deterministic order of `jvm_artifact(.., excludes=..)` (Cherry-pick of 15542) ([15575](https://github.com/pantsbuild/pants/pull/15575))

* Fix JVM resource classification and artifact grouping (Cherry-pick of 15567) ([15573](https://github.com/pantsbuild/pants/pull/15573))

* Fix `tag` filtering with `--changed-dependees` (Cherry-pick of 15546) ([15564](https://github.com/pantsbuild/pants/pull/15564))

* Improve `name=` used for `python_requirements` target generators with `tailor` (Cherry-pick of 15507) ([15519](https://github.com/pantsbuild/pants/pull/15519))

* jvm: don't generate default tool lockfiles (Cherry pick of 15488) ([15498](https://github.com/pantsbuild/pants/pull/15498))

* jvm: fix incorrect check for root-only `ClasspathEntryRequest` implementations (Cherry pick of 15494) ([15496](https://github.com/pantsbuild/pants/pull/15496))

* kotlin: the `plugin_id` field on `kotlinc_plugin` target is optional (Cherry-pick of 15459) ([15466](https://github.com/pantsbuild/pants/pull/15466))

* kotlin: remove stray scala references (Cherry-pick of 15461) ([15465](https://github.com/pantsbuild/pants/pull/15465))

Performance

* `lint` only finds targets and files if the relevant linters were specified (Cherry-pick of 15579) ([15601](https://github.com/pantsbuild/pants/pull/15601))

release_2.11.1rc1

User API Changes

* Revert `tags` changes, except for the `python_tests` bug fix ([15553](https://github.com/pantsbuild/pants/pull/15553))

* Upgrade Pex to 2.1.88. (Cherry-pick of 15484) ([15486](https://github.com/pantsbuild/pants/pull/15486))

Bug fixes

* Fix non-deterministic order of `jvm_artifact(.., excludes=..)` (Cherry-pick of 15542) ([15574](https://github.com/pantsbuild/pants/pull/15574))

* Fix JVM resource classification and artifact grouping (Cherry-pick of 15567) ([15572](https://github.com/pantsbuild/pants/pull/15572))

* Improve `name=` used for Python requirement target generators with `tailor` (Cherry-pick of 15507) ([15520](https://github.com/pantsbuild/pants/pull/15520))

* jvm: fix incorrect check for root-only `ClasspathEntryRequest` implementations (Cherry pick of 15494) ([15497](https://github.com/pantsbuild/pants/pull/15497))

* Fix incorrect digest for JVM multiple `jvm_artifact(.., jar=..)` entries (Cherry-pick of 15571) ([15610](https://github.com/pantsbuild/pants/pull/15610))

release_2.13.0.dev2

New Features

* Adds JDK autoconfiguration support to scala BSP metadata setup ([15408](https://github.com/pantsbuild/pants/pull/15408))

* Add `lint --skip-formatters` option ([15427](https://github.com/pantsbuild/pants/pull/15427))

* Support for sharding tests. ([15417](https://github.com/pantsbuild/pants/pull/15417))

* Add clang-format support for the experimental c/cpp plugin ([15395](https://github.com/pantsbuild/pants/pull/15395))

* Support setting env vars in individual distribution builds. ([15422](https://github.com/pantsbuild/pants/pull/15422))

* kotlin: add support for junit tests ([15382](https://github.com/pantsbuild/pants/pull/15382))

User API Changes

* Upgrade Pex to 2.1.87. ([15472](https://github.com/pantsbuild/pants/pull/15472))

* Deprecate `[python].tailor_ignore_solitary_init_files` in favor of more useful `[python].tailor_ignore_empty_init_files` ([15469](https://github.com/pantsbuild/pants/pull/15469))

* Upgrade default Protoc version to 3.20.1 (native Apple Silicon support) ([15424](https://github.com/pantsbuild/pants/pull/15424))

* Require that a target's `interpreter_constraints` are a subset of their dependencies' ([15373](https://github.com/pantsbuild/pants/pull/15373))

* Add `[python-infer].init_files` as more intuitive replacement for `[python-infer].inits` ([15397](https://github.com/pantsbuild/pants/pull/15397))

Plugin API Changes

* Move `get_git` deprecation to start in `2.14.0.dev0` ([15423](https://github.com/pantsbuild/pants/pull/15423))

Bug fixes

* Only infer an __init__.py dep on a python_sources-generated target. ([15471](https://github.com/pantsbuild/pants/pull/15471))

* kotlin: the `plugin_id` field on `kotlinc_plugin` target is optional ([15459](https://github.com/pantsbuild/pants/pull/15459))

* support relative address syntax for JVM compiler plugin artifacts ([15462](https://github.com/pantsbuild/pants/pull/15462))

* Fix lockfile generation for Docker, Terraform, and Clang-format to not require Python backend ([15453](https://github.com/pantsbuild/pants/pull/15453))

* Fix boolean logic when merging interpreter constraints. ([15414](https://github.com/pantsbuild/pants/pull/15414))

* Fix `tags` to work with filesystem arguments, `overrides` field, and `python_tests` ([15394](https://github.com/pantsbuild/pants/pull/15394))

* Support the `{chroot}` env placeholder for all interactive processes that are not executed in the workspace. ([15401](https://github.com/pantsbuild/pants/pull/15401))

* Fix `[]` in file names with target generators ([15383](https://github.com/pantsbuild/pants/pull/15383))

* BSP consumes thirdparty artifacts via their classpath entries, rather than directly from the lockfile. ([15392](https://github.com/pantsbuild/pants/pull/15392))

Documentation

* Improve error message for `dependencies` on incompatible Python resolves ([15416](https://github.com/pantsbuild/pants/pull/15416))

release_2.9.2

The third stable release of the `2.9.x` series, with no changes since the previous `rc`!

release_2.8.1

The second stable release of the `2.8.x` series, with no changes since the previous `rc`!

release_2.10.1

The second stable release of the `2.10.x` series, with no changes since the previous `rc`!

release_2.12.0rc0

User API Changes

* Upgrade default Protoc version to 3.20.1 (native Apple Silicon support) (Cherry-pick of 15424) ([15441](https://github.com/pantsbuild/pants/pull/15441))

* Require that a target's `interpreter_constraints` are a subset of their dependencies' (Cherry-pick of 15373) ([15407](https://github.com/pantsbuild/pants/pull/15407))

Plugin API Changes

* Move `get_git` deprecation to start in `2.14.0.dev0` (Cherry-pick of 15423) ([15437](https://github.com/pantsbuild/pants/pull/15437))

Bug fixes

* Fix `tags` to work with filesystem arguments, `overrides` field, and `python_tests` (Cherry-pick of 15394) ([15412](https://github.com/pantsbuild/pants/pull/15412))

* Support the `{chroot}` env placeholder for all interactive processes that are not executed in the workspace. (Cherry-pick of 15401) ([15405](https://github.com/pantsbuild/pants/pull/15405))

* Fix `[]` in file names with target generators (Cherry-pick of 15383) ([15403](https://github.com/pantsbuild/pants/pull/15403))

* Fix `tailor` detection of existing `python_requirements` targets (Cherry-pick of 15363) ([15372](https://github.com/pantsbuild/pants/pull/15372))

* Add the "named args explanation" to other relevant `parametrize` error messages. (Cherry-pick of 15362) ([15370](https://github.com/pantsbuild/pants/pull/15370))

* Use abspath to sandbox in PATH for docker tool shims. (Cherry-pick of 15341) ([15356](https://github.com/pantsbuild/pants/pull/15356))

* Fix non-determinism of `package_data` in generated `setup.py` files (Cherry-pick of 15292) ([15299](https://github.com/pantsbuild/pants/pull/15299))

* Fix a bug in the python venv export logic. (15294) ([15297](https://github.com/pantsbuild/pants/pull/15297))

Performance

* Eagerly skip tools with default lockfiles in `export-lockfiles` goal (Cherry-pick of 15304) ([15308](https://github.com/pantsbuild/pants/pull/15308))

Documentation

* Improve error message for `dependencies` on incompatible Python resolves (Cherry-pick of 15416) ([15439](https://github.com/pantsbuild/pants/pull/15439))

* Improve `help` and error message for `[python-infer].unowned_dependency_behavior` (Cherry-pick of 15334) ([15391](https://github.com/pantsbuild/pants/pull/15391))

* Disallow `!` patterns in `build_ignore`. (Cherry-pick of 15366) ([15368](https://github.com/pantsbuild/pants/pull/15368))

* Improve error message for resolves x interpreter constraints issues (Cherry-pick of 15314) ([15364](https://github.com/pantsbuild/pants/pull/15364))

* Fix error output of `parametrize()` (Cherry-pick of 15339) ([15348](https://github.com/pantsbuild/pants/pull/15348))

release_2.11.1rc0

Bug fixes

* Fix `tags` to work with filesystem arguments, `overrides` field, and `python_tests` (Cherry-pick of 15394) ([15413](https://github.com/pantsbuild/pants/pull/15413))

* Support the `{chroot}` env placeholder for all interactive processes that are not executed in the workspace. (Cherry-pick of 15401) ([15404](https://github.com/pantsbuild/pants/pull/15404))

* Fix `[]` in file names with target generators (Cherry-pick of 15383) ([15402](https://github.com/pantsbuild/pants/pull/15402))

* Fix `tailor` detection of existing `python_requirements` targets (Cherry-pick of 15363) ([15371](https://github.com/pantsbuild/pants/pull/15371))

* Add the "named args explanation" to other relevant `parametrize` error messages. (Cherry-pick of 15362) ([15369](https://github.com/pantsbuild/pants/pull/15369))

* Use abspath to sandbox in PATH for docker tool shims. (Cherry-pick of 15341) ([15357](https://github.com/pantsbuild/pants/pull/15357))

* Fix a bug in the python venv export logic. (cherrypick of 15294) ([15307](https://github.com/pantsbuild/pants/pull/15307))

* Fix non-determinism of `package_data` in generated `setup.py` files (Cherry-pick of 15292) ([15300](https://github.com/pantsbuild/pants/pull/15300))

Performance

* Eagerly skip tools with default lockfiles in `export-lockfiles` goal (Cherry-pick of 15304) ([15309](https://github.com/pantsbuild/pants/pull/15309))

Documentation

* Improve error message for `dependencies` on incompatible Python resolves (Cherry-pick of 15416) ([15440](https://github.com/pantsbuild/pants/pull/15440))

* Improve `help` and error message for `[python-infer].unowned_dependency_behavior` (Cherry-pick of 15334) ([15389](https://github.com/pantsbuild/pants/pull/15389))

* Disallow `!` patterns in `build_ignore`. (Cherry-pick of 15366) ([15367](https://github.com/pantsbuild/pants/pull/15367))

* Improve error message for resolves x interpreter constraints issues (Cherry-pick of 15314) ([15365](https://github.com/pantsbuild/pants/pull/15365))

* Fix error output of `parametrize()` (Cherry-pick of 15339) ([15349](https://github.com/pantsbuild/pants/pull/15349))

release_2.13.0.dev1

New Features

* Initial support for building dists using mypyc. ([15380](https://github.com/pantsbuild/pants/pull/15380))

* Support dependency inference on vcs_version targets. ([15385](https://github.com/pantsbuild/pants/pull/15385))

* Support for getting a version string from git. ([15374](https://github.com/pantsbuild/pants/pull/15374))

* Add `tailor` for `poetry_requirements` and `pipenv_requirements` ([15352](https://github.com/pantsbuild/pants/pull/15352))

User API Changes

* Add default mapping for pygithub ([15361](https://github.com/pantsbuild/pants/pull/15361))

Bug fixes

* Generalize Docker dep inference for all packageables. ([15375](https://github.com/pantsbuild/pants/pull/15375))

* Fix `tailor` detection of existing `python_requirements` targets ([15363](https://github.com/pantsbuild/pants/pull/15363))

* Add the "named args explanation" to other relevant `parametrize` error messages. ([15362](https://github.com/pantsbuild/pants/pull/15362))

* Use abspath to sandbox in PATH for docker tool shims. ([15341](https://github.com/pantsbuild/pants/pull/15341))

Documentation

* Improve `help` and error message for `[python-infer].unowned_dependency_behavior` ([15334](https://github.com/pantsbuild/pants/pull/15334))

* Disallow `!` patterns in `build_ignore`. ([15366](https://github.com/pantsbuild/pants/pull/15366))

release_2.13.0.dev0

New Features

* BSP compile exposes loose classfiles to allow IntelliJ to invoke tests ([15347](https://github.com/pantsbuild/pants/pull/15347))

* Add options to turn off `tailor` on a per-language basis ([15335](https://github.com/pantsbuild/pants/pull/15335))

User API Changes

* Upgrade hadolint to 2.10.0 and add linux arm64 support ([15317](https://github.com/pantsbuild/pants/pull/15317))

* Remove `[test].xml_dir`, `[update-build-files].fix_python_macros`, and `[java-infer].third_party_imports` ([15311](https://github.com/pantsbuild/pants/pull/15311))

* Deprecate `[golang].expected_version` in favor of more flexible `[golang].minimum_expected_version` ([15306](https://github.com/pantsbuild/pants/pull/15306))

Plugin API Changes

* Add `update_env` to `process_execution::local`. ([15340](https://github.com/pantsbuild/pants/pull/15340))

Bug fixes

* Fix error output of `parametrize()` ([15339](https://github.com/pantsbuild/pants/pull/15339))

* Don't strip source roots when building dists with an existing setup.py ([15303](https://github.com/pantsbuild/pants/pull/15303))

* Fix a bug in the python venv export logic. ([15294](https://github.com/pantsbuild/pants/pull/15294))

* Fix non-determinism of `package_data` in generated `setup.py` files ([15292](https://github.com/pantsbuild/pants/pull/15292))

Performance

* Eagerly skip tools with default lockfiles in `export-lockfiles` goal ([15304](https://github.com/pantsbuild/pants/pull/15304))

Documentation

* Improve error message for resolves x interpreter constraints issues ([15314](https://github.com/pantsbuild/pants/pull/15314))

release_2.11.0

The first stable release of the `2.11.x` series, with no changes since the previous `rc`!

release_2.11.0rc6

User API Changes

* Upgrade Pex to 2.1.84. (Cherry-picks of 15200, 15281 & 15288) ([15289](https://github.com/pantsbuild/pants/pull/15289))

Bug fixes

* Memoize equality for `CoarsenedTarget(s)` to avoid exponential runtime in `check`. (Cherry-pick of 15277) ([15278](https://github.com/pantsbuild/pants/pull/15278))

release_2.10.1rc1

New Features

* Support poetry wildcard requirements. (Cherry-pick of 15213) ([15215](https://github.com/pantsbuild/pants/pull/15215))

Bug fixes

* Do not lowercase Docker image tags. (Cherry pick of 15254) ([15259](https://github.com/pantsbuild/pants/pull/15259))

* Clean PID-specific exception file if empty on process exit (Cherry pick of 15086) ([15112](https://github.com/pantsbuild/pants/pull/15112))

* Fix use of `` in path names (Cherry-pick of 15226) ([15233](https://github.com/pantsbuild/pants/pull/15233))

* Fix lockfile generation for duplicate `jvm_artifact` targets with `jar` fields. (Cherry-pick of 15219) ([15232](https://github.com/pantsbuild/pants/pull/15232))

* Mention resolve when partitioning Mypy and Pylint (Cherry-pick of 15172) ([15182](https://github.com/pantsbuild/pants/pull/15182))

* Fix when the same `python_requirement` defines both type stub and implementation (Cherry-pick of 15121) ([15128](https://github.com/pantsbuild/pants/pull/15128))

* Enable codegen on relocated files (Cherry-pick of 15100) ([15130](https://github.com/pantsbuild/pants/pull/15130))

release_2.12.0a0

New Features

* Support poetry wildcard requirements. ([15213](https://github.com/pantsbuild/pants/pull/15213))

* Implement `tailor` goal for Helm charts ([15192](https://github.com/pantsbuild/pants/pull/15192))

* Write virtualenvs for Python tools as part of `export` ([15098](https://github.com/pantsbuild/pants/pull/15098))

User API Changes

* Upgrade Pex to 2.1.84. ([15288](https://github.com/pantsbuild/pants/pull/15288))

Plugin API Changes

* Allow for arbitrary suffixes when extracting ([15257](https://github.com/pantsbuild/pants/pull/15257))

* Add lz4 support to archive extraction ([15245](https://github.com/pantsbuild/pants/pull/15245))

Bug fixes

* Simplify BSP metadata merging, and handle the empty list. ([15283](https://github.com/pantsbuild/pants/pull/15283))

* BSP resolve filtering observes computed default values of resolve fields ([15282](https://github.com/pantsbuild/pants/pull/15282))

* Memoize equality for `CoarsenedTarget(s)` to avoid exponential runtime in `check`. ([15277](https://github.com/pantsbuild/pants/pull/15277))

* Fix ambiguity of Scala `package object`s with `class` or `object` definitions ([15265](https://github.com/pantsbuild/pants/pull/15265))

* Fix issue with Docker publish when using `[docker] tools`. ([15255](https://github.com/pantsbuild/pants/pull/15255))

* Do not lowercase Docker image tags. ([15254](https://github.com/pantsbuild/pants/pull/15254))

* Fix the placement of the pex verbosity args. ([15243](https://github.com/pantsbuild/pants/pull/15243))

* Fix use of `` in path names. ([15226](https://github.com/pantsbuild/pants/pull/15226))

* Fix lockfile generation for duplicate `jvm_artifact` targets with `jar` fields. ([15219](https://github.com/pantsbuild/pants/pull/15219))

* golang: add more cache keys based on tool IDs ([15205](https://github.com/pantsbuild/pants/pull/15205))

Performance

* `MyPy` and `Pylint` partition inputs via `CoarsenedTarget` ([15141](https://github.com/pantsbuild/pants/pull/15141))

Documentation

* Fix `ProtobufSourcesOverridesField` help message ([15272](https://github.com/pantsbuild/pants/pull/15272))

* Update `help` for python resolves with recent improvements ([15228](https://github.com/pantsbuild/pants/pull/15228))

* Improve cache-related error message to be less confusing ([15202](https://github.com/pantsbuild/pants/pull/15202))

* Show `experimental-bsp` goal in help ([15208](https://github.com/pantsbuild/pants/pull/15208))

* Mention resolve when partitioning Mypy and Pylint ([15172](https://github.com/pantsbuild/pants/pull/15172))

* Don't log set up of binary shims ([15203](https://github.com/pantsbuild/pants/pull/15203))

release_2.11.0rc5

Bug fixes

* Fix issue with Docker publish when using `[docker] tools`. (Cherry pick of 15255) ([15261](https://github.com/pantsbuild/pants/pull/15261))

* Do not lowercase Docker image tags. (Cherry pick of 15254) ([15260](https://github.com/pantsbuild/pants/pull/15260))

* Fix the placement of the pex verbosity args. (Cherry-pick of 15243) ([15249](https://github.com/pantsbuild/pants/pull/15249))

release_2.11.0rc4

User API Changes

* Upgrade Pex to 2.1.80. (Cherry-pick of 15179) ([15180](https://github.com/pantsbuild/pants/pull/15180))

Bug fixes

* golang: add more cache keys based on tool IDs (Cherry-pick of 15205) ([15209](https://github.com/pantsbuild/pants/pull/15209))

* Support poetry wildcard requirements. (Cherry-pick of 15213) ([15214](https://github.com/pantsbuild/pants/pull/15214))

* Fix use of `` in path names (Cherry-pick of 15226) ([15231](https://github.com/pantsbuild/pants/pull/15231))

* Fix lockfile generation for duplicate `jvm_artifact` targets with `jar` fields. (Cherry-pick of 15219) ([15230](https://github.com/pantsbuild/pants/pull/15230))

Documentation

* Don't log set up of binary shims (Cherry-pick of 15203) ([15206](https://github.com/pantsbuild/pants/pull/15206))

* Mention resolve when partitioning Mypy and Pylint (Cherry-pick of 15172) ([15181](https://github.com/pantsbuild/pants/pull/15181))

Performance

* `MyPy` and `Pylint` partition inputs via `CoarsenedTarget` (Cherry-pick of 15141) ([15244](https://github.com/pantsbuild/pants/pull/15244))

release_2.12.0.dev3

New Features

* Address specs for parametrized target templates expand to their created targets ([15126](https://github.com/pantsbuild/pants/pull/15126))

* Implement `publish` goal for Helm charts ([15042](https://github.com/pantsbuild/pants/pull/15042))

* add experimental kotlin backend to distribution ([15109](https://github.com/pantsbuild/pants/pull/15109))

* Support pip-style VCS requirements. ([15097](https://github.com/pantsbuild/pants/pull/15097))

User API Changes

* Upgrade Pex to 2.1.79. ([15125](https://github.com/pantsbuild/pants/pull/15125))

* Ban `terraform_module` referring to subdirectories ([15106](https://github.com/pantsbuild/pants/pull/15106))

Plugin API Changes

* Throw a `DuplicateRuleError` when there are conflicting rules in a module. ([15073](https://github.com/pantsbuild/pants/pull/15073))

* Expose `GitWorktree` as an `rule` ([15030](https://github.com/pantsbuild/pants/pull/15030))

Bug fixes

* Fix Requires-Python for pantsbuild.pants wheel. ([15149](https://github.com/pantsbuild/pants/pull/15149))

* Allow dashes in inferred asset strings ([15123](https://github.com/pantsbuild/pants/pull/15123))

* Fix when the same `python_requirement` defines both type stub and implementation ([15121](https://github.com/pantsbuild/pants/pull/15121))

* Fix missing field check in go protobuf rules ([15105](https://github.com/pantsbuild/pants/pull/15105))

Documentation

* Last round of softwrapping help strings ([15142](https://github.com/pantsbuild/pants/pull/15142))

* Softwrapping a few more files ([15138](https://github.com/pantsbuild/pants/pull/15138))

* Softwrap python backend help strings ([15137](https://github.com/pantsbuild/pants/pull/15137))

release_2.11.0rc3

New Features

* Address specs for parametrized target templates expand to their created targets (Cherry pick of 15126) ([15148](https://github.com/pantsbuild/pants/pull/15148))

User API Changes

* Upgrade Pex to 2.1.79. (Cherry-pick of 15125) ([15129](https://github.com/pantsbuild/pants/pull/15129))

* Ban `terraform_module` referring to subdirectories (Cherry-pick of 15106) ([15122](https://github.com/pantsbuild/pants/pull/15122))

* Enable codegen on relocated files (Cherry-pick of 15100) ([15131](https://github.com/pantsbuild/pants/pull/15131))

Bug fixes

* Clean PID-specific exception file if empty on process exit (15086) ([15113](https://github.com/pantsbuild/pants/pull/15113))

* Allow dashes in inferred asset strings (Cherry-pick of 15123) ([15154](https://github.com/pantsbuild/pants/pull/15154))

* Fix typo in Pylint description (Cherry-pick of 14945) ([15157](https://github.com/pantsbuild/pants/pull/15157))

* Fix when the same `python_requirement` defines both type stub and implementation (Cherry-pick of 15121) ([15127](https://github.com/pantsbuild/pants/pull/15127))

* fix missing field check in go protobuf rules (Cherry pick of 15105) ([15118](https://github.com/pantsbuild/pants/pull/15118))

* files/dirs swapped in Snapshot's repr (Cherry-pick of 15101) ([15114](https://github.com/pantsbuild/pants/pull/15114))

* Preserve tombstones for workunits which complete while they still have children (cherrypick of 15088) ([15103](https://github.com/pantsbuild/pants/pull/15103))

Documentation

* Add some codegen and terraform backends to docs generator (Cherry-pick of 15036) ([15156](https://github.com/pantsbuild/pants/pull/15156))

release_2.12.0.dev2

New Features

* Support for env var interpolation in config files. ([15087](https://github.com/pantsbuild/pants/pull/15087))

* Support for finer control over which Docker images to push. ([15000](https://github.com/pantsbuild/pants/pull/15000))

* Add a helpful hint to `lint` if a formatter fails ([15048](https://github.com/pantsbuild/pants/pull/15048))

* Add support for Helm 3rd party dependencies ([14964](https://github.com/pantsbuild/pants/pull/14964))

User API Changes

* Default `[python].lockfile_generator` to Pex ([15074](https://github.com/pantsbuild/pants/pull/15074))

* Upgrade Pex to 2.1.78. ([15078](https://github.com/pantsbuild/pants/pull/15078))

* terraform: remove `terraform_modules` generator target type ([15035](https://github.com/pantsbuild/pants/pull/15035))

* Upgrade to Pex 2.1.77. ([15015](https://github.com/pantsbuild/pants/pull/15015))

* Change JVM defaults to use Temurin JDK distribution ([15009](https://github.com/pantsbuild/pants/pull/15009))

Plugin API Changes

* Remove deprecated `register_options` support. ([15090](https://github.com/pantsbuild/pants/pull/15090))

* Remove deprecated target generator API affordances. ([15091](https://github.com/pantsbuild/pants/pull/15091))

* Add `rule_helper` decorator, which participates in awaitable collection ([15025](https://github.com/pantsbuild/pants/pull/15025))

Bug fixes

* Enable codegen on relocated files ([15100](https://github.com/pantsbuild/pants/pull/15100))

* Preserve tombstones for workunits which complete while they still have children ([15088](https://github.com/pantsbuild/pants/pull/15088))

* Clean the export dir under dist/ before populating it. ([15068](https://github.com/pantsbuild/pants/pull/15068))

* Do not use a repository-PEX if a PEX has platforms specified ([15031](https://github.com/pantsbuild/pants/pull/15031))

* Fix default layout and use of PEX-repositories for legacy lockfiles ([15014](https://github.com/pantsbuild/pants/pull/15014))

* Pin pytest 7.0.1 ([14997](https://github.com/pantsbuild/pants/pull/14997))

Documentation

* files/dirs swapped in Snapshot's repr ([15101](https://github.com/pantsbuild/pants/pull/15101))

* Tweak deprecation messages. ([15027](https://github.com/pantsbuild/pants/pull/15027))

* Add some codegen and terraform backends to docs generator ([15036](https://github.com/pantsbuild/pants/pull/15036))

* Text in angle brackets needs to be escaped for the docsite. ([15046](https://github.com/pantsbuild/pants/pull/15046))

* Fix presented provider backend for rules/subsystems. ([14999](https://github.com/pantsbuild/pants/pull/14999))

release_2.11.0rc2

User API Changes

* Upgrade Pex to 2.1.78. (Cherry-pick of 15078) ([15079](https://github.com/pantsbuild/pants/pull/15079))

* terraform: remove `terraform_modules` generator target type (Cherry pick of 15035) ([15063](https://github.com/pantsbuild/pants/pull/15063))

Bug fixes

* Clean the export dir under dist/ before populating it. (cherrypick 15068) ([15075](https://github.com/pantsbuild/pants/pull/15075))

* Do not use a repository-PEX if a PEX has platforms specified (cherrypick of 15031) ([15034](https://github.com/pantsbuild/pants/pull/15034))

* Fix default layout and use of PEX-repositories for legacy lockfiles (cherrypick of 15014) ([15032](https://github.com/pantsbuild/pants/pull/15032))

* Pin pytest 7.0.1 (cherrypick of 14997) ([15013](https://github.com/pantsbuild/pants/pull/15013))

Documentation

* Text in angle brackets needs to be escaped for the docsite. (Cherry pick of 15046) ([15056](https://github.com/pantsbuild/pants/pull/15056))

* Fix presented provider backend for rules/subsystems. (Cherry pick of 14999) ([15024](https://github.com/pantsbuild/pants/pull/15024))

release_2.9.2rc0

User API Changes

* Upgrade Pex to 2.1.73. (Cherry-pick of 14875) ([15029](https://github.com/pantsbuild/pants/pull/15029))

Bug fixes

* Fix empty `sys.path` entries causing an error during invalidation glob calculation. (cherrypick of 14819) ([14961](https://github.com/pantsbuild/pants/pull/14961))

release_2.10.1rc0

User API Changes

* Upgrade Pex to 2.1.73. (Cherry-pick of 14875) ([15028](https://github.com/pantsbuild/pants/pull/15028))

Bug fixes

* Do not use a repository-PEX if a PEX has platforms specified (cherrypick of 15031) ([15033](https://github.com/pantsbuild/pants/pull/15033))

* Fix Pylint config check strings (Cherry-pick of 14946) ([14948](https://github.com/pantsbuild/pants/pull/14948))

* add cache key for all Go SDK invocations (Cherry pick of 14897) ([14902](https://github.com/pantsbuild/pants/pull/14902))

Documentation

* Fix presented provider backend for rules/subsystems. (Cherry pick of 14999) ([15023](https://github.com/pantsbuild/pants/pull/15023))

release_2.12.0.dev1

New Features

* Support restricting specific requirements to just wheels or just sdists. ([14985](https://github.com/pantsbuild/pants/pull/14985))

* Add support for Helm unittest ([14849](https://github.com/pantsbuild/pants/pull/14849))

* Add support for parsing address parameters to CLI specs parsing ([14949](https://github.com/pantsbuild/pants/pull/14949))

User API Changes

* Merge list values across config files. ([14850](https://github.com/pantsbuild/pants/pull/14850))

* Write test reports to a standard location under the distdir. ([14929](https://github.com/pantsbuild/pants/pull/14929))

* Upgrade Pex to 2.1.76. ([14992](https://github.com/pantsbuild/pants/pull/14992))

* Upgrade coursier to v2.1.0-M5-18-gfebf9838c ([14978](https://github.com/pantsbuild/pants/pull/14978))

Plugin API Changes

* "Unify" `fmt` and `lint` rules for formatters ([14903](https://github.com/pantsbuild/pants/pull/14903))

* Refactor `prior_formatter_result` and its usage ([14987](https://github.com/pantsbuild/pants/pull/14987))

* Deprecate not implementing `TargetGenerator` in `GenerateTargetsRequest` implementors. ([14959](https://github.com/pantsbuild/pants/pull/14959))

Bug fixes

* add go protobuf backend to init/BUILD ([14979](https://github.com/pantsbuild/pants/pull/14979))

* Fix Pylint config check strings ([14946](https://github.com/pantsbuild/pants/pull/14946))

* Fix missing `check` output by allowing disabled workunits to re-enable themselves ([14934](https://github.com/pantsbuild/pants/pull/14934))

* Fix unrecognized field error and `update-build-files` to handle target generator moved fields ([14847](https://github.com/pantsbuild/pants/pull/14847))

Performance

* Make PEX lockfile subsetting incremental ([14944](https://github.com/pantsbuild/pants/pull/14944))

Documentation

* Don't warn if no relevant targets in glob or --changed. ([14904](https://github.com/pantsbuild/pants/pull/14904))

release_2.11.0rc1

New Features

* Add Protobuf formatting using buf format (Cherry pick of 14907) ([14917](https://github.com/pantsbuild/pa

* Add registration for the Go Protobuf backend (Cherry pick of 14874) ([14900](https://github.com/pantsbuild/pants/pull/14900))

* Restore experimental codegen backends disabled for 2.10 release (Cherry-pick of 14407) ([14932](https://github.com/pantsbuild/pants/pull/14932))

* Add support for parsing address parameters to CLI specs parsing (cherrypick of 14949) ([14957](https://github.com/pantsbuild/pants/pull/14957))

User API Changes

* Upgrade to Pex 2.1.75 for VCS lock support and deadlock fix (Cherry-pick of 14970) ([14976](https://github.com/pantsbuild/pants/pull/14976))

Plugin API Changes

* Deprecate not implementing `TargetGenerator` in `GenerateTargetsRequest` implementors. (cherrypick of 14959) ([14962](https://github.com/pantsbuild/pants/pull/14962))

Bug fixes

* Fix unrecognized field error and `update-build-files` to handle target generator moved fields (Cherry-pick of 14847) ([14930](https://github.com/pantsbuild/pants/pull/14930))

* Fix missing `check` output by allowing disabled workunits to re-enable themselves (cherrypick of 14854, 14856, 14934) ([14942](https://github.com/pantsbuild/pants/pull/14942))

* Upgrade Pex to 2.1.73. (14875) ([14880](https://github.com/pantsbuild/pants/pull/14880))

* Unify glob-matching implementations to fix malformed snapshot created by subsetting (cherrypick of 14889) ([14896](https://github.com/pantsbuild/pants/pull/14896))

* Adds `jvm_jdk` field to protobufs when the Scala backend is enabled (14891) ([14894](https://github.com/pantsbuild/pants/pull/14894))

* add cache key for all Go SDK invocations (Cherry pick of 14897) ([14901](https://github.com/pantsbuild/pants/pull/14901))

* Adds `ClasspathEntryRequest` classification for codegen target generators (14893) ([14895](https://github.com/pantsbuild/pants/pull/14895))

Performance

* Make PEX lockfile subsetting incremental (cherry-pick of 14944) ([14956](https://github.com/pantsbuild/pants/pull/14956))

release_2.9.1

The second stable release of the `2.9.x` series, with no changes since the previous `rc`.

release_2.12.0.dev0

New Features

* Add Protobuf formatting using buf format ([14907](https://github.com/pantsbuild/pants/pull/14907))

* add registration for the Go Protobuf backend ([14874](https://github.com/pantsbuild/pants/pull/14874))

User API Changes

* Remove `--use-deprecated-python-macros` in favor of always using target generators ([14842](https://github.com/pantsbuild/pants/pull/14842))

* Add `django-dotenv`, `django-safedelete` and `factory-boy` to default Python module mapping ([14848](https://github.com/pantsbuild/pants/pull/14848))

* Add cattrs to Python's DEFAULT_MODULE_MAPPING ([14845](https://github.com/pantsbuild/pants/pull/14845))

* hcl parser 3.0.5 ([14878](https://github.com/pantsbuild/pants/pull/14878))

Plugin API Changes

* FmtResult now operates on Snapshots ([14865](https://github.com/pantsbuild/pants/pull/14865))

Bug fixes

* add cache key for all Go SDK invocations ([14897](https://github.com/pantsbuild/pants/pull/14897))

* Unify glob-matching implementations to fix malformed snapshot created by subsetting ([14889](https://github.com/pantsbuild/pants/pull/14889))

* Adds `ClasspathEntryRequest` classification for codegen target generators ([14893](https://github.com/pantsbuild/pants/pull/14893))

* Adds `jvm_jdk` field to protobufs when the Scala backend is enabled ([14891](https://github.com/pantsbuild/pants/pull/14891))

release_2.10.0

The first stable release of the `2.10.x` branch, with no changes since the previous `rc`!

release_2.11.0rc0

New Features

* Generate and compile Go from Protobuf ([14714](https://github.com/pantsbuild/pants/pull/14714))

* Add the ability to infer assets from strings for Python ([14049](https://github.com/pantsbuild/pants/pull/14049))

* Add `[python].lockfile_generator` to allow using Pex for lockfile generation ([14740](https://github.com/pantsbuild/pants/pull/14740))

* Add protobuf linting using Buf with `pants.backend.codegen.protobuf.lint.buf` backend ([14540](https://github.com/pantsbuild/pants/pull/14540))

* Add `run` support to `pyoxidizer_binary` ([14646](https://github.com/pantsbuild/pants/pull/14646))

* Add new `[docker].tools` option ([14361](https://github.com/pantsbuild/pants/pull/14361))

* Add `build_file_dir()` symbol to BUILD files ([14827](https://github.com/pantsbuild/pants/pull/14827))

* Adds `excludes` field to `jvm_artifact` targets ([14715](https://github.com/pantsbuild/pants/pull/14715))

* Basic support for Helm charts ([14658](https://github.com/pantsbuild/pants/pull/14658))

* Support `package` goal for Helm charts ([14797](https://github.com/pantsbuild/pants/pull/14797))

* Python dependency inference supports multiple resolves for first-party targets ([14486](https://github.com/pantsbuild/pants/pull/14486))

* Default the parameters of `parametrize`d dependencies on `parametrize`d targets ([14788](https://github.com/pantsbuild/pants/pull/14788))

* Allow for codegen targets to be used directly by JVM compiler requests ([14751](https://github.com/pantsbuild/pants/pull/14751))

User API Changes

* Update default Python interpreter constraints to not use Python 3.6 ([14803](https://github.com/pantsbuild/pants/pull/14803))

* `python_sources` and `python_tests` target generators no longer impact interpreter constraints calculations ([14821](https://github.com/pantsbuild/pants/pull/14821))

* Target generators (like `python_sources`) now only directly depend on their generated targets ([14766](https://github.com/pantsbuild/pants/pull/14766))

* Deprecate not explicitly setting `[python].lockfile_generator` ([14817](https://github.com/pantsbuild/pants/pull/14817))

* Change default `[python].resolves` from `3rdparty/python/default_lockfile.txt` to `3rdparty/python/default.lock` (Cherry-pick of 14815) ([14818](https://github.com/pantsbuild/pants/pull/14818))

* Swap the order of generated names and parameters in Addresses. ([14814](https://github.com/pantsbuild/pants/pull/14814))

* Rename `_python_requirements_file` target to `_generator_sources_helper` ([14727](https://github.com/pantsbuild/pants/pull/14727))

* Add `SSL_CERT_DIR` and `SSL_CERT_FILE` to the default for `[subprocess-environment].env_vars` ([14808](https://github.com/pantsbuild/pants/pull/14808))

* Upgrade Pex to 2.1.72. ([14795](https://github.com/pantsbuild/pants/pull/14795))

Plugin API Changes

* Deprecate `Subsystem.register_options` in favor of the new attribute-based Option types ([14772](https://github.com/pantsbuild/pants/pull/14772))

* New util rule for isolating binary tools. ([14374](https://github.com/pantsbuild/pants/pull/14374))

Bug fixes

* Fix empty `sys.path` entries causing an error during invalidation glob calculation. ([14819](https://github.com/pantsbuild/pants/pull/14819))

* Fix exclusive spawn mechanism for relative paths and working directories. ([14812](https://github.com/pantsbuild/pants/pull/14812))

* Fix a coverage config rewriting bug. ([14784](https://github.com/pantsbuild/pants/pull/14784))

* golang: fix regression in analysis code ([14733](https://github.com/pantsbuild/pants/pull/14733))

Performance

* Don't restart Pantsd when `requirements.txt` and `pyproject.toml` change if using target generators ([14829](https://github.com/pantsbuild/pants/pull/14829))

* Switch default tool lockfiles to Pex lockfiles for faster installation ([14811](https://github.com/pantsbuild/pants/pull/14811))

* Port `Process` operations to use of `DigestTrie` ([14723](https://github.com/pantsbuild/pants/pull/14723))

Documentation

* Improve REPL multiple resolves error to mention `[python].default_resolve` ([14778](https://github.com/pantsbuild/pants/pull/14778))

* Switch from Aegean Check Mark to Multiplication X ([14764](https://github.com/pantsbuild/pants/pull/14764))

* Improve documentation for `python_test_utils` ([14739](https://github.com/pantsbuild/pants/pull/14739))

release_2.10.0rc5

User API Changes

* Change default `[python].resolves` from `3rdparty/python/default_lockfile.txt` to `3rdparty/python/default.lock` ([14815](https://github.com/pantsbuild/pants/pull/14815))

Bug fixes

* Fix exclusive spawn mechanism for relative paths and working directories. (cherrypick of 14812) ([14816](https://github.com/pantsbuild/pants/pull/14816))

* Fix a coverage config rewriting bug. (cherrypick of 14784) ([14785](https://github.com/pantsbuild/pants/pull/14785))

* Fix empty sys.path entries causing an error during invalidation glob calculation. (cherrypick of 14819) ([14822](https://github.com/pantsbuild/pants/pull/14822))

Performance

* Don't restart Pantsd when `requirements.txt` and `pyproject.toml` change if using target generators (Cherry-pick of 14829) ([14831](https://github.com/pantsbuild/pants/pull/14831))

release_2.9.1rc2

Bug fixes

* Upgrade Pex to 2.1.71, which fixes issues installing some PEXes. (Cherry-pick of 14768) ([14770](https://github.com/pantsbuild/pants/pull/14770))

release_2.10.0rc4

New Features

* Python dependency inference supports multiple resolves for first-party targets (Cherry-pick of 14486) ([14765](https://github.com/pantsbuild/pants/pull/14765))

Bug fixes

* Upgrade Pex to 2.1.71, which fixes issues installing some PEXes. (14768) ([14769](https://github.com/pantsbuild/pants/pull/14769))

Documentation

* Update `[python]` docs with updates to the resolves feature ([14775](https://github.com/pantsbuild/pants/pull/14775))

* Switch from Aegean Check Mark to Multiplication X (Cherry-pick of 14764) ([14767](https://github.com/pantsbuild/pants/pull/14767))

* Improve documentation for `python_test_utils` (Cherry-pick of 14739) ([14748](https://github.com/pantsbuild/pants/pull/14748))

* Improve REPL multiple resolves error to mention [python].default_resolve (Cherry-pick of 14778) ([14780](https://github.com/pantsbuild/pants/pull/14780))

release_2.9.1rc1

User API Changes

* Upgrade Pex to 2.1.70. (14700) ([14704](https://github.com/pantsbuild/pants/pull/14704))

Bug fixes

* Fix dropped output race during UI teardown (cherrypick of 14093) ([14690](https://github.com/pantsbuild/pants/pull/14690))

release_2.10.0rc3

New Features

* Add `[python].resolves_generate_lockfiles` to enable multiple resolves but with manual generation of lockfiles (Cherry-pick of 14675) ([14706](https://github.com/pantsbuild/pants/pull/14706))

* Add `python_resolve` field to `protobuf_source` and `thrift_source` to support multiple resolves with codegen ([14693](https://github.com/pantsbuild/pants/pull/14693))

User API Changes

* Deprecate `[python-protobuf].runtime_dependencies` in favor of Pants discovering the dependency ([14691](https://github.com/pantsbuild/pants/pull/14691))

* Move `--memory-summary` to `--stats-memory-summary` (Cherry-pick of 14652) ([14655](https://github.com/pantsbuild/pants/pull/14655))

* Upgrade Pex to 2.1.70. (14700) ([14703](https://github.com/pantsbuild/pants/pull/14703))

Bug fixes

* Fix address parse bug in `update-build-files --fix-python-macros`. (Cherry-pick of 14485) ([14696](https://github.com/pantsbuild/pants/pull/14696))

* Don't show no-op regex-lint output. (Cherry-pick of 14656) ([14671](https://github.com/pantsbuild/pants/pull/14671))

* Invalidate Go cache when Go version changes (Cherry-pick of 14661) ([14672](https://github.com/pantsbuild/pants/pull/14672))

Performance

* Reduce memory usage by interning Tasks and RuleGraph entries. (cherrypick of 14683) ([14689](https://github.com/pantsbuild/pants/pull/14689))

release_2.11.0.dev3

New Features

* Add `[python].resolves_generate_lockfiles` to enable multiple resolves but with manual generation of lockfiles ([14675](https://github.com/pantsbuild/pants/pull/14675))

* Add `python_resolve` field to `protobuf_source` and `thrift_source` to support multiple resolves with codegen ([14698](https://github.com/pantsbuild/pants/pull/14698))

* JVM: add war file packaging ([13888](https://github.com/pantsbuild/pants/pull/13888))

* Improve `export` to include pip in the venv. ([14640](https://github.com/pantsbuild/pants/pull/14640))

User API Changes

* Remove `[python-protobuf].runtime_dependencies` in favor of Pants discovering the dependency ([14695](https://github.com/pantsbuild/pants/pull/14695))

* Upgrade Pex to 2.1.70. ([14700](https://github.com/pantsbuild/pants/pull/14700))

Plugin API Changes

* Add `SkipOption` and improve `ArgsListOption` ([14660](https://github.com/pantsbuild/pants/pull/14660))

* Move `BinaryPath` and `BashBinary` from `pants.engine.process` to `pants.core.util_rules.system_binaries` ([14629](https://github.com/pantsbuild/pants/pull/14629))

Bug fixes

* Fix rendering of "Scheduling: ..." workunits introduced by workunit filtering. ([14681](https://github.com/pantsbuild/pants/pull/14681))

* Give interactive processes a chance to gracefully shutdown ([14580](https://github.com/pantsbuild/pants/pull/14580))

* Don't show no-op regex-lint output. ([14656](https://github.com/pantsbuild/pants/pull/14656))

* Go: introduce cache key for compile actions ([14661](https://github.com/pantsbuild/pants/pull/14661))

* Go: Properly disable CGo ([14623](https://github.com/pantsbuild/pants/pull/14623))

Performance

* Add support for rendering a summary of objects held by the graph ([14638](https://github.com/pantsbuild/pants/pull/14638))

* Reduce memory usage by interning Tasks and RuleGraph entries. ([14683](https://github.com/pantsbuild/pants/pull/14683))

* Skip capture of `TRACE` workunits by default ([13483](https://github.com/pantsbuild/pants/pull/13483))

release_2.10.0rc2

New Features

* New `--docker-build-verbose` option to print build output to the console. (Cherry pick of 14557) ([14597](https://github.com/pantsbuild/pants/pull/14597))

* Support include_requirements & complete_platforms for `python_awslambda`. (Cherry-picks of 14532 & 14469) ([14533](https://github.com/pantsbuild/pants/pull/14533))

* Support complete_platforms for Python GCFs. (14530) ([14531](https://github.com/pantsbuild/pants/pull/14531))

* Plumb Pex's `--complete-platform` for pex_binary. (14526) ([14528](https://github.com/pantsbuild/pants/pull/14528))

User API Changes

* Add `output_path` field to `pyoxidizer_binary` and change its default destination (Cherry-pick of 14607) ([14611](https://github.com/pantsbuild/pants/pull/14611))

* Upgrade Pex to 2.1.67. (Cherry-pick of 14544) ([14546](https://github.com/pantsbuild/pants/pull/14546))

Bug fixes

* Fix `pyoxidizer_binary` to support `python_distribution` targets that depend on others (cherry-pick of 14620) ([14626](https://github.com/pantsbuild/pants/pull/14626))

* Coursier caches are now determined by `-repos` configuration (14603) ([14606](https://github.com/pantsbuild/pants/pull/14606))

* Fix PyOxidizer to write to `~/.cache/pants` by using a named cache (Cherry-pick of 14582) ([14590](https://github.com/pantsbuild/pants/pull/14590))

* adds `--no-default` to Coursier args so that we only use user-configured maven repos (14581) ([14584](https://github.com/pantsbuild/pants/pull/14584))

* Fix PyOxidizer depending on `python_distribution` with `sdist=True` (Cherry-pick of 14394) ([14568](https://github.com/pantsbuild/pants/pull/14568))

* Avoid duplicated deprecation warnings by memoization. (Cherry-pick of 14511) ([14553](https://github.com/pantsbuild/pants/pull/14553))

* Fix coverage base global report creation bug (cherypick of 14547) ([14549](https://github.com/pantsbuild/pants/pull/14549))

Performance

* Add support for rendering a summary of objects held by the graph (cherrypick of 14638) ([14644](https://github.com/pantsbuild/pants/pull/14644))

* Shortcircuit source subsetting if there are no distributions. (cherrypick of 14564) ([14566](https://github.com/pantsbuild/pants/pull/14566))

* Calculate local distribution contents once per distribution (cherrypick of 14551) ([14555](https://github.com/pantsbuild/pants/pull/14555))

Documentation

* Rewrite `help` for `dependencies` field to mention generated targets (Cherry-pick of 14621) ([14627](https://github.com/pantsbuild/pants/pull/14627))

* Don't leak local paths into generated docs. (cherrypick 14591) ([14592](https://github.com/pantsbuild/pants/pull/14592))

* Add disclaimer about `[python].enable_resolves` and lockfile generation (Cherry-pick of 14475) ([14479](https://github.com/pantsbuild/pants/pull/14479))

release_2.9.1rc0

User API Changes

* Upgrade Pex to 2.1.65. (Cherry-pick of 14256) ([14617](https://github.com/pantsbuild/pants/pull/14617))

Bug fixes

* Fix coverage base global report creation bug. (cherrypick of 14547) ([14550](https://github.com/pantsbuild/pants/pull/14550))

* Fix executability of materialized files for non-owners. (cherrypick of 14298) ([14308](https://github.com/pantsbuild/pants/pull/14308))

* Fix bad default module mapping for PyMongo (Cherry-pick of 14284) ([14285](https://github.com/pantsbuild/pants/pull/14285))

* Fix complex `__import__` statements failing to parse with Python 2.7 - 3.7 (Cherry-pick of 14232) ([14233](https://github.com/pantsbuild/pants/pull/14233))

Performance

* add timeout for remote cache lookups (cherry-pick of 14224) ([14226](https://github.com/pantsbuild/pants/pull/14226))

Documentation

* Rewrite `help` for `dependencies` field to mention generated targets (Cherry-pick of 14621) ([14628](https://github.com/pantsbuild/pants/pull/14628))

* Don't leak local paths into generated docs. (cherrypick 14591) ([14593](https://github.com/pantsbuild/pants/pull/14593))

* Add some missing backends to generated docs (Cherry-pick of 14290) ([14292](https://github.com/pantsbuild/pants/pull/14292))

release_2.11.0.dev2

New Features

* New `--docker-build-verbose` option to print build output to the console. ([14557](https://github.com/pantsbuild/pants/pull/14557))

User API Changes

* Add `output_path` field to `pyoxidizer_binary` and change its default destination ([14607](https://github.com/pantsbuild/pants/pull/14607))

* Upgrade `terraform-hcl2-parser` to version 3.0.3 ([14554](https://github.com/pantsbuild/pants/pull/14554))

Plugin API Changes

* Rename `pants.python.binares` to `pants.core.subsystems.python_bootstrap` ([14613](https://github.com/pantsbuild/pants/pull/14613))

* Add `PythonToolBase.to_pex_request()` to DRY tool installation ([14610](https://github.com/pantsbuild/pants/pull/14610))

* Move `PythonBinary` from `python.binaries` to `core.util_rules.system_binaries` ([14609](https://github.com/pantsbuild/pants/pull/14609))

* Add `core/util_rules/system_binaries.py` and relocate `archive.py` types like `UnzipBinary` to it ([14601](https://github.com/pantsbuild/pants/pull/14601))

Bug fixes

* Show a helpful error message if a 3rdparty jar isn't available. ([14595](https://github.com/pantsbuild/pants/pull/14595))

* Fix `pyoxidizer_binary` to support `python_distribution` targets that depend on others ([14620](https://github.com/pantsbuild/pants/pull/14620))

* Coursier caches are now determined by `-repos` configuration ([14603](https://github.com/pantsbuild/pants/pull/14603))

* adds `--no-default` to Coursier args so that we only use user-configured maven repos ([14581](https://github.com/pantsbuild/pants/pull/14581))

Performance

* Fix PyOxidizer to write to `~/.cache/pants` by using a named cache ([14582](https://github.com/pantsbuild/pants/pull/14582))

Documentation

* Rewrite `help` for `dependencies` field to mention generated targets ([14621](https://github.com/pantsbuild/pants/pull/14621))

* Don't leak local paths into generated docs. ([14591](https://github.com/pantsbuild/pants/pull/14591))

release_2.11.0.dev1

New Features

* Support for `file`/`files` in JVM tests ([14537](https://github.com/pantsbuild/pants/pull/14537))

* Support complete_platforms for `python_awslambda`. ([14532](https://github.com/pantsbuild/pants/pull/14532))

* Support complete_platforms for Python GCFs. ([14530](https://github.com/pantsbuild/pants/pull/14530))

* Properly support filesystem specs in the `paths` goal. ([14518](https://github.com/pantsbuild/pants/pull/14518))

* Plumb Pex's `--complete-platform` for pex_binary. ([14526](https://github.com/pantsbuild/pants/pull/14526))

* Adds the plugin names field to scala sources ([14508](https://github.com/pantsbuild/pants/pull/14508))

* jvm: teach dependency inference about multiple resolves ([14491](https://github.com/pantsbuild/pants/pull/14491))

* scala: add implicit dependency on scala-library ([14450](https://github.com/pantsbuild/pants/pull/14450))

* py_awslambda: pass through `include_requirements:bool` to `pex_binary` ([14469](https://github.com/pantsbuild/pants/pull/14469))

User API Changes

* Upgrade Pex to 2.1.67. ([14544](https://github.com/pantsbuild/pants/pull/14544))

* Create per-parametrization aliases for generator targets ([14529](https://github.com/pantsbuild/pants/pull/14529))

* Per-resolve scala plugins ([14497](https://github.com/pantsbuild/pants/pull/14497))

Plugin API Changes

* Replace `GoalSubsystem.required_union_implementations` with `GoalSubsystem.activated()` ([14313](https://github.com/pantsbuild/pants/pull/14313))

* Add dynamic help ([14543](https://github.com/pantsbuild/pants/pull/14543))

* Add global counters, and deprecate per-workunit counters. ([14541](https://github.com/pantsbuild/pants/pull/14541))

Bug fixes

* Fix PyOxidizer depending on `python_distribution` with `sdist=True` (14394)

* Fix coverage base global report creation bug. ([14547](https://github.com/pantsbuild/pants/pull/14547))

* Tests scala local plugins, and makes it work properly on `scala_sources` targets ([14512](https://github.com/pantsbuild/pants/pull/14512))

* Allow use of `parametrize` with the `jdk=` field of JVM targets ([14510](https://github.com/pantsbuild/pants/pull/14510))

* Fix address parse bug in `update-build-files --fix-python-macros`. ([14485](https://github.com/pantsbuild/pants/pull/14485))

Performance

* Shortcircuit source subsetting if there are no distributions. ([14564](https://github.com/pantsbuild/pants/pull/14564))

* Calculate local distribution contents once per distribution ([14551](https://github.com/pantsbuild/pants/pull/14551))

Documentation

* Fix the incompatible resolve error message to include the entire checked set of targets. ([14525](https://github.com/pantsbuild/pants/pull/14525))

* Add disclaimer about `[python].enable_resolves` and lockfile generation ([14475](https://github.com/pantsbuild/pants/pull/14475))

release_2.10.0rc1

New Features

* Improve `export` goal to handle multiple Python resolves (Cherry-pick of 14436) ([14454](https://github.com/pantsbuild/pants/pull/14454))

User API Changes

* `python_requirement` uses `resolve: str` field, not `compatible_resolves: list[str]` (Cherry-pick of 14420) ([14435](https://github.com/pantsbuild/pants/pull/14435))

* Migrate the Docker context tags version from `<stage>.tag` to `tags.<stage>`. (Cherry-pick of 14376) ([14403](https://github.com/pantsbuild/pants/pull/14403))

Bug fixes

* Fix handling of Go version for third-party packages (Cherry-pick of 14457) ([14459](https://github.com/pantsbuild/pants/pull/14459))

* Fix issue picking up base image tag from Dockerfile with a digest present. (Cherry-pick of 14447) ([14456](https://github.com/pantsbuild/pants/pull/14456))

* Make sure `[python].enable_resolves = false` disables checking for valid resolves (Cherry-pick of 14418) ([14439](https://github.com/pantsbuild/pants/pull/14439))

* Fix `pants_requirements` target generator to use resolves (Cherry-pick of 14417) ([14423](https://github.com/pantsbuild/pants/pull/14423))

* Fix `tailor` when `--use-deprecated-python-macros=false` (Cherry-pick of 14404) ([14424](https://github.com/pantsbuild/pants/pull/14424))

release_2.11.0.dev0

New Features

* Add support for long_description_path field in python_distribution ([14448](https://github.com/pantsbuild/pants/pull/14448))

* Improve `export` goal to handle multiple Python resolves ([14436](https://github.com/pantsbuild/pants/pull/14436))

* Add support for multiple compile/testing JDKs ([14421](https://github.com/pantsbuild/pants/pull/14421))

* Add initial support for a `parametrize` builtin to generate multiple copies of a target ([14408](https://github.com/pantsbuild/pants/pull/14408))

* scala: support multiple scala versions ([14425](https://github.com/pantsbuild/pants/pull/14425))

User API Changes

* Remove support for JSON-encoded JVM lockfiles. ([14458](https://github.com/pantsbuild/pants/pull/14458))

* Remove deprecated `<stage>.tag` version values. ([14453](https://github.com/pantsbuild/pants/pull/14453))

* Remove deprecated `[scala] version` option. ([14455](https://github.com/pantsbuild/pants/pull/14455))

* Replace `compatible_resolves` with `resolve` for JVM targets ([14441](https://github.com/pantsbuild/pants/pull/14441))

* `python_requirement` uses `resolve: str` field, not `compatible_resolves: list[str]` ([14420](https://github.com/pantsbuild/pants/pull/14420))

* Remove options, goals, and backends deprecated in Pants 2.10 ([14396](https://github.com/pantsbuild/pants/pull/14396))

* Migrate the Docker context tags version from `<stage>.tag` to `tags.<stage>`. ([14376](https://github.com/pantsbuild/pants/pull/14376))

* Default to `use_deprecated_python_macros = false` and deprecate the option ([14399](https://github.com/pantsbuild/pants/pull/14399))

Plugin API Changes

* Adding DictOptions and WorkspacePathOption to the declarative options ([14433](https://github.com/pantsbuild/pants/pull/14433))

* More declarative target generators for plugins ([14377](https://github.com/pantsbuild/pants/pull/14377))

Bug fixes

* Fix handling of Go version for third-party packages ([14457](https://github.com/pantsbuild/pants/pull/14457))

* Fix issue picking up base image tag from Dockerfile with a digest present. ([14447](https://github.com/pantsbuild/pants/pull/14447))

* Make sure `[python].enable_resolves = false` disables checking for valid resolves ([14418](https://github.com/pantsbuild/pants/pull/14418))

* Fix `pants_requirements` target generator to use resolves ([14417](https://github.com/pantsbuild/pants/pull/14417))

* Fix `tailor` when `--use-deprecated-python-macros=false` ([14404](https://github.com/pantsbuild/pants/pull/14404))

Documentation

* `help` command reminds users about `help-advanced` ([14402](https://github.com/pantsbuild/pants/pull/14402))

release_2.10.0rc0

New Features

* Add `--fmt-only`, `--check-only`, and `--lint-only` ([14356](https://github.com/pantsbuild/pants/pull/14356))

* Add support for building PyOxidizer apps ([14183](https://github.com/pantsbuild/pants/pull/14183))

* Adds `run` support for `deploy_jar` targets ([14352](https://github.com/pantsbuild/pants/pull/14352))

* New `[docker].executable_search_paths` option. ([14360](https://github.com/pantsbuild/pants/pull/14360))

* Support Go 1.18 fuzz test targets ([14357](https://github.com/pantsbuild/pants/pull/14357))

* Validate Python user lockfiles & improve tool lockfile error message ([14353](https://github.com/pantsbuild/pants/pull/14353))

* Allow using Yapf with `update-build-files` rather than Black ([14378](https://github.com/pantsbuild/pants/pull/14378))

* Graduate Thrift Python support to be stable with `pants.backend.codegen.thrift.apache.python` ([14389](https://github.com/pantsbuild/pants/pull/14389))

User API Changes

* Graduate Docker backend from experimental status. ([14310](https://github.com/pantsbuild/pants/pull/14310))

* Graduate the Dockerfile linter Hadolint from experimental status. ([14311](https://github.com/pantsbuild/pants/pull/14311))

* Merge `validate` goal with `lint` goal ([14102](https://github.com/pantsbuild/pants/pull/14102))

* Rename Python resolve options and fields to not say "experimental" ([14326](https://github.com/pantsbuild/pants/pull/14326))

* Add Thrift, Protobuf, Java, and Scala folders to default for `[source].root_patterns` ([14363](https://github.com/pantsbuild/pants/pull/14363))

* Rename the `download-pex-bin` scope to `pex-cli`. ([14344](https://github.com/pantsbuild/pants/pull/14344))

* Upgrade default Black version to 22.1.0 ([14324](https://github.com/pantsbuild/pants/pull/14324))

* Upgrade default Pytest version to 7 ([14380](https://github.com/pantsbuild/pants/pull/14380))

Plugin API Changes

* Rename `LintRequest` to `LintTargetsRequest` ([14312](https://github.com/pantsbuild/pants/pull/14312))

* New (optional) API for MyPy-friendly options registration ([14331](https://github.com/pantsbuild/pants/pull/14331))

* Remove `PexFromTargetsRequest.additional_requirements` ([14350](https://github.com/pantsbuild/pants/pull/14350))

* `ReplImplementation` now passes root targets, not transitive closure ([14323](https://github.com/pantsbuild/pants/pull/14323))

* `LintRequest`, `FmtRequest`, and `CheckRequest` must set `name: ClassVar[str]` ([14304](https://github.com/pantsbuild/pants/pull/14304))

Bug fixes

* Warn when `[python-protobuf].runtime_dependencies` needs to use new target generator syntax ([14391](https://github.com/pantsbuild/pants/pull/14391))

* Fix native cycle detection error message. ([14381](https://github.com/pantsbuild/pants/pull/14381))

* Fix import parsing regression ([14349](https://github.com/pantsbuild/pants/pull/14349))

* Include link dest in symlink error. ([14384](https://github.com/pantsbuild/pants/pull/14384))

Performance

* Lazy load help info ([14305](https://github.com/pantsbuild/pants/pull/14305))

Documentation

* Standardize how we reference formatters, linters, and checkers in goal summary ([14355](https://github.com/pantsbuild/pants/pull/14355))

* Don't enumerate deprecated scopes in help. ([14345](https://github.com/pantsbuild/pants/pull/14345))

* Don't render skipped tools in final summary with `fmt`, `lint`, `check`, and `test` ([14303](https://github.com/pantsbuild/pants/pull/14303))

release_2.10.0.dev3

New Features

* Support multiple disjoint Python resolves via `[python].experimental_resolves` ([14299](https://github.com/pantsbuild/pants/pull/14299))

* Optionally render the `--dynamic-ui` with Prodash ([14221](https://github.com/pantsbuild/pants/pull/14221))

* Add `context_root` field to `docker_image` and `default_context_root` option to `[docker]` scope. ([14165](https://github.com/pantsbuild/pants/pull/14165))

User API Changes

* Deprecate `generate-user-lockfile` and `[python].experimental_lockfile` in favor of `[python].experimental_resolves` ([14288](https://github.com/pantsbuild/pants/pull/14288))

* Bump versions & regenerate lockfiles for several Python tools, including Twine, PyUpgrade, and MyPy Protobuf ([14277](https://github.com/pantsbuild/pants/pull/14277))

* Upgrade Pex to 2.1.65. ([14256](https://github.com/pantsbuild/pants/pull/14256))

Plugin API Changes

* Remove `PexFromTargetsRequest(direct_deps_only: bool)` ([14291](https://github.com/pantsbuild/pants/pull/14291))

* Rename `GenerateToolLockfileSentinel.options_scope` to `resolve_name` ([14231](https://github.com/pantsbuild/pants/pull/14231))

* Rename `PythonModule` to `PythonModuleOwnersRequest` ([14276](https://github.com/pantsbuild/pants/pull/14276))

Bug fixes

* Fix plugin resolution running twice. ([14294](https://github.com/pantsbuild/pants/pull/14294))

* Fix Pylint to consider transitive third-party dependencies ([14289](https://github.com/pantsbuild/pants/pull/14289))

* Fix bad default module mapping for PyMongo ([14284](https://github.com/pantsbuild/pants/pull/14284))

* go: filter out `vendor` directories in tailor ([14259](https://github.com/pantsbuild/pants/pull/14259))

* Fix packaged file names for `pex_binaries` target generator ([14269](https://github.com/pantsbuild/pants/pull/14269))

* Cap number of UI bars to terminal height ([14228](https://github.com/pantsbuild/pants/pull/14228))

* Fix executability of materialized files for non-owners. ([14298](https://github.com/pantsbuild/pants/pull/14298))

Performance

* Dynamically choose per-process concurrency for supported processes ([14184](https://github.com/pantsbuild/pants/pull/14184))

Documentation

* Add some missing backends to generated docs ([14290](https://github.com/pantsbuild/pants/pull/14290))

release_2.10.0.dev2

New Features

* JVM lockfile invalidation headers and verification ([14185](https://github.com/pantsbuild/pants/pull/14185))

* Add new `api-types` help goal ([14081](https://github.com/pantsbuild/pants/pull/14081))

* Add line numbers to `--unowned-dependency-behavior` errors ([14169](https://github.com/pantsbuild/pants/pull/14169))

* Add Flake8 first-party plugin support ([14027](https://github.com/pantsbuild/pants/pull/14027))

* add runtime dependencies field for Apache Thrift for Python ([14158](https://github.com/pantsbuild/pants/pull/14158))

* Add `pants: no-infer-dep` pragma for ignoring imports ([14059](https://github.com/pantsbuild/pants/pull/14059) and [#14225](https://github.com/pantsbuild/pants/pull/14225))

* Add local `.pants.rc` support ([14142](https://github.com/pantsbuild/pants/pull/14142))

* thrift: add scrooge java backend ([14043](https://github.com/pantsbuild/pants/pull/14043))

* add Avro codegen support for Java ([13990](https://github.com/pantsbuild/pants/pull/13990))

User API Changes

* add timeout for remote cache lookups ([14224](https://github.com/pantsbuild/pants/pull/14224))

* Replace `coursier-resolve` goal with `generate-lockfiles` ([14211](https://github.com/pantsbuild/pants/pull/14211))

* Replace `jvm-generate-lockfiles` goal with `generate-lockfiles` ([14176](https://github.com/pantsbuild/pants/pull/14176))

* Deprecate `sourcefile-validation` in favor of `regex-lint` ([14173](https://github.com/pantsbuild/pants/pull/14173))

* Deprecate `python_requirements` and `poetry_requirements` using old macro in favor of target generation ([14075](https://github.com/pantsbuild/pants/pull/14075))

* Add try/except parsing to import_parser to avoid failing strict checks for optional imports ([14216](https://github.com/pantsbuild/pants/pull/14216))

* Don't error on string imports with `[python-infer].unowned_dependency_behavior` ([14179](https://github.com/pantsbuild/pants/pull/14179))

Plugin API Changes

* Remove per-language indirection for formatter plugins. ([14166](https://github.com/pantsbuild/pants/pull/14166))

Bug fixes

* Fix complex `__import__` statements failing to parse with Python 2.7 - 3.7 ([14232](https://github.com/pantsbuild/pants/pull/14232))

* `LockfileMetadata` - Replace flaky `_header_dict()` mechanism with more robust `header_attrs` mechanism ([14229](https://github.com/pantsbuild/pants/pull/14229))

* More accurate reported runtime when `pantsd` is in use. ([14177](https://github.com/pantsbuild/pants/pull/14177))

* Fix Pylint to run on transitive dependencies to avoid underreporting issues ([13918](https://github.com/pantsbuild/pants/pull/13918))

* [Docker] Fix bug when a putative target address did not exist. ([14125](https://github.com/pantsbuild/pants/pull/14125))

* Fix immutable inputs DCL bug. ([14016](https://github.com/pantsbuild/pants/pull/14016))

Performance

* Batching of `lint` and `fmt` invokes ([14186](https://github.com/pantsbuild/pants/pull/14186))

Documentation

* [Doc] Include backend source for goals, subsystems and targets in generated docsite. ([14126](https://github.com/pantsbuild/pants/pull/14126))

release_2.9.0

The first stable release of the `2.9.x` series, with no changes since the previous `rc`!

release_2.9.0rc6

Bug fixes

* [Docker] Fix bug when a putative target address did not exist. (14125) ([14131](https://github.com/pantsbuild/pants/pull/14131))

release_2.9.0rc5

Bug fixes

* Hook up Scalafmt and Google Java Format to `./pants lint` (cherrypick of 14108) ([14117](https://github.com/pantsbuild/pants/pull/14117))

* Reduce output from `scalafmt`, and lower reflective access option threshold for Google Java Format. (cherrypick of 14109) ([14118](https://github.com/pantsbuild/pants/pull/14118))

release_2.10.0.dev1

New Features

* JVM Resources support ([13908](https://github.com/pantsbuild/pants/pull/13908))

* Expose Docker build context hash for image tag interpolation. ([13959](https://github.com/pantsbuild/pants/pull/13959))

* Add Thrift IDL codegen using Apache Thrift for Python and Java and Scrooge for Scala ([13987](https://github.com/pantsbuild/pants/pull/13987))

* Add new `image_labels` field to `docker_image`. ([13973](https://github.com/pantsbuild/pants/pull/13973))

User API Changes

* Deprecate `[validate].detail_level` in favor of `[sourcefile-validation].detail_level` ([14103](https://github.com/pantsbuild/pants/pull/14103))

* Upgrade Hadolint (dockerfile linter) to from 2.6.0 to 2.8.0 ([14110](https://github.com/pantsbuild/pants/pull/14110))

* Change third party module mapping to consider resolves ([14034](https://github.com/pantsbuild/pants/pull/14034))

Plugin API Changes

* Fix `rule` effect validation for `not cacheable` types. ([14069](https://github.com/pantsbuild/pants/pull/14069))

* Allow plugins to use range requirements by applying constraints to plugin resolution ([14058](https://github.com/pantsbuild/pants/pull/14058))

Bug fixes

* Reduce output from `scalafmt`, and lower reflective access option threshold for Google Java Format. ([14109](https://github.com/pantsbuild/pants/pull/14109))

* Hook up Scalafmt and Google Java Format to `./pants lint` ([14108](https://github.com/pantsbuild/pants/pull/14108))

* Fix `validate` goal crashing if not configured ([14104](https://github.com/pantsbuild/pants/pull/14104))

* Fix dropped output race during UI teardown ([14093](https://github.com/pantsbuild/pants/pull/14093))

* Fix incorrectly setting `name` on `python_requirements` macro ([14065](https://github.com/pantsbuild/pants/pull/14065))

* [jvm] Use appropriate coordinate serialization for Coursier CLI inputs. ([14038](https://github.com/pantsbuild/pants/pull/14038))

* Fix `.pyi` type stubs to show up in `python_distribution` ([14033](https://github.com/pantsbuild/pants/pull/14033))

* Fix file sources codegen for the Docker build context. ([14024](https://github.com/pantsbuild/pants/pull/14024))

* [jvm] Parse maven coordinates using regular expression ([14010](https://github.com/pantsbuild/pants/pull/14010))

* [jvm] Fix use of multiple scalac plugins when one plugin has multiple classpath entries ([14012](https://github.com/pantsbuild/pants/pull/14012))

Documentation

* Include provider info in help output for subsystems and target types. ([13993](https://github.com/pantsbuild/pants/pull/13993))

* Fix help strings which were accidentally tuples, and add a validation. ([14057](https://github.com/pantsbuild/pants/pull/14057))

release_2.9.0rc4

New Features

* JVM Resources support (cherrypick of 13908) ([14088](https://github.com/pantsbuild/pants/pull/14088))

release_2.9.0rc3

Bug fixes

* Fix incorrectly setting `name` on `python_requirements` macro (Cherry-pick of 14065) ([14067](https://github.com/pantsbuild/pants/pull/14067))

* Fix help strings which were accidentally tuples, and add a validation. (cherrypick of 14057) ([14068](https://github.com/pantsbuild/pants/pull/14068))

release_2.8.1rc2

Bug fixes

* Fix `.pyi` type stubs to show up in `python_distribution` (cherrypick of 14033) ([14036](https://github.com/pantsbuild/pants/pull/14036))

* Fix bug when `docker push`ing multiple tags. (cherrypick of 13764) ([14042](https://github.com/pantsbuild/pants/pull/14042))

* Fix `--log-levels-by-target` not working for logs from Python code (Cherry-pick of 13939) ([13941](https://github.com/pantsbuild/pants/pull/13941))

* Fix `tailor` not setting the `name` field (Cherry-pick of 13913) ([13923](https://github.com/pantsbuild/pants/pull/13923))

* Fix `.pyi` files not automatically depending on `__init__.py` (Cherry-pick of 13844) ([13858](https://github.com/pantsbuild/pants/pull/13858))

release_2.9.0rc2

New Features

* Add duration and cache source to test output. (cherrypick of 13889) ([14002](https://github.com/pantsbuild/pants/pull/14002))

* Support Docker build target stage (Cherry pick of 13956) ([13997](https://github.com/pantsbuild/pants/pull/13997))

* Support `test --debug` with scalatest and junit. (cherrypick of 13958 and 13966) ([14000](https://github.com/pantsbuild/pants/pull/14000))

* Docker context troubleshooter (Cherry pick of 13896) ([13953](https://github.com/pantsbuild/pants/pull/13953))

User API Changes

* Upgrade to Pex 2.1.61 and use `--venv` copies. (Cherry pick of 13979) ([13980](https://github.com/pantsbuild/pants/pull/13980))

Bug fixes

* Fix `.pyi` type stubs to show up in `python_distribution` (cherrypick of 14033) ([14035](https://github.com/pantsbuild/pants/pull/14035))

* Restore the `pants` namespace package. (Cherry picked from 13972) ([13977](https://github.com/pantsbuild/pants/pull/13977))

* Fix deprecated `[python-setup].interpreter_search_paths` and `[pex].bootstrap_interpreter_names` not working ([14009](https://github.com/pantsbuild/pants/pull/14009))

* Fix file sources codegen for the Docker build context. (Cherry pick of 14024) ([14025](https://github.com/pantsbuild/pants/pull/14025))

* [jvm] Use appropriate coordinate serialization for Coursier CLI inputs. (cherrypick of 14038) ([14046](https://github.com/pantsbuild/pants/pull/14046))

* [jvm] Parse maven coordinates using regular expression (cherrypick of 14010) ([14015](https://github.com/pantsbuild/pants/pull/14015))

* [jvm] Fix parsing of `Coursier` report coordinates when `packaging` is reported. (cherrypick of 13996) ([13998](https://github.com/pantsbuild/pants/pull/13998))

* [jvm] Fix use of multiple scalac plugins when one plugin has multiple classpath entries (cherrypick of 14012) ([14014](https://github.com/pantsbuild/pants/pull/14014))

release_2.10.0.dev0

New Features

* Add duration and cache source to test output. ([13889](https://github.com/pantsbuild/pants/pull/13889))

* Add `pex_binaries` target generator ([13910](https://github.com/pantsbuild/pants/pull/13910))

* Support Docker build target stage ([13956](https://github.com/pantsbuild/pants/pull/13956))

* Add `ssh` field to `docker_image`. ([13957](https://github.com/pantsbuild/pants/pull/13957))

* Docker `FROM` target dep inference ([13921](https://github.com/pantsbuild/pants/pull/13921))

* Docker context troubleshooter ([13896](https://github.com/pantsbuild/pants/pull/13896))

* java: add protobuf code generation support using `protoc` ([13989](https://github.com/pantsbuild/pants/pull/13989))

* Support `test --debug` with scalatest and junit. ([13966](https://github.com/pantsbuild/pants/pull/13966))

User API Changes

* Update shellcheck default version to v0.8.0 ([13983](https://github.com/pantsbuild/pants/pull/13983))

* Upgrade to Pex 2.1.61 and use `--venv` copies. ([13979](https://github.com/pantsbuild/pants/pull/13979))

* Remove deprecated `[python-setup]` in favor of `[python]` ([14004](https://github.com/pantsbuild/pants/pull/14004))

* Remove deprecated `typecheck` goal as alias for `check` ([13929](https://github.com/pantsbuild/pants/pull/13929))

* Remove deprecated `pants_requirement` in favor of `pants_requirements` ([13927](https://github.com/pantsbuild/pants/pull/13927))

* Remove deprecated `--process-execution-local-cleanup` and `--process-execution-local-cache` in favor of `--process-cleanup` and `--local-cache` ([13928](https://github.com/pantsbuild/pants/pull/13928))

Plugin API Changes

* Add `OptionalSingleSourceField` ([13982](https://github.com/pantsbuild/pants/pull/13982))

* Remove deprecated RuleRunner methods `create_file(s)` and `add_to_build_file`. ([13954](https://github.com/pantsbuild/pants/pull/13954))

* Revert "Turn off validation for unset `SourcesField` if `required=False`" (13856) ([13944](https://github.com/pantsbuild/pants/pull/13944))

Bug fixes

* [jvm] Fix parsing of `Coursier` report coordinates when `packaging` is reported. ([13996](https://github.com/pantsbuild/pants/pull/13996))

* Restore the `pants` namespace package. ([13972](https://github.com/pantsbuild/pants/pull/13972))

* Fix `--log-levels-by-target` not working for logs from Python code ([13939](https://github.com/pantsbuild/pants/pull/13939))

* Fix `tailor` not setting the `name` field ([13913](https://github.com/pantsbuild/pants/pull/13913))

release_2.9.0rc1

User API Changes

* Set a default for `[jvm].resolves` and `[jvm].default_resolve` (cherrypick of 13925) ([13930](https://github.com/pantsbuild/pants/pull/13930))

* [jvm] Normalize the layout of JVM subsystems and add support for compiler options (cherrypick of 13926) ([13931](https://github.com/pantsbuild/pants/pull/13931))

* Upgrade Pex to 2.1.59. (13932) ([13933](https://github.com/pantsbuild/pants/pull/13933))

Bug fixes

* Fix `tailor` not setting the `name` field (Cherry-pick of 13913) ([13924](https://github.com/pantsbuild/pants/pull/13924))

* Fix `--log-levels-by-target` not working for logs from Python code (Cherry-pick of 13939) ([13940](https://github.com/pantsbuild/pants/pull/13940))

* Revert "Turn off validation for unset `SourcesField` if `required=False`" (13856) (cherrypick of 13944) ([13946](https://github.com/pantsbuild/pants/pull/13946))

* [jvm] Expose additional JVM backends and symbols (cherrypick of 13943) ([13947](https://github.com/pantsbuild/pants/pull/13947))

release_2.9.0rc0

New Features

* Add `--docker-run-args` option to support `docker run [args] <image>`. ([13818](https://github.com/pantsbuild/pants/pull/13818))

* An include_requirements field on pex_binary. ([13894](https://github.com/pantsbuild/pants/pull/13894))

* Add new `secrets` field to `docker_image`. ([13830](https://github.com/pantsbuild/pants/pull/13830))

* [jvm] Add support for Scalatest ([13872](https://github.com/pantsbuild/pants/pull/13872))

Bug fixes

* [jvm] Apply the resolve for `deploy_jar` and restore validation of resolve compatibility ([13911](https://github.com/pantsbuild/pants/pull/13911))

* Fix `java_junit_test` and `scala_junit_test` targets to use `resolve` instead of `compatible_resolves` ([13870](https://github.com/pantsbuild/pants/pull/13870))

* [jvm] Fix `tailor` for the addition of `Scalatest`. ([13887](https://github.com/pantsbuild/pants/pull/13887))

* Fix `setup_py` resource packaging. ([13878](https://github.com/pantsbuild/pants/pull/13878))

Documentation

* Fix rendering of default field values in reference docs. ([13891](https://github.com/pantsbuild/pants/pull/13891))

* Provide helpful error message in case of undefined Docker build arg. ([13880](https://github.com/pantsbuild/pants/pull/13880))

* [docs] Enable `Java` and `Scala` backends on the docsite. ([13909](https://github.com/pantsbuild/pants/pull/13909))

* Update the project description. ([13906](https://github.com/pantsbuild/pants/pull/13906))

* Add warning when building AWS Lambdas and Google Cloud Functions on macOS. ([13790](https://github.com/pantsbuild/pants/pull/13790))

release_2.9.0.dev4

New Features

* [jvm] Hook up the ability to run JUnit tests written in Scala ([13868](https://github.com/pantsbuild/pants/pull/13868))

* scala: add `scalafmt` support for `fmt` and `lint` goals ([13814](https://github.com/pantsbuild/pants/pull/13814))

* scala: add protobuf codegen support via `scalapb` ([13853](https://github.com/pantsbuild/pants/pull/13853))

* Add support for global `scalac` plugins. ([13827](https://github.com/pantsbuild/pants/pull/13827))

* JVM: Adds `jar` field to `jvm_artifact` ([13834](https://github.com/pantsbuild/pants/pull/13834))

User API Changes

* `relocate_files` no longer used with `export-codegen` goal ([13829](https://github.com/pantsbuild/pants/pull/13829))

* Include `shell_source(s)` in `docker_image` build context. ([13761](https://github.com/pantsbuild/pants/pull/13761))

Plugin API Changes

* Codegen plugins can turn off `export-codegen` integration. ([13828](https://github.com/pantsbuild/pants/pull/13828))

* Deprecate `testutil.RuleRunner.create_files()` `.create_file()` and `.add_to_build_file()` ([13817](https://github.com/pantsbuild/pants/pull/13817))

Bug fixes

* Fix `.pyi` files not automatically depending on `__init__.py` ([13844](https://github.com/pantsbuild/pants/pull/13844))

Performance

* [jvm] Use `immutable_inputs` to provide the compiletime classpath ([13862](https://github.com/pantsbuild/pants/pull/13862))

Documentation

* Improve Docker undefined build arg behavior ([13723](https://github.com/pantsbuild/pants/pull/13723))

* Add missing backtick ([13861](https://github.com/pantsbuild/pants/pull/13861))

* Do not log extra deprecation info when there are no changes for `update-build-files --check`. ([13855](https://github.com/pantsbuild/pants/pull/13855))

release_2.9.0.dev3

New Features

* java: add support for Google Java Format ([13811](https://github.com/pantsbuild/pants/pull/13811))

* Adds support for remote jvm artifact urls ([13793](https://github.com/pantsbuild/pants/pull/13793))

* Go tests can depend on `file` targets (e.g. `testdata` folder) ([13781](https://github.com/pantsbuild/pants/pull/13781))

* An option to test/run/repl against the entire lockfile. ([13732](https://github.com/pantsbuild/pants/pull/13732))

* Add `test_timeout` fields to `go_package` ([13707](https://github.com/pantsbuild/pants/pull/13707))

* Added the `paths` goal to render all paths between two targets ([13778](https://github.com/pantsbuild/pants/pull/13778))

* Add support for inferring relative imports from Scala ([13775](https://github.com/pantsbuild/pants/pull/13775))

* go: add `go vet` linter ([13438](https://github.com/pantsbuild/pants/pull/13438))

* Support interpolating Docker build args into the `repository` field of `docker_image` targets. ([13721](https://github.com/pantsbuild/pants/pull/13721))

* Expose Pex `--resolve-local-platforms` option. ([13715](https://github.com/pantsbuild/pants/pull/13715))

* Expose Pex `--layout` option for `pex_binary`. ([13714](https://github.com/pantsbuild/pants/pull/13714))

* Add `skip_tests` field to `go_package` and `shunit2_test` ([13708](https://github.com/pantsbuild/pants/pull/13708))

* JVM: Support strong first-party declarations of provided types ([13698](https://github.com/pantsbuild/pants/pull/13698))

* scala: add `repl` support ([13576](https://github.com/pantsbuild/pants/pull/13576))

* Capture pylint reports. ([13689](https://github.com/pantsbuild/pants/pull/13689))

User API Changes

* Rename `pypi_repositories` field to `repositories` ([13794](https://github.com/pantsbuild/pants/pull/13794))

* Add `--local-cache` and `--process-cleanup` to replace `--process-execution-local-cache` and `--process-execution-local-cleanup` ([13769](https://github.com/pantsbuild/pants/pull/13769))

* Add `pants_requirements` target generator and deprecate `pants_requirement` macro ([13512](https://github.com/pantsbuild/pants/pull/13512))

* Stop generating `go_package` targets from `go_mod` ([13702](https://github.com/pantsbuild/pants/pull/13702))

* Rename `go_first_party_package` target to `go_package` ([13681](https://github.com/pantsbuild/pants/pull/13681))

* Upgrade default version of Black from 21.9b0 to 21.12b0 ([13816](https://github.com/pantsbuild/pants/pull/13816))

* Upgrade to Pex 2.1.56. ([13713](https://github.com/pantsbuild/pants/pull/13713))

Plugin API Changes

* `IntField` and `FloatField` can ban negative numbers and zero ([13705](https://github.com/pantsbuild/pants/pull/13705))

Bug fixes

* Support materializing files through file symlinks. ([13789](https://github.com/pantsbuild/pants/pull/13789))

* Fix duplicate error message for `publish` with no matching targets ([13776](https://github.com/pantsbuild/pants/pull/13776))

* Fix bug when `docker push`ing multiple tags. ([13764](https://github.com/pantsbuild/pants/pull/13764))

* Fix Java / Scala cycle artifact filename collision. ([13759](https://github.com/pantsbuild/pants/pull/13759))

* Fix `run` goal for `pex_binary` with a script entry point from a 3rdparty dependency. ([13748](https://github.com/pantsbuild/pants/pull/13748))

* Fix hadolint SIGSEGV. ([13736](https://github.com/pantsbuild/pants/pull/13736))

* Fix `--resolve-local-platforms` help. ([13722](https://github.com/pantsbuild/pants/pull/13722))

* Avoid calling disabled stream handlers. ([13680](https://github.com/pantsbuild/pants/pull/13680))

* Fix Go compilation failures causing `test` goal to error ([13711](https://github.com/pantsbuild/pants/pull/13711))

* Fix UI rendering of Go packages with no tests ([13710](https://github.com/pantsbuild/pants/pull/13710))

* Fix dup 3rdparty dists introduced by local dists. ([13690](https://github.com/pantsbuild/pants/pull/13690))

* Make tailor generate correct fields for python_requirements. ([13687](https://github.com/pantsbuild/pants/pull/13687))

* Interactive processes kill the process and its children on Ctrl+C. ([13678](https://github.com/pantsbuild/pants/pull/13678))

release_2.8.1rc1

Bug fixes

* [bugfix] Pass Docker env vars to `docker publish`. (cherrypick of 13669) ([13752](https://github.com/pantsbuild/pants/pull/13752))

* Make tailor generate correct fields for `python_requirements`. (cherrypick of 13687) ([13688](https://github.com/pantsbuild/pants/pull/13688))


release_2.9.0.dev2

New Features

* [jvm] Add support for compiling cycles between Java and Scala ([13653](https://github.com/pantsbuild/pants/pull/13653))

* [jvm]: Add Export types to dependency inference code and include exports in compile results for Java sources ([13603](https://github.com/pantsbuild/pants/pull/13603))

* Allow tailor to pick up `docker_image` targets for any file with "Dockerfile" in it ([13601](https://github.com/pantsbuild/pants/pull/13601))

* [jvm] Add Scala consumed-symbols inference. ([13632](https://github.com/pantsbuild/pants/pull/13632))

* [jvm] Add basic extraction of consumed symbols for Scala ([13628](https://github.com/pantsbuild/pants/pull/13628))

User API Changes

* Report standard backends in anonymous telemetry ([13670](https://github.com/pantsbuild/pants/pull/13670))

* Add `[twine].ca_certs_path` option. ([13593](https://github.com/pantsbuild/pants/pull/13593))

* Bump twine to 3.6.0 and add tool lockfile ([13594](https://github.com/pantsbuild/pants/pull/13594))

* Ban `*` globs and `!` ignores in `source: str` field ([13629](https://github.com/pantsbuild/pants/pull/13629))

Bug fixes

* Pass Docker env vars to `docker publish`. ([13669](https://github.com/pantsbuild/pants/pull/13669))

* Fix download URL for `grpc_python_plugin` on macos. ([13656](https://github.com/pantsbuild/pants/pull/13656))

* Fix Python dependency inference breaking with `python_source` targets ([13627](https://github.com/pantsbuild/pants/pull/13627))

* Fix swallowing of git stderr. ([13626](https://github.com/pantsbuild/pants/pull/13626))

* Register skip fields for python linters and mypy also on the `python_test_utils` target. ([13616](https://github.com/pantsbuild/pants/pull/13616))

release_2.8.1rc0

Bug fixes

* Fix download URL for `grpc_python_plugin` on macos (cherrypick of 13656) ([13659](https://github.com/pantsbuild/pants/pull/13659))

release_2.8.0

The first stable release of the `2.8.x` series, with no changes since the previous release candidate!

release_2.7.2

The third stable release of the `2.7.x` series, with no changes since the previous release candidate.

release_2.8.0rc6

New features

* Add `[twine].ca_certs_path` option (Cherry-pick of 13593) ([13642](https://github.com/pantsbuild/pants/pull/13642))

User API Changes

* Ban `*` globs and `!` ignores in `source: str` field (Cherry-pick of 13629) ([13636](https://github.com/pantsbuild/pants/pull/13636))

* Bump twine to 3.6.0 and add tool lockfile (Cherry-pick of 13594) ([13640](https://github.com/pantsbuild/pants/pull/13640))

Bug fixes

* Fix Python dependency inference breaking with `python_source` targets (Cherry-pick of 13627) ([13633](https://github.com/pantsbuild/pants/pull/13633))

* Register skip fields for python linters and mypy also on the `python_test_utils` target. (Cherry-pick of 13616) ([13623](https://github.com/pantsbuild/pants/pull/13623))

release_2.9.0.dev1

New Features

* Add `instructions` field to `docker_image` to support generating the Dockerfile ([13386](https://github.com/pantsbuild/pants/pull/13386))

* Add `--unowned-dependency-behavior` option for Python ([13491](https://github.com/pantsbuild/pants/pull/13491))

User API Changes

* Upgrade default pylint to v2.11.1 ([13585](https://github.com/pantsbuild/pants/pull/13585))

Plugin API Changes

* [plugin-api] Add `default_glob_match_error_behavior` to `SourcesField`. ([13578](https://github.com/pantsbuild/pants/pull/13578))

Bug fixes

* Fix `--no-print-stacktrace`. ([13539](https://github.com/pantsbuild/pants/pull/13539))

Performance

* Do not invalidate parent paths when only file content has changed ([13566](https://github.com/pantsbuild/pants/pull/13566))

* Fix caching of binary lookups and avoid re-running `pytest` setup for environment changes ([13559](https://github.com/pantsbuild/pants/pull/13559))

* Fix slow performance from recursive `__repr__` and `__hash__` for Go ([13492](https://github.com/pantsbuild/pants/pull/13492))

* Go: improve performance of first-party package analysis ([13476](https://github.com/pantsbuild/pants/pull/13476))

Documentation

* Fix `tailor` confusion with macros vs. targets ([13574](https://github.com/pantsbuild/pants/pull/13574))

release_2.8.0rc5

Performance

* Fix caching of binary lookups and avoid re-running `pytest` setup for environment changes (cherrypick of 13559) ([13561](https://github.com/pantsbuild/pants/pull/13561))

Documentation

* Fix `tailor` confusion with macros vs. targets (cherrypick of 13574) ([13582](https://github.com/pantsbuild/pants/pull/13582))

release_2.7.2rc2

Bug fixes

* Fix `--no-print-stacktrace`. (cherrypick of 13539) ([13540](https://github.com/pantsbuild/pants/pull/13540))

Performance

* Fix caching of binary lookups and avoid re-running `pytest` setup for environment changes (cherrypick of 13559) ([13560](https://github.com/pantsbuild/pants/pull/13560))

release_2.8.0rc4

Bug fixes

* Don't duplicate Go error logs when dependency failed to compile (Cherry-pick of 13502) ([13538](https://github.com/pantsbuild/pants/pull/13538))

* Fix `--no-print-stacktrace`. (cherrypick of 13539) ([13541](https://github.com/pantsbuild/pants/pull/13541))

Documentation

* Fix formatting of overrides field in docs (Cherry-pick of 13549) ([13552](https://github.com/pantsbuild/pants/pull/13552))

release_2.8.0rc3

Performance

* Go: improve performance of first-party package analysis (Cherry-pick of 13476) ([13486](https://github.com/pantsbuild/pants/pull/13486))

* Fix slow performance from recursive `__repr__` and `__hash__` for Go (Cherry-pick of 13492) ([13493](https://github.com/pantsbuild/pants/pull/13493))

release_2.9.0.dev0

New Features

* Add overrides to python_requirements and poetry_requirements ([13458](https://github.com/pantsbuild/pants/pull/13458))

* Add `--tailor-check` ([13432](https://github.com/pantsbuild/pants/pull/13432))

* An option to not clean up the binary chroot for the run goal. ([13427](https://github.com/pantsbuild/pants/pull/13427))

* Add `[tailor].ignore_paths` and `[tailor].ignore_adding_targets` ([13422](https://github.com/pantsbuild/pants/pull/13422))

* Validate that `[tailor].build_file_name` is compatible with `[GLOBAL].build_patterns` ([13420](https://github.com/pantsbuild/pants/pull/13420))

User API Changes

* Remove deprecated `pex_binary` fields. ([13479](https://github.com/pantsbuild/pants/pull/13479))

* Remove deprecated --pants-supportdir. ([13473](https://github.com/pantsbuild/pants/pull/13473))

* Remove setup_py_commands from python_distribution. ([13450](https://github.com/pantsbuild/pants/pull/13450))

* Remove deprecated `InferredDependencies.sibling_dependencies_inferrable` kwarg ([13440](https://github.com/pantsbuild/pants/pull/13440))

* `CheckResults` no longer accepts deprecated `typechecker_name` kwarg ([13434](https://github.com/pantsbuild/pants/pull/13434))

* Remove deprecated `[pytest].junit_xml_dir` option. ([13444](https://github.com/pantsbuild/pants/pull/13444))

* Remove deprecated `--list-provides` option ([13441](https://github.com/pantsbuild/pants/pull/13441))

* Remove deprecated `module_mapping` and `type_stubs_module_mapping` fields ([13442](https://github.com/pantsbuild/pants/pull/13442))

* Remove `entry_point=<none>` for `pex_binary` in favor of leaving off the field ([13443](https://github.com/pantsbuild/pants/pull/13443))

* Remove deprecated `Sources` type in favor of `SourcesField` ([13439](https://github.com/pantsbuild/pants/pull/13439))

* Remove deprecated `requirements_relpath` from `python_requirements` macro ([13437](https://github.com/pantsbuild/pants/pull/13437))

* Remove deprecated `protobuf_library`, `python_library`, `shell_library`, and `python_requirement_library` target aliases ([13429](https://github.com/pantsbuild/pants/pull/13429))

* Remove deprecated `--peek-output` ([13433](https://github.com/pantsbuild/pants/pull/13433))

* Remove dependencies goal deprecated --type option. ([13431](https://github.com/pantsbuild/pants/pull/13431))

* Remove dependees `--output-format` option. ([13430](https://github.com/pantsbuild/pants/pull/13430))

* Validate `python_test` and `python_tests` targets not used for `conftest.py` and `test_foo.pyi` ([13436](https://github.com/pantsbuild/pants/pull/13436))

* Move `[python] interpreter_search_paths` to `[python-bootstrap] search_path`, and add support for sandboxed Python scripts in `rule`s ([13340](https://github.com/pantsbuild/pants/pull/13340))

Plugin API Changes

* Fix `fmt`, `lint`, `test`, and `check` plugins having to use `sources` `FieldSet` value ([13456](https://github.com/pantsbuild/pants/pull/13456))

* Add support for extracting `.gz` files. ([13335](https://github.com/pantsbuild/pants/pull/13335))

Bug fixes

* [bugfix] Do not cache Docker invocations between pants runs. Fixes 13461. ([13464](https://github.com/pantsbuild/pants/pull/13464))

* Fix Python bootstrap interpreter search. ([13278](https://github.com/pantsbuild/pants/pull/13278))

* Upgrade to Pex 2.1.54. ([13426](https://github.com/pantsbuild/pants/pull/13426))

* Upgrade to Pex 2.1.53. ([13423](https://github.com/pantsbuild/pants/pull/13423))

* Consume the `go` directive when compiling ([13387](https://github.com/pantsbuild/pants/pull/13387))

* Don't error for invalid Go third-party packages unless building them ([13405](https://github.com/pantsbuild/pants/pull/13405))

* assume version 1 for older lockfiles without `version` key ([13399](https://github.com/pantsbuild/pants/pull/13399))

* Removes leading whitespace when `tailor`ing BUILD files without header text ([13375](https://github.com/pantsbuild/pants/pull/13375))

* Go: don't error for unsupported third-party sources with project introspection ([13377](https://github.com/pantsbuild/pants/pull/13377))

* Fix missing field for `tffmt` in `lint`. ([13355](https://github.com/pantsbuild/pants/pull/13355))

* Use strict resolves by default for the JVM ([13353](https://github.com/pantsbuild/pants/pull/13353))

* Parse SSH git requirements in poetry config. ([13344](https://github.com/pantsbuild/pants/pull/13344))

Performance

* Check for `rule` graph cycles asynchronously ([13370](https://github.com/pantsbuild/pants/pull/13370))

* Use `--layout=packed` for all monolithic resolves. ([13400](https://github.com/pantsbuild/pants/pull/13400))

Documentation

* Improve dynamic UI for Go ([13412](https://github.com/pantsbuild/pants/pull/13412))

* Make `check` output more useful for Go and Java ([13379](https://github.com/pantsbuild/pants/pull/13379))

release_2.8.0rc2

New Features

* Add overrides to python_requirements and poetry_requirements (Cherry-pick of 13458) ([13475](https://github.com/pantsbuild/pants/pull/13475))

* Add `--tailor-check` (Cherry-pick of 13432) ([13457](https://github.com/pantsbuild/pants/pull/13457))

* Add `[tailor].ignore_paths` and `[tailor].ignore_adding_targets` (Cherry-pick of 13422) ([13454](https://github.com/pantsbuild/pants/pull/13454))

* Validate that `[tailor].build_file_name` is compatible with `[GLOBAL].build_patterns` (Cherry-pick of 13420) ([13446](https://github.com/pantsbuild/pants/pull/13446))

Plugin API Changes

* Fix `fmt`, `lint`, `test`, and `check` plugins having to use `sources` `FieldSet` value (Cherry-pick of 13456) ([13466](https://github.com/pantsbuild/pants/pull/13466))

Bug fixes

* Do not cache Docker invocations between Pants runs (Cherry-pick of 13464) ([13467](https://github.com/pantsbuild/pants/pull/13467))

* Upgrade to Pex 2.1.54 (Cherry picks of 50914a5e and 189cd753) ([13459](https://github.com/pantsbuild/pants/pull/13459))

release_2.7.2rc1

Bug fixes

* Upgrade to Pex 2.1.54 (Cherry picks of 50914a5e and 189cd753) ([13460](https://github.com/pantsbuild/pants/pull/13460))

release_2.7.2rc0

Performance

* Use `--layout=packed` for all monolithic resolves. (cherrypick of 13400) ([13402](https://github.com/pantsbuild/pants/pull/13402))

release_2.8.0rc1

Bug fixes

* Assume version 1 for older lockfiles without `version` key (cherrypick of 13399) ([13406](https://github.com/pantsbuild/pants/pull/13406))

* Removes leading whitespace when `tailor`ing BUILD files without header text ([13394](https://github.com/pantsbuild/pants/pull/13394))

* Go: don't error for unsupported third-party sources with project introspection (Cherry-pick of 13377) ([13381](https://github.com/pantsbuild/pants/pull/13381))

* Don't error for invalid Go third-party packages unless building them (Cherry-pick of 13405) ([13410](https://github.com/pantsbuild/pants/pull/13410))

* Fix missing field for `tffmt` in `lint`. (cherrypick of 13355) ([13356](https://github.com/pantsbuild/pants/pull/13356))

Performance

* Use `--layout=packed` for all monolithic resolves. (cherrypick of 13400) ([13403](https://github.com/pantsbuild/pants/pull/13403))

* Don't download Go third-party dependencies multiple times (Cherry-pick of 13352) ([13378](https://github.com/pantsbuild/pants/pull/13378))

Documentation

* Make `check` output more useful for Go and Java (cherrypick of 13379) ([13388](https://github.com/pantsbuild/pants/pull/13388))

release_2.7.1

The second stable release of the `2.7.x` series, with no changes since the previous release candidate!

release_2.8.0rc0

New Features

* `update-build-files` goal formats BUILD files with Black ([13279](https://github.com/pantsbuild/pants/pull/13279))

* Add `overrides` field to `files` and `resources` targets ([13304](https://github.com/pantsbuild/pants/pull/13304))

* Add `overrides` field to `shell_sources`, `shunit2_sources`, and `protobuf_sources` ([13298](https://github.com/pantsbuild/pants/pull/13298))

* Add `overrides` field to `python_sources` and `python_tests` target ([13270](https://github.com/pantsbuild/pants/pull/13270))

* Depending on a `python_distribution` with `pex_binary` now includes the built dist ([13306](https://github.com/pantsbuild/pants/pull/13306))

* Support arbitrary PEP-517 build systems. ([13285](https://github.com/pantsbuild/pants/pull/13285))

User API Changes

* Pants's CLI output uses the full address `dir:dir` instead of the shorthand `dir` ([13274](https://github.com/pantsbuild/pants/pull/13274))

* Rename `[python-setup]` to `[python]` and move into the python backend. ([13345](https://github.com/pantsbuild/pants/pull/13345))

* The default `sources` for `conftest.py` and `*_test.pyi` now belong to new target generator `python_test_utils`, not `python_tests` ([13299](https://github.com/pantsbuild/pants/pull/13299))

* Deprecate including `conftest.py` and `.pyi` files in `python_tests` target's `sources` field ([13320](https://github.com/pantsbuild/pants/pull/13320))

* Rename `docker_image` field `sources` to `source` ([13327](https://github.com/pantsbuild/pants/pull/13327))

* Merge docker `version` field into the `image_tags` field. ([13308](https://github.com/pantsbuild/pants/pull/13308))

* Upgrade default black version from 21.8b0 to 21.9b0 ([13326](https://github.com/pantsbuild/pants/pull/13326))

* Terraform: move `terraform validate` from `lint` to `check` ([13301](https://github.com/pantsbuild/pants/pull/13301))

* Autoflake and Pyupgrade are now activated by experimental backends ([13317](https://github.com/pantsbuild/pants/pull/13317))

* Add google cloud logging to default Python module map ([13305](https://github.com/pantsbuild/pants/pull/13305))

Plugin API Changes

* Add support for structured output from `publish` goal. ([13292](https://github.com/pantsbuild/pants/pull/13292))

Bug fixes

* Do not choke on `.` in tool names for `experimental_shell_command`s. ([13293](https://github.com/pantsbuild/pants/pull/13293))

Documentation

* Fix documentation for `file:` URLs, and add an assist for malformed URLs. ([13272](https://github.com/pantsbuild/pants/pull/13272))

release_2.8.0.dev5

New Features

* Add `./pants update-build-files` to automate fixing some deprecation warnings ([13273](https://github.com/pantsbuild/pants/pull/13273))

* Add `[cli.alias]` config section for command line alias support. ([13228](https://github.com/pantsbuild/pants/pull/13228))

* Add `run` support for new `experimental_run_shell_command` target. ([13229](https://github.com/pantsbuild/pants/pull/13229))

* Add `azure` to default Python module mapping ([13275](https://github.com/pantsbuild/pants/pull/13275))

* Support linux arm64 binary tools. ([13249](https://github.com/pantsbuild/pants/pull/13249))

* Add minimal Scala backend ([13130](https://github.com/pantsbuild/pants/pull/13130))

User API Changes

* Fix `dir:` and `dir::` to include generated targets ([13263](https://github.com/pantsbuild/pants/pull/13263))

* Merge Docker `image_name` into the `repository` field. ([13225](https://github.com/pantsbuild/pants/pull/13225))

* `python_sources` and `python_tests` targets no longer use dependency inference, only `python_source` and `python_test` targets ([13231](https://github.com/pantsbuild/pants/pull/13231))

Plugin API Changes

* Verify each observed URL and Digest pair ([13266](https://github.com/pantsbuild/pants/pull/13266))

Bug fixes

* Fix pyupgrade alias name conflict ([13282](https://github.com/pantsbuild/pants/pull/13282))

* Fix generate_all_lockfiles. ([13280](https://github.com/pantsbuild/pants/pull/13280))

* Don't invalidate dependency inference when unrelated file names change ([13248](https://github.com/pantsbuild/pants/pull/13248))

* Fix `./pants help targets` to not include deprecated target names ([13236](https://github.com/pantsbuild/pants/pull/13236))

release_2.8.0.dev4

New Features

* Add support for pyupgrade ([13063](https://github.com/pantsbuild/pants/pull/13063))

* Support optionally restarting interactive processes when input files change ([13178](https://github.com/pantsbuild/pants/pull/13178))

* Package dependencies for shell command. ([13168](https://github.com/pantsbuild/pants/pull/13168))

* Add `help tools` ([13135](https://github.com/pantsbuild/pants/pull/13135))

* Docker build args config option ([13147](https://github.com/pantsbuild/pants/pull/13147))

* Add `[docker].env_vars` option. ([13146](https://github.com/pantsbuild/pants/pull/13146))

* Support for directly `run`ning a Docker image ([13120](https://github.com/pantsbuild/pants/pull/13120))

* Docker image version tag ([13097](https://github.com/pantsbuild/pants/pull/13097))

* Docker `publish` support ([13085](https://github.com/pantsbuild/pants/pull/13085))

* New `publish` goal ([13057](https://github.com/pantsbuild/pants/pull/13057))

User API Changes

* Add `[mypy].extra_type_stubs` ([13180](https://github.com/pantsbuild/pants/pull/13180))

* Deprecate `requirements_relpath` and `pyproject_toml_relpath` in favor of `source` for `python_requirements` and `poetry_requirements` ([13204](https://github.com/pantsbuild/pants/pull/13204))

* Deprecate `module_mapping` and `type_stubs_module_mapping` fields for `python_requirement` in favor of `modules` and `type_stub_modules` ([13197](https://github.com/pantsbuild/pants/pull/13197))

* Deprecate `python_library`, `protobuf_library`, and `shell_library` in favor of `python_sources`, `protobuf_sources`, and `shell_sources` ([13196](https://github.com/pantsbuild/pants/pull/13196))

* Add `scikit-learn` to the default module mapping ([13198](https://github.com/pantsbuild/pants/pull/13198))

* Deprecate `python_requirement_library` in favor of `python_requirement` ([13133](https://github.com/pantsbuild/pants/pull/13133))

* An explicit `generate_setup` field on `python_distribution`. ([13111](https://github.com/pantsbuild/pants/pull/13111))

* Upgrade to Pex 2.1.51. ([13098](https://github.com/pantsbuild/pants/pull/13098))

Plugin API Changes

* Deprecate `Sources` in favor of `SourcesField`, `SingleSourceField`, and `MultipleSourcesField` ([13202](https://github.com/pantsbuild/pants/pull/13202))

* Rename `ResourcesSources` and split target into generator vs. atom ([13194](https://github.com/pantsbuild/pants/pull/13194))

* Rename `FilesSources` and split target into target generator vs. atom target ([13190](https://github.com/pantsbuild/pants/pull/13190))

* Add `engine_error()` context manager for testing plugin exceptions ([13108](https://github.com/pantsbuild/pants/pull/13108))

Bug fixes

* [jvm] Ignore symbols exposed by unnamed packages. ([13214](https://github.com/pantsbuild/pants/pull/13214))

* `f.ext` is now a file argument, not a goal ([13212](https://github.com/pantsbuild/pants/pull/13212))

* `pantsd` falls back to socket usage if it cannot open a TTY. ([13155](https://github.com/pantsbuild/pants/pull/13155))

* Do not change working directory when extracting archives ([13077](https://github.com/pantsbuild/pants/pull/13077))

* Release the GIL while creating a Session. ([13127](https://github.com/pantsbuild/pants/pull/13127))

Performance

* Changing global options doesn't invalidate as much ([13144](https://github.com/pantsbuild/pants/pull/13144))

Documentation

* Improve a couple of log messages. ([13121](https://github.com/pantsbuild/pants/pull/13121))

* [Docs] Filter out self from list of related subsystems. ([13148](https://github.com/pantsbuild/pants/pull/13148))

release_2.7.1rc1

User API Changes

* Add `[mypy].extra_type_stubs` (Cherry-pick of 13180) ([13211](https://github.com/pantsbuild/pants/pull/13211))

Bug fixes

* `pantsd` falls back to socket usage if it cannot open a TTY. (cherrypick of 13155) ([13157](https://github.com/pantsbuild/pants/pull/13157))

* Release the GIL while creating a Session. (cherrypick of 13127) ([13158](https://github.com/pantsbuild/pants/pull/13158))

* Do not change working directory when extracting archives (cherrypick of 12497 and 13077) ([13159](https://github.com/pantsbuild/pants/pull/13159))

release_2.7.1rc0

Bug fixes

* Upgrade to Pex 2.1.51. (13098) (Cherry picks of 513647c1 b1d7ab9d) ([13102](https://github.com/pantsbuild/pants/pull/13102))

* Upgrade to Pex 2.1.50 and leverage packed layout. (Cherry picks of 433a4dd 0d36002 7ba06a5) ([13078](https://github.com/pantsbuild/pants/pull/13078))

* Don't invalidate the scheduler when piping output. (cherrypick of 13028) ([13030](https://github.com/pantsbuild/pants/pull/13030))

* Ensure that `Tree` contents are uploaded after creation. (cherrypick of 13008) ([13009](https://github.com/pantsbuild/pants/pull/13009))

release_2.8.0.dev3

New Features

* Make the number of dots in string dep inference an option. ([13059](https://github.com/pantsbuild/pants/pull/13059))

* Docker image name tags ([13048](https://github.com/pantsbuild/pants/pull/13048))

* Add a `--closed` option to the dependencies goal. ([13043](https://github.com/pantsbuild/pants/pull/13043))

* Support multiple Docker registries per image. ([13047](https://github.com/pantsbuild/pants/pull/13047))

* Add Docker registry field ([13017](https://github.com/pantsbuild/pants/pull/13017))

* Support for PEP-517/518 builds. ([13012](https://github.com/pantsbuild/pants/pull/13012))

* Add autoflake unused import remover to Python lint tools. ([13010](https://github.com/pantsbuild/pants/pull/13010))

* Support tailoring non-addressable macros. ([12989](https://github.com/pantsbuild/pants/pull/12989))

* Implement Java dep inference mapper and rules ([12978](https://github.com/pantsbuild/pants/pull/12978))

* Include the experimental java backend in the Pants distribution. ([13003](https://github.com/pantsbuild/pants/pull/13003))

* Have `peek` emit expanded sources and dependencies ([12882](https://github.com/pantsbuild/pants/pull/12882))

* New experimental_shell_command ([12878](https://github.com/pantsbuild/pants/pull/12878))

* Support tailoring with an alternative BUILD file name ([12979](https://github.com/pantsbuild/pants/pull/12979))

* Add Java dependency analysis types and launcher using javaparser library. ([12890](https://github.com/pantsbuild/pants/pull/12890))

User API Changes

* Remove Gofmt backend and activate it with `pants.experimental.go` ([13014](https://github.com/pantsbuild/pants/pull/13014))

* Register terraform lint & validate backends when the terraform backend is registered ([13002](https://github.com/pantsbuild/pants/pull/13002))

* Deprecate --type in the dependencies goal. ([12998](https://github.com/pantsbuild/pants/pull/12998))

Plugin API Changes

* Add `RuleRunner.write_digest()` ([13044](https://github.com/pantsbuild/pants/pull/13044))

* Change `BinaryNotFoundError` constructor to be more generic ([13001](https://github.com/pantsbuild/pants/pull/13001))

Bug fixes

* Don't invalidate the scheduler when piping output. ([13028](https://github.com/pantsbuild/pants/pull/13028))

* Ensure that `Tree` contents are uploaded after creation. ([13008](https://github.com/pantsbuild/pants/pull/13008))

* Fix case sensitivity of `module_mapping` for `python_requirements` and `poetry_requirements` ([12980](https://github.com/pantsbuild/pants/pull/12980))

* Fix spurious "Scheduling: ..." workunits with remote caching ([12973](https://github.com/pantsbuild/pants/pull/12973))

* Fix `./pants dependencies --transitive` when run on a target generator like `python_library` ([12956](https://github.com/pantsbuild/pants/pull/12956))

Performance

* Use nailgun for javac and import parser ([12982](https://github.com/pantsbuild/pants/pull/12982))

release_2.7.0

The first stable release of the `2.7.x` series, with no changes since the previous release candidate!

release_2.7.0rc5

Bug fixes

* Fix case sensitivity of `module_mapping` for `python_requirements` and `poetry_requirements` (Cherry-pick of 12980) ([12981](https://github.com/pantsbuild/pants/pull/12981))

* Fix spurious "Scheduling: ..." workunits with remote caching (cherrypick of 12973) ([12975](https://github.com/pantsbuild/pants/pull/12975))

release_2.8.0.dev2

New Features

* Build and install `python_distribution` deps for test, run, and repl ([12573](https://github.com/pantsbuild/pants/pull/12573))

* Tailor `python_requirements` macro invocations. ([12862](https://github.com/pantsbuild/pants/pull/12862))

* Add `script` field to `pex_binary` for console scripts ([12849](https://github.com/pantsbuild/pants/pull/12849))

* Add option to `[python-setup]` to handle a quirk when building `python_distribution` on MacOS Big Sur. ([12857](https://github.com/pantsbuild/pants/pull/12857))

User API Changes

* Rename the `typecheck` goal to `check` ([12858](https://github.com/pantsbuild/pants/pull/12858))

* Ban `` in an address's target name ([12940](https://github.com/pantsbuild/pants/pull/12940))

* Upgrade to Pex 2.1.50. ([12888](https://github.com/pantsbuild/pants/pull/12888))

* Add new version of `LockfileMetadata` to support checking for identically specified requirements ([12782](https://github.com/pantsbuild/pants/pull/12782))

Plugin API Changes

* Add py.typed files for pantsbuild distributions in order to satisfy PEP-561 ([12842](https://github.com/pantsbuild/pants/pull/12842))

Bug fixes

* Fix "file-level dependencies" on `files` and `resources` targets to not pull in sibling files ([12941](https://github.com/pantsbuild/pants/pull/12941))

* Add google_cloud_function to plugin dependencies. Fix typo. ([12932](https://github.com/pantsbuild/pants/pull/12932))

* If `[python-setup].invalid_lockfile_behavior = ignore`, don't require Pants metadata in the lockfile ([12900](https://github.com/pantsbuild/pants/pull/12900))

Performance

* Don't find `tar`, `unzip`, and `zip` as frequently ([12947](https://github.com/pantsbuild/pants/pull/12947))

release_2.7.0rc4

Plugin API Changes

* Add py.typed files for pantsbuild distributions in order to satisfy PEP-561 (cherry-pick of 12842) ([12861](https://github.com/pantsbuild/pants/pull/12861))

Bug fixes

* If `[python-setup].invalid_lockfile_behavior = ignore`, don't require Pants metadata in the lockfile (Cherry-pick of 12900) ([12905](https://github.com/pantsbuild/pants/pull/12905))

Performance

* Improve cache reuse for `./pants package` when using a constraints file or lockfile (12807) ([12836](https://github.com/pantsbuild/pants/pull/12836))

release_2.6.1

The second stable release of the `2.6.x` series, with no changes since the previous rc!

release_2.7.0rc3

User API Changes

* Add `version` to lockfile metadata headers (cherry-pick of 12788) ([12816](https://github.com/pantsbuild/pants/pull/12816))

Bug fixes

* Fix backports of std lib modules like `dataclasses` not working with dependency inference (Cherry-pick of 12818) ([12819](https://github.com/pantsbuild/pants/pull/12819))

* Properly include file dependencies in docker build context (cherrypick of 12758) ([12823](https://github.com/pantsbuild/pants/pull/12823))

Documentation

* Warn if `[python-repos]` is set during lockfile generation (cherrypick of 12800) ([12828](https://github.com/pantsbuild/pants/pull/12828))

release_2.8.0.dev1

New Features

* Support --fail-under on merged coverage. ([12778](https://github.com/pantsbuild/pants/pull/12778))

* Add python-docx to the module mapping dictionary ([12775](https://github.com/pantsbuild/pants/pull/12775))

* Add python-pptx to the module mapping dictionary ([12776](https://github.com/pantsbuild/pants/pull/12776))

* Add `opencv-python` to the default Python module mapping ([12777](https://github.com/pantsbuild/pants/pull/12777))

* Add `PyMuPDF` to the default Python module mapping ([12774](https://github.com/pantsbuild/pants/pull/12774))

User API Changes

* Deprecate `--list-provides` option. ([12759](https://github.com/pantsbuild/pants/pull/12759))

* Upgrade default `isort` to latest `isort==5.9.3` ([12756](https://github.com/pantsbuild/pants/pull/12756))

* Add `version` to lockfile metadata headers ([12788](https://github.com/pantsbuild/pants/pull/12788))

Plugin API Changes

* `OutputPathField.value_or_default()` no longer has an `Address` argument ([12837](https://github.com/pantsbuild/pants/pull/12837))

Bug fixes

* Properly include file dependencies in docker build context ([12758](https://github.com/pantsbuild/pants/pull/12758))

* DigestSubset should not short-circuit when there are ignores involved. ([12648](https://github.com/pantsbuild/pants/pull/12648))

* Fix backports of std lib modules like `dataclasses` not working with dependency inference ([12818](https://github.com/pantsbuild/pants/pull/12818))

Performance

* Improve cache reuse for `./pants package` when using a constraints file or lockfile ([12807](https://github.com/pantsbuild/pants/pull/12807))

* Upgrade to Pex 2.1.48 and leverage packed layout. ([12808](https://github.com/pantsbuild/pants/pull/12808))

Documentation

* Warn if `[python-repos]` is set during lockfile generation ([12800](https://github.com/pantsbuild/pants/pull/12800))

* Fix a markdown issue in a help string. ([12766](https://github.com/pantsbuild/pants/pull/12766))

release_2.7.0rc2

Bug fixes

* Fix UI rendering when a workunit has completed children but no running children (cherrypick of 12748) ([12750](https://github.com/pantsbuild/pants/pull/12750))

release_2.6.1rc3

Bug fixes

* Fix UI rendering when a workunit has completed children but no running children (cherrypick of 12748) ([12752](https://github.com/pantsbuild/pants/pull/12752))

* Include `.gitignore` in default `pantsd_invalidation_globs` (12711) ([12730](https://github.com/pantsbuild/pants/pull/12730))

Documentation

* Fix Toolchain plugin being included in generated reference docs (Cherry-pick of 12642) ([12647](https://github.com/pantsbuild/pants/pull/12647))

release_2.8.0.dev0

New Features

* Add support for creating GCP Cloud Functions. ([12735](https://github.com/pantsbuild/pants/pull/12735))

* [experimental] Add proof-of-concept Java junit test rule. ([12177](https://github.com/pantsbuild/pants/pull/12177))

* Support TOML tables for dict options in pants.toml ([12707](https://github.com/pantsbuild/pants/pull/12707))

User API Changes

* Remove undocumented `pants_version()` symbol from BUILD files ([12745](https://github.com/pantsbuild/pants/pull/12745))

* Remove deprecated `[python-protobuf.mypy-plugin]` in favor of `[mypy-protobuf]` ([12743](https://github.com/pantsbuild/pants/pull/12743))

* Stop interpolating `pants_supportdir` in `pants.toml` and deprecate the option ([12705](https://github.com/pantsbuild/pants/pull/12705))

* Error, don't warn, when `--generate-lockfiles-resolve` is set to a disabled tool lockfile ([12738](https://github.com/pantsbuild/pants/pull/12738))

* Remove deprecated `.with_binaries()`. ([12724](https://github.com/pantsbuild/pants/pull/12724))

* Update default `[black].version` to 21.8b0 ([12718](https://github.com/pantsbuild/pants/pull/12718))

* Update `futures` to` 0.3.17`. ([12722](https://github.com/pantsbuild/pants/pull/12722))

* Upgrade to Pex 2.1.47. ([12715](https://github.com/pantsbuild/pants/pull/12715))

* Remove deprecated `[pytest].pytest_plugins` in favor of `[pytest].extra_requirements` ([12704](https://github.com/pantsbuild/pants/pull/12704))

* Remove deprecated `[grpc_python_plugin]` in favor of `[grpc-python-plugin]` ([12706](https://github.com/pantsbuild/pants/pull/12706))

Plugin API Changes

* Add intrinsic to produce a `DigestEntries` from a `Digest` which reference file content by hash ([12693](https://github.com/pantsbuild/pants/pull/12693))

Bug fixes

* Fix UI rendering when a workunit has completed children but no running children ([12748](https://github.com/pantsbuild/pants/pull/12748))

* Improve descriptions of the process executions for `PEX_PATH` composition. ([12736](https://github.com/pantsbuild/pants/pull/12736))

* Absolutize all of the `execute_pex_args` in the venv script. ([12727](https://github.com/pantsbuild/pants/pull/12727))

* Include `.gitignore` in default `pantsd_invalidation_globs` ([12711](https://github.com/pantsbuild/pants/pull/12711))

Performance

* Simplify implementation of materialize directories ([12696](https://github.com/pantsbuild/pants/pull/12696))

Documentation

* Fix rendering of the ABOUT file. ([12744](https://github.com/pantsbuild/pants/pull/12744))

* Add specific and actionable instructions to stale lockfile errors ([12699](https://github.com/pantsbuild/pants/pull/12699))

* Link to pants slack from pypi project page ([12701](https://github.com/pantsbuild/pants/pull/12701))

release_2.7.0rc1

Bug fixes

* Error, don't warn, when `--generate-lockfiles-resolve` is set to a disabled tool lockfile (cherrypick of 12738) ([12741](https://github.com/pantsbuild/pants/pull/12741))

* Add specific and actionable instructions to stale lockfile errors (cherrypick of 12699). ([12717](https://github.com/pantsbuild/pants/pull/12717))

* Improve descriptions of the process executions for PEX_PATH composition. (cherrypick of 12736) ([12737](https://github.com/pantsbuild/pants/pull/12737))

* Absolutize all of the execute_pex_args in the venv script. (cherrypick of 12727) ([12729](https://github.com/pantsbuild/pants/pull/12729))

release_2.7.0rc0

New Features

* Add `[tool].lockfile` (e.g. `[black].lockfile`) for Python tools and activate `./pants generate-lockfiles` by default ([12684](https://github.com/pantsbuild/pants/pull/12684))

* Add `--generate-lockfiles-resolve` to allow generating for only certain tools ([12676](https://github.com/pantsbuild/pants/pull/12676))

* Add `[generate-lockfiles].custom_command` ([12687](https://github.com/pantsbuild/pants/pull/12687))

* Add experimental Docker build rules. ([12467](https://github.com/pantsbuild/pants/pull/12467))

User API Changes

* Use Pants's default tool lockfiles by default for Python tools like Black, Pytest, and Flake8 ([12689](https://github.com/pantsbuild/pants/pull/12689))

* Set `[python-setup].invalid_lockfile_behavior` to `error` by default ([12686](https://github.com/pantsbuild/pants/pull/12686))

* Bump default for `pytest-cov` (`[pytest].extra_requirements`) and `[coverage-py].version` so both use `coverage 5.5` ([12690](https://github.com/pantsbuild/pants/pull/12690))

* Pin `GitPython==3.1.18` by default with Bandit to ensure yanked release isn't used in lockfile generation ([12691](https://github.com/pantsbuild/pants/pull/12691))

* Stop pinning `stevedore<3` by default for Bandit ([12681](https://github.com/pantsbuild/pants/pull/12681))

* Stop installing `setuptools` by default with Black, Flake8, Isort, and Yapf ([12673](https://github.com/pantsbuild/pants/pull/12673))

* Stop using `[python-setup].requirements_constraints` when installing tools like Black and MyPy ([12639](https://github.com/pantsbuild/pants/pull/12639))

* Default to `my-dep-stubs` and `stubs-my-dep` being third-party type stubs ([12598](https://github.com/pantsbuild/pants/pull/12598))

* Type stubs should be registered as normal requirements, not in `[mypy].extra_requirements` ([12597](https://github.com/pantsbuild/pants/pull/12597))

Plugin API Changes

* Support indivisible Sources fields ([12685](https://github.com/pantsbuild/pants/pull/12685))

* Render EngineAware parameters in cycle errors from Graph. ([12668](https://github.com/pantsbuild/pants/pull/12668))

* Split PexRequirements into three unioned types ([12644](https://github.com/pantsbuild/pants/pull/12644))

* Add `__repr__` impl for PySnapshot ([12622](https://github.com/pantsbuild/pants/pull/12622))

* Remove the `rationale` field from BashBinaryRequest. ([12624](https://github.com/pantsbuild/pants/pull/12624))

Bug fixes

* The `pex_binary` "venv" mode now sees bin scripts. ([12664](https://github.com/pantsbuild/pants/pull/12664))

* Fix UI rendering when multiple tasks have the same label. ([12659](https://github.com/pantsbuild/pants/pull/12659))

* tailor: do not append comma to kwarg with empty tuple ([12653](https://github.com/pantsbuild/pants/pull/12653))

* Fix `FindBinary` when `which` is discoverable on `$PATH` on macOS ([12581](https://github.com/pantsbuild/pants/pull/12581))

* Fix coloring of stderr logs with pantsd ([12585](https://github.com/pantsbuild/pants/pull/12585))

Performance

* Decompose requirements pexes ([12675](https://github.com/pantsbuild/pants/pull/12675))

Documentation

* Switch log warning rendering to yellow. ([12596](https://github.com/pantsbuild/pants/pull/12596))

* Align `Enriched*Result` colors, sigils, and log levels. ([12645](https://github.com/pantsbuild/pants/pull/12645))

* Fix Toolchain plugin being included in generated reference docs ([12642](https://github.com/pantsbuild/pants/pull/12642))

release_2.5.2

The third stable release of the `2.5.x` series, with no changes since the previous `rc`.

release_2.6.1rc2

New Features

* Default to `my-dep-stubs` and `stubs-my-dep` being third-party type stubs (Cherry-pick of 12598) ([12600](https://github.com/pantsbuild/pants/pull/12600))

Bug fixes

* Fix `FindBinary` when `which` is discoverable on `$PATH` on macOS (Cherry-pick of 12581) ([12631](https://github.com/pantsbuild/pants/pull/12631))

* pyenv should fall back to $HOME/.pyenv (Cherry-pick of 12527) ([12628](https://github.com/pantsbuild/pants/pull/12628))

Documentation

* Embrace that help strings are markdown. (12606) ([12608](https://github.com/pantsbuild/pants/pull/12608))

release_2.6.1rc1

Bug fixes

* Fix shlexing of passthrough args. (12547) ([12551](https://github.com/pantsbuild/pants/pull/12551))

Performance

* Stream files into the local store while capturing them (cherrypick of 12563) ([12572](https://github.com/pantsbuild/pants/pull/12572))

release_2.5.2rc3

Bug fixes

* Fix shlexing of passthrough args. (cherrypick of 12547) ([12550](https://github.com/pantsbuild/pants/pull/12550))

release_2.7.0.dev4

New Features

* Add additional Google Cloud libraries to dependency inference's default module mapping ([12553](https://github.com/pantsbuild/pants/pull/12553))

* Validate that `pytest-cov` is installed when `[test].use_coverage` is set ([12534](https://github.com/pantsbuild/pants/pull/12534))

User API Changes

* Deprecate `--pants-supportdir`, rename `--engine-visualize-to`, and fix help for `--loop`. ([12558](https://github.com/pantsbuild/pants/pull/12558))

* Change the PythonProtobufMypyPlugin option scope. ([12525](https://github.com/pantsbuild/pants/pull/12525))

Plugin API Changes

* Upgrade packaging from 20.9 to 21.0 ([12561](https://github.com/pantsbuild/pants/pull/12561))

* Allow newer versions of setuptools and wheel. ([12555](https://github.com/pantsbuild/pants/pull/12555))

* Deprecate an options scope with underscores. ([12532](https://github.com/pantsbuild/pants/pull/12532))

* Remove `TestResult.skip()` in favor of `TestFieldSet.opt_out()` ([12516](https://github.com/pantsbuild/pants/pull/12516))

* Finally get rid of Optionable entirely. ([12538](https://github.com/pantsbuild/pants/pull/12538))

Bug fixes

* Fix `shfmt` and `--test-open-coverage` to handle CPU architecture `Platform` changes ([12546](https://github.com/pantsbuild/pants/pull/12546))

* Fix asdf directory lookup. ([12528](https://github.com/pantsbuild/pants/pull/12528))

* Fix shlexing of passthrough args. ([12547](https://github.com/pantsbuild/pants/pull/12547))

* pyenv should fall back to $HOME/.pyenv ([12527](https://github.com/pantsbuild/pants/pull/12527))

Performance

* Stream files into the local store while capturing them ([12563](https://github.com/pantsbuild/pants/pull/12563))

* use REAPI batch API for small blob writes ([12537](https://github.com/pantsbuild/pants/pull/12537))

* add capabilties cache for remote store client ([12522](https://github.com/pantsbuild/pants/pull/12522))

release_2.7.0.dev3

New Features

* Add `skip_tests` field to `python_tests` to facilitate incremental migrations ([12510](https://github.com/pantsbuild/pants/pull/12510))

* Adds support for Poetry group dependencies ([12492](https://github.com/pantsbuild/pants/pull/12492))

* Tailor pex_binary targets for entry points. ([12478](https://github.com/pantsbuild/pants/pull/12478))

User API Changes

* Add to default module mapping: Django extensions, Google Cloud, Pillow, and python-dotenv ([12506](https://github.com/pantsbuild/pants/pull/12506))

Plugin API Changes

* Refactor Pex working directory handling. ([12479](https://github.com/pantsbuild/pants/pull/12479))

Bug fixes

* Make the pantsd crash error message more precise. ([12512](https://github.com/pantsbuild/pants/pull/12512))

* Resolve plugins using the PEX --python option. ([12500](https://github.com/pantsbuild/pants/pull/12500))

* Shield isolated-Sessions / StreamingWorkunitHandlers from Ctrl+C. ([12483](https://github.com/pantsbuild/pants/pull/12483))

* Fix default coverage collection. ([12477](https://github.com/pantsbuild/pants/pull/12477))

Performance

* Don't resolve constraints file / lockfile if no 3rd-party requirements used ([12488](https://github.com/pantsbuild/pants/pull/12488))

release_2.6.1rc0

New Features

* Add `skip_tests` field to `python_tests` to facilitate incremental migrations (Cherry-pick of 12510) ([12511](https://github.com/pantsbuild/pants/pull/12511))

* Adds support for Poetry group dependencies (Cherry-pick of 12492) ([12497](https://github.com/pantsbuild/pants/pull/12497))

User API Changes

* Add to default module mapping: Django extensions, Google Cloud, Pillow, and python-dotenv (Cherry-pick of 12506) ([12507](https://github.com/pantsbuild/pants/pull/12507))

Bug fixes

* Make the pantsd crash error message more precise. (12512) ([12513](https://github.com/pantsbuild/pants/pull/12513))

* Resolve plugins using the PEX --python option. (cherrypick of 12500) ([12504](https://github.com/pantsbuild/pants/pull/12504))

* Shield isolated-Sessions / StreamingWorkunitHandlers from Ctrl+C. (cherrypick of 12483) ([12485](https://github.com/pantsbuild/pants/pull/12485))

Performance

* Don't resolve constraints file / lockfile if no 3rd-party requirements used (Cherry-pick of 12488) ([12490](https://github.com/pantsbuild/pants/pull/12490))

release_2.5.2rc2

Bug fixes

* Resolve plugins using the PEX --python option. (cherrypick of 12500) ([12505](https://github.com/pantsbuild/pants/pull/12505))

release_2.6.0

The first stable release of the `2.6.x` series, with no changes since the previous `rc`!

release_2.7.0.dev2

New Features

* Provide a peek goal to easily view BUILD metadata from command line ([11347](https://github.com/pantsbuild/pants/pull/11347))

* Add `entry_points` field to python_distribution ([11872](https://github.com/pantsbuild/pants/pull/11872))

* Add hadolint to lint Docker files ([12426](https://github.com/pantsbuild/pants/pull/12426))

* Add experimental Docker target type and tailor ([12431](https://github.com/pantsbuild/pants/pull/12431))

* Support `pex_binary` addresses in `provides=setup_py(entry_points)` field ([12414](https://github.com/pantsbuild/pants/pull/12414))

* Add option for async completion of StreamingWorkunitHandlers, disable by default in containers ([12392](https://github.com/pantsbuild/pants/pull/12392))

* Dependency inference for `pex_binary` and `python_awslambda` can disambiguate ambiguous modules based on file paths ([12326](https://github.com/pantsbuild/pants/pull/12326))

User API Changes

* Deprecate `[pytest].pytest_plugins` in favor of `[pytest].extra_requirements` ([12450](https://github.com/pantsbuild/pants/pull/12450))

* Deprecate `setup_py().with_binaries()` in favor of `entry_points` field ([12413](https://github.com/pantsbuild/pants/pull/12413))

* Add instruction set architecture awareness to platforms and `--url-platform-mapping` options ([12367](https://github.com/pantsbuild/pants/pull/12367))

* Add `[python-setup].interpreter_versions_universe` to ensure Pants works robustly with future Python interpreters ([12379](https://github.com/pantsbuild/pants/pull/12379))

* Upgrade to Lambdex 0.1.5. ([12461](https://github.com/pantsbuild/pants/pull/12461))

* Upgrade to Pex 2.1.44. ([12342](https://github.com/pantsbuild/pants/pull/12342))

Bug fixes

* More robust support for Poetry dependency attributes (`markers`, and`extras`) ([12323](https://github.com/pantsbuild/pants/pull/12323))

* Mark workunits blocked, and skip rendering completed workunits ([12369](https://github.com/pantsbuild/pants/pull/12369))

Performance

* Do not upload Action inputs for remote cache writes. ([12443](https://github.com/pantsbuild/pants/pull/12443))

* Skip preparation of workunit log messages which will never be rendered. ([12396](https://github.com/pantsbuild/pants/pull/12396))

Documentation

* Clarify when we are subsetting the lockfile for 3rdparty dependencies ([12435](https://github.com/pantsbuild/pants/pull/12435))

* Add counters for blob bytes uploaded/downloaded to/from CAS ([12471](https://github.com/pantsbuild/pants/pull/12471))

* Add cache and runtime metadata to Process workunits ([12469](https://github.com/pantsbuild/pants/pull/12469))

* Fix the content type for Pants' wheel long_descriptions. ([12391](https://github.com/pantsbuild/pants/pull/12391))

release_2.6.0rc4

New Features

* Add option for async completion of StreamingWorkunitHandlers, disable by default in containers (Cherry-pick of 12392) ([12399](https://github.com/pantsbuild/pants/pull/12399))

Performance

* Skip preparation of workunit log messages which will never be rendered. (Cherry-pick of 12396) ([12400](https://github.com/pantsbuild/pants/pull/12400))

* Do not upload Action inputs for remote cache writes. (Cherry-pick of 12443) ([12444](https://github.com/pantsbuild/pants/pull/12444))

Documentation

* Clarify when we are subsetting the lockfile for 3rdparty dependencies (Cherry-pick of 12435) ([12439](https://github.com/pantsbuild/pants/pull/12439))

* Fix the content type for Pants' wheel long_descriptions. (Cherry-pick of 12391) ([12402](https://github.com/pantsbuild/pants/pull/12402))

release_2.5.2rc1

New Features

* Add option for async completion of StreamingWorkunitHandlers, disable by default in containers (Cherry-pick of 12392) ([12398](https://github.com/pantsbuild/pants/pull/12398))

Performance

* Skip preparation of workunit log messages which will never be rendered. (Cherry-pick of 12396) ([12401](https://github.com/pantsbuild/pants/pull/12401))

Documentation

* Clarify when we are subsetting the lockfile for 3rdparty dependencies (Cherry-pick of 12435) ([12440](https://github.com/pantsbuild/pants/pull/12440))

* Fix the content type for Pants' wheel long_descriptions. (Cherry-pick of 12391) ([12403](https://github.com/pantsbuild/pants/pull/12403))

release_2.6.0rc3

User API Changes

* Add `[python-setup].interpreter_versions_universe` to ensure Pants works robustly with future Python interpreters (Cherry-pick of 12379) ([12383](https://github.com/pantsbuild/pants/pull/12383))

Bug fixes

* More robust support for Poetry dependency attributes (`markers` and`extras`) (Cherry-pick of 12323) ([12385](https://github.com/pantsbuild/pants/pull/12385))

* Mark workunits blocked, and skip rendering completed workunits (12369) ([12376](https://github.com/pantsbuild/pants/pull/12376))

* Fix anonymous telemetry logging. ([12344](https://github.com/pantsbuild/pants/pull/12344))

Performance

* Reduce of resolves when packaging pex_binary and python_awslambda targets (Cherry-pick of 12343) ([12350](https://github.com/pantsbuild/pants/pull/12350))

release_2.5.2rc0

Bug fixes

* Fix anonymous telemetry logging. ([12345](https://github.com/pantsbuild/pants/pull/12345))

release_2.7.0.dev1

New Features

* Allow restricting which versions are valid for `ExternalTools`. ([12332](https://github.com/pantsbuild/pants/pull/12332))

* Add yapf Python formatter ([12317](https://github.com/pantsbuild/pants/pull/12317))

* Add ASDF support to interpreter-search-paths ([12028](https://github.com/pantsbuild/pants/pull/12028))

Plugin API Changes

* Validate option default values to be of correct type. ([12331](https://github.com/pantsbuild/pants/pull/12331))

Bug fixes

* Do not leak subsystems as goals to the command line interface ([12337](https://github.com/pantsbuild/pants/pull/12337))

* Fix anonymous telemetry logging. ([12340](https://github.com/pantsbuild/pants/pull/12340))

* Fixup incorrect platform help message. ([12320](https://github.com/pantsbuild/pants/pull/12320))

Documentation

* Improve wording for `pex_binary` `platforms` field help ([12304](https://github.com/pantsbuild/pants/pull/12304))

--------------------------------------------------------------------

release_2.5.1

The second stable release of the `2.5.x` series, with no changes since the previous `rc`.

release_2.7.0.dev0

New Features

* Add skimage module mapping for dependency inference ([12301](https://github.com/pantsbuild/pants/pull/12301))

* Add experimental terraform plugin with fmt and lint rules ([11973](https://github.com/pantsbuild/pants/pull/11973))

* Add support for MyPy report files ([12271](https://github.com/pantsbuild/pants/pull/12271))

* Support running tailor on subdirs. ([12262](https://github.com/pantsbuild/pants/pull/12262))

* Support building dists from preexisting setup.py. ([12250](https://github.com/pantsbuild/pants/pull/12250))

User API Changes

* Don't tailor a python_library for a solitary __init__.py. ([12288](https://github.com/pantsbuild/pants/pull/12288))

* Apply a concurrency limit to remote store/cache/execution gRPC requests ([12256](https://github.com/pantsbuild/pants/pull/12256))

Bug fixes

* Fix poetry_requirements: ignore internal projects. ([12280](https://github.com/pantsbuild/pants/pull/12280))

* Fix poetry_requirements handling of python. ([12278](https://github.com/pantsbuild/pants/pull/12278))

* Do not use `[python-setup].resolve_all_constraints` when using `platforms` ([12268](https://github.com/pantsbuild/pants/pull/12268))

* Hotfix for `poetry_requirements` not being recognized as a macro in build files ([12263](https://github.com/pantsbuild/pants/pull/12263))

* Include experimental Go backends in pantsbuild.pants ([12290](https://github.com/pantsbuild/pants/pull/12290))

Documentation

* Improve error for out-of-line Gets. ([12305](https://github.com/pantsbuild/pants/pull/12305))

release_2.6.0rc2

Bug fixes

* Set up pants to use the latest version of humbug ([12303](https://github.com/pantsbuild/pants/pull/12303))

release_2.5.1rc6

Bug fixes

* Set up pants to use the latest version of humbug ([12309](https://github.com/pantsbuild/pants/pull/12309))

* Hash the repo_id in the tag. ([12306](https://github.com/pantsbuild/pants/pull/12306))

release_2.6.0rc1

New Features

* Add support for MyPy report files (Cherry-pick of 12271) ([12289](https://github.com/pantsbuild/pants/pull/12289))

Bug fixes

* Hotfix `poetry_requirements` not being recognized as a macro in BUILD files (Cherry-pick of 12263) ([12264](https://github.com/pantsbuild/pants/pull/12264))

* Do not use `[python-setup].resolve_all_constraints` when using `platforms` (Cherry-pick of 12268) ([12269](https://github.com/pantsbuild/pants/pull/12269))

* Fix poetry_requirements: ignore internal projects. (Cherry-pick of 12280) ([12296](https://github.com/pantsbuild/pants/pull/12296))

* Fix poetry_requirements handling of python. (12278) ([12282](https://github.com/pantsbuild/pants/pull/12282))

* Include experimental Go backends in pantsbuild.pants (Cherry-pick of 12290) ([12291](https://github.com/pantsbuild/pants/pull/12291))

Documentation

* Change how we embed docsite links in help text (Cherry-pick of 12261) ([12266](https://github.com/pantsbuild/pants/pull/12266))

release_2.5.1rc5

Bug fixes

* Do not use `[python-setup].resolve_all_constraints` when using `platforms` (Cherry-pick of 12268) ([12270](https://github.com/pantsbuild/pants/pull/12270))

release_2.6.0rc0

New Features

* Add dependency inference for Python third-party type stubs ([12248](https://github.com/pantsbuild/pants/pull/12248))

* Add `poetry_requirements` macro for Poetry support ([12174](https://github.com/pantsbuild/pants/pull/12174))

User API Changes

* Update default MyPy to 0.910 ([12249](https://github.com/pantsbuild/pants/pull/12249))

* Update linter versions for `pylint`, `black`, `bandit` ([12135](https://github.com/pantsbuild/pants/pull/12135))

* Upgrade Go distribution to v1.16.5 ([12247](https://github.com/pantsbuild/pants/pull/12247))

Plugin API Changes

* Set default user-agent header on gRPC requests with Pants version ([12241](https://github.com/pantsbuild/pants/pull/12241))

* Increment counter on missing file digests ([12235](https://github.com/pantsbuild/pants/pull/12235))

Bug fixes

* Add support for multiple requirements for a single package name in the `python_requirements` macro ([12232](https://github.com/pantsbuild/pants/pull/12232))

* Fix dependency inference to be ambiguous when >1 type stub for same module ([12244](https://github.com/pantsbuild/pants/pull/12244))

* Hash the `repo_id` in the tag. ([12151](https://github.com/pantsbuild/pants/pull/12151))

* Fix `skip_tool` not working with `./pants fmt` if all files are skipped ([12230](https://github.com/pantsbuild/pants/pull/12230))

release_2.5.1rc4

Bug fixes

* Fix dependency inference to be ambiguous when >1 type stub for same module (Cherry-pick of 12244) ([12245](https://github.com/pantsbuild/pants/pull/12245))

* Fix `skip_tool` not working with `./pants fmt` if all files are skipped (Cherry-pick of 12230) ([12233](https://github.com/pantsbuild/pants/pull/12233))

release_2.4.2

The third stable release of the `2.4.x` series, with no changes since the previous `rc`.

release_2.3.3

The fourth stable release of the `2.3.x` series, with no changes since the previous `rc`.

release_2.2.4

The fifth stable release of the `2.2.x` series, with no changes since the previous `rc`.

release_2.6.0.dev2

New Features

* Adds `--[no-]watch-filesystem` switch ([12210](https://github.com/pantsbuild/pants/pull/12210))

User API Changes

* Deprecate unused `interpreter_constraints` field for `python_awslambda` ([12208](https://github.com/pantsbuild/pants/pull/12208))

Plugin API Changes

* Rename remote cache write start and finished metrics ([12202](https://github.com/pantsbuild/pants/pull/12202))

* Support for custom target types in tailor. ([12156](https://github.com/pantsbuild/pants/pull/12156))

Bug fixes

* Fallback to `[python-setup].interpreter_constraints` for `python_distribution` targets with no first-party dependencies ([12207](https://github.com/pantsbuild/pants/pull/12207))

* Fix remote cache write attempts metric to record even if write does not finish ([12204](https://github.com/pantsbuild/pants/pull/12204))

* Fix Process output capture re: working_directory. ([12197](https://github.com/pantsbuild/pants/pull/12197))

* Fix `Key` interning race. ([12152](https://github.com/pantsbuild/pants/pull/12152))

Documentation

* Fix relocated files help display. ([12185](https://github.com/pantsbuild/pants/pull/12185))

* Suggest `-ldebug` and `--no-process-execution-local-cleanup` in exception messages ([12180](https://github.com/pantsbuild/pants/pull/12180))

release_2.5.1rc3

Bug fixes

* Fix Process output capture re: `working_directory`. (12197) ([12198](https://github.com/pantsbuild/pants/pull/12198))

release_2.3.2

The third stable release of the `2.3.x` series, with no changes since the previous `rc`.

release_2.5.1rc2

Bug fixes

* Fix `Key` interning race causing `panic while processing panic` failure (Cherry-pick of 12152) ([12158](https://github.com/pantsbuild/pants/pull/12158))

release_2.4.2rc1

Bug fixes

* Fix `Key` interning race causing `panic while processing panic` failure (Cherry-pick of 12152) ([12159](https://github.com/pantsbuild/pants/pull/12159))

release_2.3.3rc0

Bug fixes

* Fix `Key` interning race causing `panic while processing panic` failure (Cherry-pick of 12152) ([12160](https://github.com/pantsbuild/pants/pull/12160))

release_2.2.4rc0

Bug fixes

* Fix `Key` interning race causing `panic while processing panic` failure (Cherry-pick of 12152) ([12161](https://github.com/pantsbuild/pants/pull/12161))

release_2.6.0.dev1

New Features

* Allow setting `--pantsd-max-memory-usage` with `GiB`, `MiB`, and `KiB` units ([12123](https://github.com/pantsbuild/pants/pull/12123))

* Register `strip_pex_env` field with pex_binary. ([12147](https://github.com/pantsbuild/pants/pull/12147))

User API Changes

* Fix `[python-setup].resolver_jobs` default value to better recognize containers ([12139](https://github.com/pantsbuild/pants/pull/12139))

* Deprecate broken [lint].reports_dir and make mechanism more flexible ([12122](https://github.com/pantsbuild/pants/pull/12122))

* Change Docformatter to not try to use Python 2 and Python 3.5 by default ([12099](https://github.com/pantsbuild/pants/pull/12099))

Plugin API Changes

* Allow overriding option default help display. ([12128](https://github.com/pantsbuild/pants/pull/12128))

* Rename `ProcessCacheScope.NEVER` to `ProcessCacheScope.PER_SESSION` ([12100](https://github.com/pantsbuild/pants/pull/12100))

* Replace `ProcessCacheScope.PER_RESTART` with `ProcessCacheScope.PER_RESTART_ALWAYS` and `ProcessCacheScope.PER_RESTART_SUCCESSFUL` ([12094](https://github.com/pantsbuild/pants/pull/12094))

Performance

* add retries for reads and writes from remote CAS ([12132](https://github.com/pantsbuild/pants/pull/12132))

* Fix --coverage-py-global-report for >9 test files. ([12144](https://github.com/pantsbuild/pants/pull/12144))

Documentation

* Clarify the default values for parallelism options ([12119](https://github.com/pantsbuild/pants/pull/12119))

* Make timeouts in tests less confusing ([12120](https://github.com/pantsbuild/pants/pull/12120))

* Rewrite error message when Pantsd is shut down during run ([12107](https://github.com/pantsbuild/pants/pull/12107))

* Fix scheduler initialization log ([12105](https://github.com/pantsbuild/pants/pull/12105))

release_2.5.1rc1

Bug fixes

* Fix `[python-setup].resolver_jobs` default value to recognize containers (Cherry-pick of 12139) ([12140](https://github.com/pantsbuild/pants/pull/12140))

* Fix `[coverage-py].global_report` for >9 test files. (Cherry-pick of 12144) ([12146](https://github.com/pantsbuild/pants/pull/12146))

Performance

* Add retries for reads and writes from remote CAS (Cherry pick of 12132) ([12136](https://github.com/pantsbuild/pants/pull/12136))

release_2.5.1rc0

New Features

* Add support for global coverage reports. (Cherry-pick of 12080) ([12088](https://github.com/pantsbuild/pants/pull/12088))

User API Changes

* Change Docformatter to not try to use Python 2 and Python 3.5 by default (Cherry-pick of 12099) ([12101](https://github.com/pantsbuild/pants/pull/12101))

Performance

* Halve memory usage for remote cache writes. (Cherry-pick of 12083) ([12084](https://github.com/pantsbuild/pants/pull/12084))

* Fix remote cache writes memory exhaustion. (Cherry-pick of 12087) ([12089](https://github.com/pantsbuild/pants/pull/12089))

* Add retries with exponential back-off for remote cache (Cherry pick of 12102) ([12124](https://github.com/pantsbuild/pants/pull/12124))

Documentation

* Rewrite error message when Pantsd is shut down during run (Cherry-pick of 12107) ([12116](https://github.com/pantsbuild/pants/pull/12116))

* Clarify the default values for parallelism options (Cherry-pick of 12119) ([12126](https://github.com/pantsbuild/pants/pull/12126))

* Make timeouts in tests less confusing (Cherry-pick of 12120) ([12125](https://github.com/pantsbuild/pants/pull/12125))

* Fix scheduler initialization log (Cherry-pick of 12105) ([12111](https://github.com/pantsbuild/pants/pull/12111))

release_2.4.1

The second stable release of the `2.4.x` series, with no changes since the previous `rc`.

release_2.4.2rc0

Performance

* Halve memory usage for remote cache writes (Cherry-pick of 12083) ([12118](https://github.com/pantsbuild/pants/pull/12118))

Documentation

* Rewrite error message when Pantsd is shut down during run (Cherry-pick of 12107) ([12117](https://github.com/pantsbuild/pants/pull/12117))

release_2.6.0.dev0

New Features

* Add support for global coverage reports. ([12080](https://github.com/pantsbuild/pants/pull/12080))

* Add `extra_env_vars` capability to `python_tests()` ([12022](https://github.com/pantsbuild/pants/pull/12022))

* Add `pex_binary` support for `--no-strip-pex-env`. ([12061](https://github.com/pantsbuild/pants/pull/12061))

User API Changes

* Remove deprecated `[pytest].config` in favor of `[pytest].config_discovery` ([12033](https://github.com/pantsbuild/pants/pull/12033))

* Remove deprecated `ignore_pants_warnings` in favor of `ignore_warnings` ([12032](https://github.com/pantsbuild/pants/pull/12032))

* Enforce `[python-setup].resolve_all_constraints` being a bool option ([12034](https://github.com/pantsbuild/pants/pull/12034))

* Remove experimental and unused `[python-setup].requirement_constraints_target` option and `_python_constraints` target ([11998](https://github.com/pantsbuild/pants/pull/11998))

Plugin API Changes

* Rename `PexInterpreterConstraints` to `InterpreterConstraints` and move to dedicated file ([12021](https://github.com/pantsbuild/pants/pull/12021))

* Add plugin hook for setting up Pytest context ([12091](https://github.com/pantsbuild/pants/pull/12091))

* Auth plugins can inspect the prior result, set an expiration, and override `--remote-{store,execution}-address` ([12029](https://github.com/pantsbuild/pants/pull/12029))

Bug fixes

* Fix `--remote-auth-plugin` and `--remote-oauth-bearer-token-path` to execute every run with Pantsd ([12020](https://github.com/pantsbuild/pants/pull/12020))

* Fix `module_mapping` to work regardless of capitalization and `-` vs `_` ([12068](https://github.com/pantsbuild/pants/pull/12068))

* Fix `PEX_ROOT` leak with run and repl goals. ([12066](https://github.com/pantsbuild/pants/pull/12066))

* Fix constraints resolves to pass additional args. ([12076](https://github.com/pantsbuild/pants/pull/12076))

* Fix `skip_tool` fields not working with `./pants fmt` ([12073](https://github.com/pantsbuild/pants/pull/12073))

* Fix Python run for apps that re-exec themselves. ([12060](https://github.com/pantsbuild/pants/pull/12060))

* Fix remote cache writes memory exhaustion. ([12087](https://github.com/pantsbuild/pants/pull/12087))

* Halve memory usage for remote cache writes. ([12083](https://github.com/pantsbuild/pants/pull/12083))

* Fix Shell dependency inference not caching ([12052](https://github.com/pantsbuild/pants/pull/12052))

release_2.5.0

The first stable release of the `2.5.x` series, with no changes since the previous `rc`.

release_2.5.0rc3

Bug fixes

* Fix constraints resolves to pass additional args. (Cherry-pick of 12076) ([12077](https://github.com/pantsbuild/pants/pull/12077))

* Fix `skip_tool` fields not working with `./pants fmt` (Cherry-pick of 12073) ([12074](https://github.com/pantsbuild/pants/pull/12074))

release_2.5.0rc2

Bug fixes

* Fix module_mapping to work regardless of capitalization and `-` vs `_` (Cherry-pick of 12068) ([12070](https://github.com/pantsbuild/pants/pull/12070))

* Fix PEX_ROOT leak for run and repl goals. (Cherry-pick of 12066) ([12067](https://github.com/pantsbuild/pants/pull/12067))

* Fix Python run for apps that re-exec themselves (Cherry-pick of 12060) ([12063](https://github.com/pantsbuild/pants/pull/12063))

* Fix Shell dependency inference not caching (Cherry-pick of 12052) ([12056](https://github.com/pantsbuild/pants/pull/12056))

release_2.5.0rc1

New Features

* Add `extra_env_vars` field to `python_tests` target (Cherry-pick of 12022) ([12023](https://github.com/pantsbuild/pants/pull/12023))

Plugin API Changes

* Auth plugins can inspect the prior result, set an expiration, and override `--remote-{store,execution}-address` (Cherry-pick of 12029) ([12046](https://github.com/pantsbuild/pants/pull/12046))

Bug fixes

* Fix `--remote-auth-plugin` and `--remote-oauth-bearer-token-path` to execute every run with Pantsd (12020) ([12031](https://github.com/pantsbuild/pants/pull/12031))

release_2.2.3

The fourth stable release of the `2.2.x` series, with no changes since the previous `rc`.

release_2.3.2rc0

User API Changes

* Add back `interpreter_constraints` field to `pex_binary` and `python_awslambda` ([11980](https://github.com/pantsbuild/pants/pull/11980))

release_2.5.0rc0

New Features

* Allow skipping linters/formatters/typecheckers by target ([12008](https://github.com/pantsbuild/pants/pull/12008))

* Add `runtime_package_dependencies` field to `shunit2_tests` ([11997](https://github.com/pantsbuild/pants/pull/11997))

* Tell isort to use the config file at `[isort].config` when safe to do so ([11994](https://github.com/pantsbuild/pants/pull/11994))

* Support `[coverage.py]` config files using `pyproject.toml`, `setup.cfg`, and `tox.ini` ([11993](https://github.com/pantsbuild/pants/pull/11993))

* Check parent directories too for config files for tools Pants runs ([11992](https://github.com/pantsbuild/pants/pull/11992))

User API Changes

* Make python-setup resolve_all_constraints a bool. ([11985](https://github.com/pantsbuild/pants/pull/11985))

* Add back `interpreter_constraints` field to `python_awslambda` ([11982](https://github.com/pantsbuild/pants/pull/11982))

* Add back `interpreter_constraints` field to `pex_binary` ([11977](https://github.com/pantsbuild/pants/pull/11977))

Plugin API Changes

* Add mechanism for targets to opt out of field sets ([12002](https://github.com/pantsbuild/pants/pull/12002))

* Add `TriBoolField` field template ([12004](https://github.com/pantsbuild/pants/pull/12004))

* Discover config files automatically for tools Pants runs ([11995](https://github.com/pantsbuild/pants/pull/11995))

* Don't require a kwarg for `Target` and `Field` constructors ([11984](https://github.com/pantsbuild/pants/pull/11984))

Performance

* Don't parse string imports if not enabled ([11975](https://github.com/pantsbuild/pants/pull/11975))

Documentation

* Don't include file name in deprecation warnings ([12007](https://github.com/pantsbuild/pants/pull/12007))

* Stop falling back to docstring for help messages for `Target` and `Field` ([12003](https://github.com/pantsbuild/pants/pull/12003))

* Suggest using `./pants tailor` when target doesn't exist for a file argument ([11996](https://github.com/pantsbuild/pants/pull/11996))

* Make remote cache warning less chatty for missing files ([11976](https://github.com/pantsbuild/pants/pull/11976))

release_2.4.1rc1

User API Changes

* Add back `interpreter_constraints` field to `pex_binary` and `python_awslambda` ([11979](https://github.com/pantsbuild/pants/pull/11979))

* Revert "Run MyPy only on specified files, not transitive closure" ([11969](https://github.com/pantsbuild/pants/pull/11969))

Documentation

* Make remote cache warning less chatty for missing files (Cherry-pick of 11976) ([11983](https://github.com/pantsbuild/pants/pull/11983))

release_2.2.3rc0

User API Changes

* Revert deprecation of `interpreter_constraints` field for `pex_binary` and `python_awslambda` ([11981](https://github.com/pantsbuild/pants/pull/11981))

release_2.5.0.dev3

User API Changes

* Upgrade the default mypy to a version that works with namespace packages ([11945](https://github.com/pantsbuild/pants/pull/11945))

* Run MyPy only on specified files, not transitive closure ([11936](https://github.com/pantsbuild/pants/pull/11936))

Plugin API Changes

* Upgrade Pants to Pex 2.1.40. ([11964](https://github.com/pantsbuild/pants/pull/11964))

Bug fixes

* Release pants.pex in `--unzip` mode to workaround not loading properly ([11955](https://github.com/pantsbuild/pants/pull/11955))

* Fix remote cache writes to not block the Pants run ([11947](https://github.com/pantsbuild/pants/pull/11947))

* Fix python process name extraction. ([11966](https://github.com/pantsbuild/pants/pull/11966))

release_2.3.1

The second stable release of the `2.3.x` series, with no changes since the previous `rc`.

release_2.2.2

The third stable release of the `2.2.x` series, with no changes since the previous `rc`.

release_2.4.1rc0

User API Changes

* Run MyPy only on specified files, not transitive closure (Cherry-pick of 11936) ([11938](https://github.com/pantsbuild/pants/pull/11938))

Bug fixes

* Fix remote cache writes to not block the Pants run (Cherry-pick of 11947) ([11950](https://github.com/pantsbuild/pants/pull/11950))

release_2.4.0

The first stable release of the `2.4.x` series, with no changes since the previous `rc`!

release_2.4.0rc5

Bug fixes

* Wait for all Sessions during pantsd shutdown (cherrypick of 11929) ([11934](https://github.com/pantsbuild/pants/pull/11934))

* Retrieve RunTracker args from the OptionsBootstrapper. (cherrypick of 11931) ([11932](https://github.com/pantsbuild/pants/pull/11932))

release_2.5.0.dev2

New Features

* Handle URL requirements with constraints files. ([11907](https://github.com/pantsbuild/pants/pull/11907))

* Release Pants with Python 3.9 ([11858](https://github.com/pantsbuild/pants/pull/11858))

* Allow Python files without a file ending ([11905](https://github.com/pantsbuild/pants/pull/11905))

Bug fixes

* Wait for all Sessions during pantsd shutdown ([11929](https://github.com/pantsbuild/pants/pull/11929))

* Fix bug in Python 2.7 string dep inference. ([11900](https://github.com/pantsbuild/pants/pull/11900))

* Fix remote cache storing of `output_directories` ([11895](https://github.com/pantsbuild/pants/pull/11895))

Documentation

* Finesse some docgen markdown<->html issues. ([11927](https://github.com/pantsbuild/pants/pull/11927))

release_2.4.0rc4

Bug fixes

* Allow Python files without a file ending (Cherry-pick of 11905) ([11916](https://github.com/pantsbuild/pants/pull/11916))

* Fix bug in Python 2.7 string dep inference. (Cherry-pick of 11900) ([11904](https://github.com/pantsbuild/pants/pull/11904))

* Fix remote cache storing of `output_directories` (Cherry-pick of 11895) ([11896](https://github.com/pantsbuild/pants/pull/11896))

release_2.3.1rc3

Bug fixes

* Allow Python files without a file ending (Cherry-pick of 11905) ([11917](https://github.com/pantsbuild/pants/pull/11917))

* Fix bug in Python 2.7 string dep inference. (Cherry-pick of 11900) ([11903](https://github.com/pantsbuild/pants/pull/11903))

release_2.2.2rc1

Bug fixes

* Allow Python files without a file ending (Cherry-pick of 11905) ([11918](https://github.com/pantsbuild/pants/pull/11918))

* Fix bug in Python 2.7 string dep inference. (Cherry-pick of 11900) ([11906](https://github.com/pantsbuild/pants/pull/11906))

release_2.5.0.dev1

New Features

* Add dependency inference for Shell ([11857](https://github.com/pantsbuild/pants/pull/11857))

* Add Shell support with Shellcheck, shmft, and shunit2 test runner ([11844](https://github.com/pantsbuild/pants/pull/11844))

* Warn if config files detected but not wired up to Pants ([11852](https://github.com/pantsbuild/pants/pull/11852))

* Warn when dependency inference fails for `protobuf_library` targets due to ambiguity ([11849](https://github.com/pantsbuild/pants/pull/11849))

User API Changes

* Remove deprecated `unzip` field for `pex_binary` ([11868](https://github.com/pantsbuild/pants/pull/11868))

* Deprecate `--ignore-pants-warnings` in favor of `--ignore-warnings` ([11851](https://github.com/pantsbuild/pants/pull/11851))

Plugin API changes

* Require `WorkunitsCallback` to set `can_finish_async` ([11687](https://github.com/pantsbuild/pants/pull/11687))

Documentation

* Fix type in tags help message ([11836](https://github.com/pantsbuild/pants/pull/11836))

release_2.4.0rc3

Bug fixes

* Fix a bug in unicode string dep inference. (cherrypick of 11879) ([11883](https://github.com/pantsbuild/pants/pull/11883))

release_2.3.1rc2

Bug fixes

* Fix a bug in unicode string dep inference. (cherrypick of 11879) ([11882](https://github.com/pantsbuild/pants/pull/11882))

Documentation

* Fix typo in `tags` help message ([11838](https://github.com/pantsbuild/pants/pull/11838))

release_2.2.2rc0

Bug fixes

* Fix a bug in unicode string dep inference. (cherrypick of 11879) ([11881](https://github.com/pantsbuild/pants/pull/11881))

release_2.4.0rc2

New Features

* Add `--remote-cache-warnings` and make remote cache warnings less chatty (Cherry-pick of 11859) ([11863](https://github.com/pantsbuild/pants/pull/11863))

release_2.4.0rc1

Bug fixes

* Fix transitive excludes for generating setup.py (Cherry-pick of 11811) ([11839](https://github.com/pantsbuild/pants/pull/11839))

Documentation

* Escape generated markdown values (Cherry-pick of 11841) ([11846](https://github.com/pantsbuild/pants/pull/11846))

* Fix typo in `tags` help message (Cherry-pick of 11838) ([11837](https://github.com/pantsbuild/pants/pull/11837))

release_2.5.0.dev0

New Features

* Subset lockfile resolves. ([11773](https://github.com/pantsbuild/pants/pull/11773))

User API Changes

* Remove deprecated `--process-execution-cleanup-local-dirs`, `--process-execution-use-local-cache`, and `--process-execution-local-enable-nailgun` ([11821](https://github.com/pantsbuild/pants/pull/11821))

* Always use new pip resolver and remove deprecated `[python-setup].resolver_version` ([11819](https://github.com/pantsbuild/pants/pull/11819))

* Remove deprecated `[setuptools].entry_point` and `[setuptools].interpreter_constraints` ([11822](https://github.com/pantsbuild/pants/pull/11822))

* Remove deprecated `--mypy-plugin-version`, `pantsd.log` file, `--plugin-cache-dir`

Plugin API Changes

* Remove deprecated `InteractiveProcess.hermetic_env`.

* Add `RuleRunner.write_files()` for more declarative tests ([11817](https://github.com/pantsbuild/pants/pull/11817))

* Upgrade Pex to 2.1.38. ([11829](https://github.com/pantsbuild/pants/pull/11829))

Bug fixes

* Fix transitive excludes for generating setup.py ([11811](https://github.com/pantsbuild/pants/pull/11811))

* Fix workunit visibility calculation. ([11816](https://github.com/pantsbuild/pants/pull/11816))

* Fix `__run.sh` to respect working_directory. ([11814](https://github.com/pantsbuild/pants/pull/11814))

Documentation

* Fix misleading docs for `[mypy].skip` ([11810](https://github.com/pantsbuild/pants/pull/11810))

release_2.4.0rc0

New Features

* Warn when dependency inference is not used due to ambiguity from >1 target exporting the same Python module. ([11792](https://github.com/pantsbuild/pants/pull/11792))

* Dependency inference: can disambiguate modules with multiple owners via `!` ignores ([11786](https://github.com/pantsbuild/pants/pull/11786))

User API Changes

* Deprecate `--process-execution-cleanup-local-dirs` in favor of `--process-execution-local-cleanup` ([11785](https://github.com/pantsbuild/pants/pull/11785))

* Deprecate `--process-execution-use-local-cache` in favor of `--process-execution-local-cache` ([11781](https://github.com/pantsbuild/pants/pull/11781))

Bug fixes

* Do not infer dependencies in some edge cases with ambiguity ([11780](https://github.com/pantsbuild/pants/pull/11780))

* Ensure that metrics are gathered during abnormal exits ([11793](https://github.com/pantsbuild/pants/pull/11793))

* Enable configuration of local store size limits ([11777](https://github.com/pantsbuild/pants/pull/11777))

* Fix remote execution of Pexes by properly using `append_only_caches`. ([11760](https://github.com/pantsbuild/pants/pull/11760))

release_2.3.1rc1

Bug fixes

* Upgrade to Pex 2.1.35 to fix interpreter-rexec loop. (cherrypick of 11799) ([11801](https://github.com/pantsbuild/pants/pull/11801))

* Kill `SETTABLE_ENV_VARS` allow list to allow passing ssh-agent config. (cherrypick of 11743) ([11791](https://github.com/pantsbuild/pants/pull/11791))

release_2.3.1rc0

Bug fixes

* Fix remote execution: use `append_only_caches` in Pex processes. (11760) ([11765](https://github.com/pantsbuild/pants/pull/11765))

release_2.4.0.dev3

New Features

* Add support for gRPC mypy stub files ([11658](https://github.com/pantsbuild/pants/pull/11658))

* Support extra test runner output. ([11741](https://github.com/pantsbuild/pants/pull/11741))

* Send opt-in anonymous telemetry to bugout ([11697](https://github.com/pantsbuild/pants/pull/11697))

* Add `[python-setup].requirement_constraints_target` for upcoming Poetry macro ([11724](https://github.com/pantsbuild/pants/pull/11724))

User API Changes

* Kill `SETTABLE_ENV_VARS` allow list. ([11743](https://github.com/pantsbuild/pants/pull/11743))

Plugin API Changes

* Implement the IO methods required for `input`, and add `Console.input`. ([11703](https://github.com/pantsbuild/pants/pull/11703))

* Mutually exclusive options no longer change the `dest` ([11718](https://github.com/pantsbuild/pants/pull/11718))

Bug fixes

* Invalidate all files in the graph when file watching receives a rescan event. ([11734](https://github.com/pantsbuild/pants/pull/11734))

* Fix a deadlock involving `scheduler.all_digests`, and add a note. ([11723](https://github.com/pantsbuild/pants/pull/11723))

* Fix source root stripping to not strip `requirements.txt` files in plugins ([11712](https://github.com/pantsbuild/pants/pull/11712))

* Fix the mypy-protobuf interpreter constraint. ([11695](https://github.com/pantsbuild/pants/pull/11695))

Documentation

* Make `-ldebug` less chatty when using remote caching ([11667](https://github.com/pantsbuild/pants/pull/11667))

* Improve error message for unmatched globs ([11699](https://github.com/pantsbuild/pants/pull/11699))

release_2.3.0

The first stable release in the `2.3.x` series, with no changes since the previous rc.

release_2.2.1

The second stable release in the `2.2.x` series, with no changes since the previous rc.

release_2.3.0rc4

Bug fixes

* Fix a deadlock involving `scheduler.all_digests`, and add a note. (cherrypick of 11723) ([11726](https://github.com/pantsbuild/pants/pull/11726))

* Upgrade to Pex 2.1.34 to pull in a fix for an import race. (11711) ([11713](https://github.com/pantsbuild/pants/pull/11713))

release_2.2.1rc2

Bug fixes

* Fix a deadlock involving `scheduler.all_digests`, and add a note. (cherrypick of 11723) ([11725](https://github.com/pantsbuild/pants/pull/11725))

* Upgrade to Pex 2.1.34 to pull in a fix for an import race. (cherrypick of 11711) ([11714](https://github.com/pantsbuild/pants/pull/11714))

release_2.4.0.dev2

New Features

* Add a default `module_mapping` for Python 3rd-party dependency inference. ([11635](https://github.com/pantsbuild/pants/pull/11635))

User API Changes

* Warn when depending on `files` targets in a `pex_binary` or `python_awslambda` ([11659](https://github.com/pantsbuild/pants/pull/11659))

* Bump default for `[python-protobuf].mypy_plugin_version` to 2.4 ([11662](https://github.com/pantsbuild/pants/pull/11662))

Plugin API Changes

* Require subclassing `WorkunitsCallback` ([11677](https://github.com/pantsbuild/pants/pull/11677))

Bug fixes

* Fix the `local_only` option to properly disable remote execution and caching ([11678](https://github.com/pantsbuild/pants/pull/11678))

* Fix PYTHONPATH not including protobuf targets using `python_source_root` ([11673](https://github.com/pantsbuild/pants/pull/11673))

* Fix streaming workunit handler plugins to log to console during run ([11674](https://github.com/pantsbuild/pants/pull/11674))

* Avoid std::io::std usage in UI fallback. ([11671](https://github.com/pantsbuild/pants/pull/11671))

* Improve phrasing for "unknown goal" and "unknown flag" errors. ([11664](https://github.com/pantsbuild/pants/pull/11664))

* Do not interpret passthrough args. ([11656](https://github.com/pantsbuild/pants/pull/11656))

Performance

* Streaming workunit handler can finalize async when pantsd used ([11683](https://github.com/pantsbuild/pants/pull/11683))

release_2.3.0rc3

Bug fixes

* Fix PYTHONPATH not including protobuf targets using `python_source_root` (11673) ([11675](https://github.com/pantsbuild/pants/pull/11675))

* Do not interpret passthrough args. (cherrypick of 11656) ([11660](https://github.com/pantsbuild/pants/pull/11660))

release_2.2.1rc1

Bug fixes

* Fix PYTHONPATH not including protobuf targets using `python_source_root` (Cherry-pick of 11673) ([11676](https://github.com/pantsbuild/pants/pull/11676))

release_2.2.1rc0

Bug fixes

* Do not interpret passthrough args. (cherrypick of 11656) ([11661](https://github.com/pantsbuild/pants/pull/11661))

* Fix MyPy to work by default with Python 3.9+ (Cherry-pick of 11537) ([11542](https://github.com/pantsbuild/pants/pull/11542))

* Fix excessive mmap-ing in LMDB (cherrypick of 11513) ([11516](https://github.com/pantsbuild/pants/pull/11516))

release_2.4.0.dev1

New Features

* Add support for Pytest config files ([11624](https://github.com/pantsbuild/pants/pull/11624))

Plugin API Changes

* Add Python tool support for console scripts. ([11620](https://github.com/pantsbuild/pants/pull/11620))

* Require explicit environment usage ([11641](https://github.com/pantsbuild/pants/pull/11641))

Bug fixes

* Upgrade to Pex 2.1.33 to fix `et-xmlfile` issue. ([11647](https://github.com/pantsbuild/pants/pull/11647))

* Ensure that ancestor files at the buildroot are found. ([11632](https://github.com/pantsbuild/pants/pull/11632))

* Handle two edge cases with `./pants tailor` ([11625](https://github.com/pantsbuild/pants/pull/11625))

Documentation

* Wrap `./pants help` based on actual terminal width ([11378](https://github.com/pantsbuild/pants/pull/11378))

* Fix references to the deprecated pants log location. ([11636](https://github.com/pantsbuild/pants/pull/11636))

release_2.3.0rc2

Bug fixes

* Upgrade to Pex 2.1.33 to fix `et-xmlfile` issue. (Cherry-pick of 11647) ([11651](https://github.com/pantsbuild/pants/pull/11651))

* Ensure that ancestor files at the buildroot are found (Cherry-pick of 11632) ([11637](https://github.com/pantsbuild/pants/pull/11637))

* Handle two edge cases with `./pants tailor` (Cherry-pick of 11625) ([11637](https://github.com/pantsbuild/pants/pull/11637))

release_2.4.0.dev0

New Features

* Add `--stats-log` to log metrics at end of run ([11599](https://github.com/pantsbuild/pants/pull/11599))

User API Changes

* Deprecate --python-setup-resolver-version option. ([11611](https://github.com/pantsbuild/pants/pull/11611))

* Remove deprecated --remote-store options. ([11609](https://github.com/pantsbuild/pants/pull/11609))

* Remove deprecated --process-execution-speculation options. ([11610](https://github.com/pantsbuild/pants/pull/11610))

* Remove deprecated `--remote-execution-server` and `--remote-store-server` options ([11603](https://github.com/pantsbuild/pants/pull/11603))

* Deprecate unused `--process-execution-local-enable-nailgun` ([11600](https://github.com/pantsbuild/pants/pull/11600))

Bug fixes

* Upgrade Pex to 2.1.32 to fix venv script shebangs being too long for some Linux systems. ([11604](https://github.com/pantsbuild/pants/pull/11604))

Performance

* Release the Pants PEX in `--venv` mode. ([11591](https://github.com/pantsbuild/pants/pull/11591))

Documentation

* Less chatty plugin resolution logging ([11593](https://github.com/pantsbuild/pants/pull/11593))


release_2.3.0rc1

Bug fixes

* Upgrade Pex to 2.1.32 to fix venv shebangs being too long for some Linux systems. (Cherry-pick of 11604) ([11606](https://github.com/pantsbuild/pants/pull/11606))

Documentation

* Less chatty plugin resolution logging (Cherry-pick of 11593) ([11595](https://github.com/pantsbuild/pants/pull/11595))

release_2.3.0rc0

New Features

* A `tailor` goal to generate BUILD file targets automatically ([11517](https://github.com/pantsbuild/pants/pull/11517))

* Generate `protobuf_library` targets with `./pants tailor` ([11582](https://github.com/pantsbuild/pants/pull/11582))

* Support `--venv` mode for `pex_binary` targets. ([11510](https://github.com/pantsbuild/pants/pull/11510))

* Auto-discover CA certs if TLS is used and `--remote-ca-certs-path` is unset ([11572](https://github.com/pantsbuild/pants/pull/11572))

User API Changes

* Deprecate --setuptools-{entry-point,interpreter-constraints} ([11539](https://github.com/pantsbuild/pants/pull/11539))

* Deprecate `--remote-store-server` and `--remote-execution-server` in favor of `--remote-store-address` and `--remote-execution-address` ([11570](https://github.com/pantsbuild/pants/pull/11570))

* Deprecate unused `--remote-store-initial-timeout`, `--remote-store-timeout-multiplier`, `--remote-store-maximum-timeout`, `--remote-store-connection-limit`, and `--remote-store-thread-count` ([11577](https://github.com/pantsbuild/pants/pull/11577))

* Upgrade Pex to 2.1.31. ([11588](https://github.com/pantsbuild/pants/pull/11588))

Bug fixes

* Fix Black to work by default with Python 3.9 ([11541](https://github.com/pantsbuild/pants/pull/11541))

* Fix MyPy to work by default with Python 3.9 ([11537](https://github.com/pantsbuild/pants/pull/11537))

Performance

* Use --venv mode for internal PEXes. ([11557](https://github.com/pantsbuild/pants/pull/11557))

Documentation

* Improve error message for unrecognized BUILD file symbols ([11564](https://github.com/pantsbuild/pants/pull/11564))

release_1.30.3
None

release_1.30.3rc0
None

release_2.1.2

The third stable release in the 2.1.x series, with no changes since
`2.1.2rc0`.

release_2.0.2

The third stable release in the 2.0.x series, with no changes since
`2.0.2rc0`.

release_2.1.2rc0

Bugfixes

- Fix older versions of `tar` not working when creating an
`archive` (Cherry-pick of 11413) ([11418](https://github.com/pantsbuild/pants/pull/11418))

release_2.3.0.dev3

New Features

* Add `--remote-auth-plugin` ([11503](https://github.com/pantsbuild/pants/pull/11503))

User API Changes

* Stop pinning `zipp` by default in `[pytest].pytest_plugins` ([11512](https://github.com/pantsbuild/pants/pull/11512))

* Change default for `[pytest].pytest_plugins` to use pytest-cov 2.11.x ([11514](https://github.com/pantsbuild/pants/pull/11514))

* Change default versions for `setuptools` options ([11515](https://github.com/pantsbuild/pants/pull/11515))

Plugin API Changes

* Upgrade packaging from 20.8 to 20.9 ([11508](https://github.com/pantsbuild/pants/pull/11508))

release_2.3.0.dev2

New Features

* Allow specifying files with `--url-template`. ([11499](https://github.com/pantsbuild/pants/pull/11499))

User API Changes

* Bump default MyPy version to 0.800 ([11506](https://github.com/pantsbuild/pants/pull/11506))

* Add `--remote-store-headers` and fix `--remote-execution-headers` to not impact remote caching ([11501](https://github.com/pantsbuild/pants/pull/11501))

* Deprecate `[python-setup].resolver_version` defaulting to pip legacy resolver ([11497](https://github.com/pantsbuild/pants/pull/11497))

Performance

* Make remote cache writes async ([11479](https://github.com/pantsbuild/pants/pull/11479))

release_2.3.0.dev1

New Features

* Support Pex CLI `--unzip` and `--include-tools`. ([11483](https://github.com/pantsbuild/pants/pull/11483))

User API Changes

* Remove deprecated `--pants-bootstrapdir` and `--pants-configdir` options ([11491](https://github.com/pantsbuild/pants/pull/11491))

Plugin API Changes

* Remove `RunInfo` class ([11456](https://github.com/pantsbuild/pants/pull/11456))

Bug fixes

* Fix use of remote store when in eager cache mode ([11468](https://github.com/pantsbuild/pants/pull/11468))

* Workaround Rust 1.49 breaking macOS processes with a materialized argv0 ([11452](https://github.com/pantsbuild/pants/pull/11452))

Performance

* Use speculation for remote cache reads ([11429](https://github.com/pantsbuild/pants/pull/11429))

Documentation

* Change logging level for Scrubbed PYTHONPATH to be debug ([11480](https://github.com/pantsbuild/pants/pull/11480))

* Add failure logging to the StoreGCService. ([11460](https://github.com/pantsbuild/pants/pull/11460))

* Document address storage in AsyncFieldMixin. ([11448](https://github.com/pantsbuild/pants/pull/11448))

release_2.0.2rc0

Bugfixes

- Fix older versions of `tar` not working when creating an
`archive` (Cherry-pick of 11413) ([11417](https://github.com/pantsbuild/pants/pull/11417))

release_2.2.0

The first stable release in the `2.2.x` series, with no changes since the previous `rc`!

release_2.2.0rc2

Bug fixes

* Fix `--opt` options in constraints.txt files erroring (11407) ([11425](https://github.com/pantsbuild/pants/pull/11425))

* Fix older versions of `tar` not working when creating an `archive` (11413) ([11419](https://github.com/pantsbuild/pants/pull/11419))

release_2.3.0.dev0

User API Changes

* Remove support for pex_binary sources. ([11445](https://github.com/pantsbuild/pants/pull/11445))

* Remove custom targets for Pylint and MyPy. ([11441](https://github.com/pantsbuild/pants/pull/11441))

* Remove deprecated --pantsd-pailgun-quit-timeout option. ([11440](https://github.com/pantsbuild/pants/pull/11440))

* Remove DeprecatedRunTracker. ([11439](https://github.com/pantsbuild/pants/pull/11439))

* Remove deprecated PythonAwsLambda fields. ([11438](https://github.com/pantsbuild/pants/pull/11438))

Plugin API Changes

* Remove support for 'Lite' request object hacks. ([11444](https://github.com/pantsbuild/pants/pull/11444))

* Remove support for docstring help. ([11442](https://github.com/pantsbuild/pants/pull/11442))

* Remove deprecated v1 Subsystem facilities ([11424](https://github.com/pantsbuild/pants/pull/11424))

* Remove python workunits ([11416](https://github.com/pantsbuild/pants/pull/11416))

Bug fixes

* Add `--remote-cache-eager-fetch` to reduce unreliability ([11396](https://github.com/pantsbuild/pants/pull/11396))

* Fix older versions of `tar` not working when creating an `archive` ([11413](https://github.com/pantsbuild/pants/pull/11413))

* Fix `--opt` options in constraints.txt files erroring ([11407](https://github.com/pantsbuild/pants/pull/11407))

* Move to having the Scheduler directly handle SIGINT to cancel all relevant Sessions. ([11399](https://github.com/pantsbuild/pants/pull/11399))

Documentation

* docs: fix simple typo, processs -> process ([11402](https://github.com/pantsbuild/pants/pull/11402))

release_2.2.0rc1

Bug fixes

* Move to having the Scheduler directly handle SIGINT to cancel all relevant Sessions. ([11399](https://github.com/pantsbuild/pants/pull/11399))

* Fix docstring deprecation warning for Bandit. ([11395](https://github.com/pantsbuild/pants/pull/11395))

release_2.2.0rc0

New Features

* Infer imports of the style `__import__("string_literal")`. ([11326](https://github.com/pantsbuild/pants/pull/11326))

* Make the number of threads used to run rules in the Engine configurable. ([11325](https://github.com/pantsbuild/pants/pull/11325))

* Expose `--resolver-version` to support using the new pip resolver, deprecate `--cache-ttl`. ([11349](https://github.com/pantsbuild/pants/pull/11349))

User API Changes

* Bump default version of Pytest to 6.2.x ([11381](https://github.com/pantsbuild/pants/pull/11381))

* Upgrade packaging from 20.7 to 20.8 ([11343](https://github.com/pantsbuild/pants/pull/11343))

* Deprecate the `sources` field for `pex_binary` and `python_awslambda` ([11332](https://github.com/pantsbuild/pants/pull/11332))

Plugin API Changes

* Deprecate Subsystems as global singletons ([11388](https://github.com/pantsbuild/pants/pull/11388))

* Add shortcut public API method to return cumulative timings data. ([11385](https://github.com/pantsbuild/pants/pull/11385))

* Remove unused get_critical_path_timings() API ([11387](https://github.com/pantsbuild/pants/pull/11387))

* Deprecate not setting `help` for Targets, Fields, and Subsystems ([11380](https://github.com/pantsbuild/pants/pull/11380))

* RunTracker: add goals property ([11382](https://github.com/pantsbuild/pants/pull/11382))

Bug fixes

* Explicitly flush stdio in the nailgun client. ([11383](https://github.com/pantsbuild/pants/pull/11383))

* Ignore exit on the nailgun Client output_stream. ([11358](https://github.com/pantsbuild/pants/pull/11358))

Performance

* avoid unnecessary copy in cache code path ([11348](https://github.com/pantsbuild/pants/pull/11348))

* use Bytes instead of Vec<u8> for protobuf binary fields ([11342](https://github.com/pantsbuild/pants/pull/11342))

* refactor all gRPC usages to use Tonic instead of grpcio ([11307](https://github.com/pantsbuild/pants/pull/11307))

* fs.Snapshot is declared in Rust ([11328](https://github.com/pantsbuild/pants/pull/11328))

* Interrupt Graph tasks on Ctrl+C ([11322](https://github.com/pantsbuild/pants/pull/11322))

Documentation

* Pin references to docs to the current version ([11369](https://github.com/pantsbuild/pants/pull/11369))

* Generate docs references for target types ([11340](https://github.com/pantsbuild/pants/pull/11340))

release_1.30.2
None

release_2.1.1

The second stable release in the 2.1.x series, with no changes since
`rc2`.

Thank you to everyone who helped test the rcs!

release_2.0.1

The second stable release in the 2.0.x series, with no changes since
`rc4`.

Thank you for everyone's feedback!

release_1.30.2rc3
None

release_2.2.0.dev2

Plugin API Changes

* Upgrade packaging from 20.4 to 20.7 ([11302](https://github.com/pantsbuild/pants/pull/11302))

* Update default values for run tracker and streaming work unit handlers to more commonly used values. ([11292](https://github.com/pantsbuild/pants/pull/11292))

Bug fixes

* Fix filtering of log messages generated in native code. ([11313](https://github.com/pantsbuild/pants/pull/11313))

* Upgrade to Pex 2.1.24 to fix macOS Big Sur. ([11312](https://github.com/pantsbuild/pants/pull/11312))

* Clean the graph speculatively, and cancel nodes when interest is lost ([11308](https://github.com/pantsbuild/pants/pull/11308))

* Implement native Process cache scoping to fix --test-force ([11291](https://github.com/pantsbuild/pants/pull/11291))

release_2.1.1rc2

Bugfixes

- Fix filtering of log messages generated in native code. (cherrypick
of 11313) ([11316](https://github.com/pantsbuild/pants/pull/11316))
- Upgrade to Pex 2.1.24. (cherrypick of 11312) ([11315](https://github.com/pantsbuild/pants/pull/11315))
- Clean the graph speculatively, and cancel nodes when interest is
lost (cherrypick of 11308) ([11311](https://github.com/pantsbuild/pants/pull/11311))
- Implement native Process cache scoping to fix --test-force
(cherrypick of 11291) ([11298](https://github.com/pantsbuild/pants/pull/11298))
- Increase Pants' python recursion limit by default, and allow it to
be overridden. (cherrypick of 11271) ([11274](https://github.com/pantsbuild/pants/pull/11274))
- Revert "Move graph cycle detection to rust. (11202)" (cherrypick
of 11272) ([11275](https://github.com/pantsbuild/pants/pull/11202)) [PR
11275](https://github.com/pantsbuild/pants/pull/11275)

release_2.0.1rc4

Bugfixes([11310](https://github.com/pantsbuild/pants/pull/11310))

- Fix filtering of log messages generated in native code. (cherrypick
of 11313) ([11318](https://github.com/pantsbuild/pants/pull/11318))
- Upgrade to Pex 2.1.24 to fix macOS Big Sur. (cherrypick of 11312)
([11314](https://github.com/pantsbuild/pants/pull/11314))
- Clean the graph speculatively, and cancel nodes when interest is
lost (cherrypick of 11308) ([11310](https://github.com/pantsbuild/pants/pull/11310))
- Implement native Process cache scoping to fix --test-force
(cherrypick of 11291) ([11299](https://github.com/pantsbuild/pants/pull/11299))
- Revert "Move graph cycle detection to rust. (11202)" (cherrypick
of 11272) ([11277](https://github.com/pantsbuild/pants/pull/11277))
- Increase Pants' python recursion limit by default, and allow it to
be overridden. (cherrypick of 11271) ([11276](https://github.com/pantsbuild/pants/pull/11276))

release_2.2.0.dev1

New Features

* Add shorthand to use a file name for `pex_binary`'s `entry_point` and `python_awslambda`'s `handler` field ([11261](https://github.com/pantsbuild/pants/pull/11261))

* Add dependency inference for `pex_binary`'s `entry_point` and `python_awslambda`'s `handler` fields ([11245](https://github.com/pantsbuild/pants/pull/11245))

* Allow file arguments to work with the `app.py` shorthand for `pex_binary` and `python_awslambda` ([11263](https://github.com/pantsbuild/pants/pull/11263))

* Warn if `package` and `test` have no matching files/targets ([11240](https://github.com/pantsbuild/pants/pull/11240))

User API Changes

* 2.2.0.dev1 deprecations. ([11281](https://github.com/pantsbuild/pants/pull/11281))

* Require `pex_binary`'s `platforms` field to be a list ([11246](https://github.com/pantsbuild/pants/pull/11246))

* Remove deprecated `--pants-distdir-legacy-paths` option ([11247](https://github.com/pantsbuild/pants/pull/11247))

Bug fixes

* Increase Pants' python recursion limit by default, and allow it to be overridden. ([11271](https://github.com/pantsbuild/pants/pull/11271))

* Stop logging if Pyenv not installed ([11243](https://github.com/pantsbuild/pants/pull/11243))

Performance

* Reduce interning overhead ([11262](https://github.com/pantsbuild/pants/pull/11262))

* Parallelize the `Owners` rule more ([11260](https://github.com/pantsbuild/pants/pull/11260))

Documentation

* Update Pants prerequisites facts. ([11265](https://github.com/pantsbuild/pants/pull/11265))

release_2.2.0.dev0

New Features

* Add dependency inference for Protobuf <-> Protobuf imports ([11205](https://github.com/pantsbuild/pants/pull/11205))

* Add dependency inference for Python imports of Protobuf/gRPC ([11195](https://github.com/pantsbuild/pants/pull/11195))

* Allow setting the entry point for a `pex_binary` to `<none>` ([11199](https://github.com/pantsbuild/pants/pull/11199))

* Add support for filtering file vs BUILD targets ([11126](https://github.com/pantsbuild/pants/pull/11126))

* Cancel sessions rather than killing pantsd ([11123](https://github.com/pantsbuild/pants/pull/11123))

* Remoting: allow timeout parameters to be configured ([11125](https://github.com/pantsbuild/pants/pull/11125))

User API Changes

* Require Python 3.7 or 3.8 to run Pants ([11135](https://github.com/pantsbuild/pants/pull/11135))

* Deprecate `mypy_source_plugin` and `pylint_source_plugin` targets in favor of `python_library` ([11233](https://github.com/pantsbuild/pants/pull/11233))

* Remove deprecated `compatibility` field in favor of `interpreter_constraints` ([11225](https://github.com/pantsbuild/pants/pull/11225))

* Upgrade to Pex 2.1.21. ([11131](https://github.com/pantsbuild/pants/pull/11131))

Plugin API Changes

* Remove `PrimitiveField` and align `AsyncField` with `Field` ([11231](https://github.com/pantsbuild/pants/pull/11231))

* Change `AsyncField` to be `AsyncFieldMixin` ([11232](https://github.com/pantsbuild/pants/pull/11232))

* Deprecate `TransitiveTargetsRequestLite` and `DependenciesRequestLite` now that graph cycle is fixed ([11188](https://github.com/pantsbuild/pants/pull/11188))

Bug fixes

* Fix dependency inference parsing of Python 3.8 and 3.9 syntax ([11213](https://github.com/pantsbuild/pants/pull/11213))

* Set the soft ulimit value more conservatively to fix macOS Big Sur issue ([11194](https://github.com/pantsbuild/pants/pull/11194))

* Move graph cycle detection to Rust to fix recursion limit. ([11202](https://github.com/pantsbuild/pants/pull/11202))

* Fix relative imports in dependency inference ([11181](https://github.com/pantsbuild/pants/pull/11181))

* Remove extraneous info level log line ([11228](https://github.com/pantsbuild/pants/pull/11228))

* Fix Coverage not finding resource files when generating a report ([11129](https://github.com/pantsbuild/pants/pull/11129))

* Fix `test` results showing up twice by removing `TargetsWithOrigin` ([11128](https://github.com/pantsbuild/pants/pull/11128))

* Make a few minor reliability fixes to remote caching code ([11130](https://github.com/pantsbuild/pants/pull/11130))

Documentation

* Improve error message for no applicable targets ([11215](https://github.com/pantsbuild/pants/pull/11215))

release_2.1.1rc1

Bugfixes

- Fix off-by-one error for `python_awslambda`
`sources` field validation ([11234](https://github.com/pantsbuild/pants/pull/11234))
- Remove extraneous INFO level log line (Cherry-pick of 11228)
([11229](https://github.com/pantsbuild/pants/pull/11229))

release_2.0.1rc3

Bugfixes

- Fix off-by-one error for `python_awslambda`
`sources` field validation ([11234](https://github.com/pantsbuild/pants/pull/11234))

release_1.30.2rc2
None

release_2.1.1rc0

User API Changes

- Revert premature deprecation of `sources` field for
`python_awslambda` ([11217](https://github.com/pantsbuild/pants/pull/11217))

Bugfixes

- Move graph cycle detection to Rust to fix recursion limit.
(cherrypick of 11202) ([11204](https://github.com/pantsbuild/pants/pull/11204))
- Set the soft ulimit value more conservatively to fix macOS Big Sur
issue (cherrypick of 11194) ([11197](https://github.com/pantsbuild/pants/pull/11197))

release_2.0.1rc2

User API Changes

- Revert premature deprecation of `sources` field for
`python_awslambda` ([11216](https://github.com/pantsbuild/pants/pull/11216))

Bugfixes

- Move graph cycle detection to rust to fix recursion limit.
(cherrypick of 11202) ([11203](https://github.com/pantsbuild/pants/pull/11203))
- Set the soft ulimit value more conservatively to fix macOS Big Sur
issue (cherrypick of 11194) ([11196](https://github.com/pantsbuild/pants/pull/11196))

release_2.1.0

The first stable release of the `2.1.x` series, with no changes since
the previous release candidate.

release_2.1.0rc3

Bugfixes

- Fix relative imports in dependency inference (Cherry-pick of 11181)
([11189](https://github.com/pantsbuild/pants/pull/11189))

release_2.0.1rc1

User API Changes

- Deprecate the `sources` field for
`python_awslambda` (Cherry-pick of 11176) ([11177](https://github.com/pantsbuild/pants/pull/11177))

Bugfixes

- Fix relative imports in dependency inference (Cherry-pick of 11181)
([11190](https://github.com/pantsbuild/pants/pull/11190))

release_2.1.0rc2

New Features

- Remoting: allow timeout parameters to be configured (Cherry-pick of
11125) ([11158](https://github.com/pantsbuild/pants/pull/11158))

User API Changes

- Deprecate running Pants with Python 3.6 ([11173](https://github.com/pantsbuild/pants/pull/11173))
- Deprecate the `sources` field for
`python_awslambda` (Cherry-pick of 11176) ([11178](https://github.com/pantsbuild/pants/pull/11178))

Bugfixes

- make a few minor reliability fixes to remote caching code
(Cherry-pick of 11130) ([11159](https://github.com/pantsbuild/pants/pull/11159))

release_2.0.1rc0

User API Changes

- Add a specific error for target names containing slashes (cherrypick
of 11115) ([11122](https://github.com/pantsbuild/pants/pull/11122))

Bugfixes

- Fix logs for `test`, `lint`,
`fmt`, and `typecheck` to always print, even
if cached (Cherry-pick of 11111) ([11116](https://github.com/pantsbuild/pants/pull/11116))
- Fix `pytest.pex` leaking into coverage data (Cherry-pick
of 11110) ([11112](https://github.com/pantsbuild/pants/pull/11112))
- Fix Coverage not finding resource files when generating a report
(Cherry-pick of 11129) ([11139](https://github.com/pantsbuild/pants/pull/11139))
- Fix `!!` transitive excludes when used multiple times in
a repo (Cherry-pick of 11103) ([11104](https://github.com/pantsbuild/pants/pull/11104))
- Fix `setup_py().with_binaries()` to properly inject
dependencies ([11098](https://github.com/pantsbuild/pants/pull/11098))
- Upgrade to Pex 2.1.21 to fix interpreter selection and race
condition (Cherry-pick of 11131) ([11133](https://github.com/pantsbuild/pants/pull/11133))
- Fix `--pex-verbosity` to work with the interpreter
selection PEX (Cherry-pick of 11108) ([11120](https://github.com/pantsbuild/pants/pull/11120))

release_2.1.0rc1

Bugfixes

- Upgrade to Pex 2.1.21 (Cherry-pick of 11131) ([11134](https://github.com/pantsbuild/pants/pull/11134))
- Fix Coverage not finding resource files when generating a report
(Cherry-pick of 11129) ([11138](https://github.com/pantsbuild/pants/pull/11138))

release_2.1.0rc0

New Features

- Add `export-codegen` goal ([11107](https://github.com/pantsbuild/pants/pull/11107))
- Add `./pants py-constraints --summary` for project
overview ([11099](https://github.com/pantsbuild/pants/pull/11099))
- Add `./pants help subsystems` ([11088](https://github.com/pantsbuild/pants/pull/11088))
- Improve performance of dependency inference ([11094](https://github.com/pantsbuild/pants/pull/11094))

User API Changes

- Change default for `--pants-distdir-legacy-paths` and
deprecate it ([11096](https://github.com/pantsbuild/pants/pull/11096))
- Clarify that process cache namespacing works for all runners
([11095](https://github.com/pantsbuild/pants/pull/11095))
- Deprecate target names containing slashes and colons ([11115](https://github.com/pantsbuild/pants/pull/11115))

Plugin API Changes

- Rename `SourcesSnapshot` to `SpecsSnapshot`
([11114](https://github.com/pantsbuild/pants/pull/11114))

Bugfixes

- Fix logs for `test`, `lint`,
`fmt`, and `typecheck` to always print, even
if cached ([11111](https://github.com/pantsbuild/pants/pull/11111))
- Fix `pytest.pex` leaking into coverage data ([11110](https://github.com/pantsbuild/pants/pull/11110))
- Fix `--pex-verbosity` to work with the interpreter
selection PEX ([11108](https://github.com/pantsbuild/pants/pull/11108))
- Fix `!!` transitive excludes when used multiple times in
a repo ([11103](https://github.com/pantsbuild/pants/pull/11103))
- Fix `setup_py.with_provides()` to respect the
`:func` entry-point shorthand ([11093](https://github.com/pantsbuild/pants/pull/11093))
- Include a host fingerprint in pantsd's identity ([11092](https://github.com/pantsbuild/pants/pull/11092))

Documentation

- Improve error message for invalid unions in `Get()`s ([11102](https://github.com/pantsbuild/pants/pull/11102))

release_2.1.0.dev0

User API Changes

- Do not error if `./pants package` does not match any
targets ([11051](https://github.com/pantsbuild/pants/pull/11051))
- Deprecate the `compatibility` field in favor of
`interpreter_constraints` ([11074](https://github.com/pantsbuild/pants/pull/11074))
- Remove deprecated `awslambda`, `binary`, and
`setup-py` goals in favor of `package`
([11048](https://github.com/pantsbuild/pants/pull/11048))
- Rename pex-binary/python-distribution to avoid naming collisions.
([11007](https://github.com/pantsbuild/pants/pull/11007))
- Remove deprecated `--{fmt,lint}-per-target-caching` in
favor of `--per-file-caching` ([11062](https://github.com/pantsbuild/pants/pull/11062))
- Remove post_stats from RunTracker ([11068](https://github.com/pantsbuild/pants/pull/11068))
- Remove stats_version in runtracker ([11065](https://github.com/pantsbuild/pants/pull/11065))
- Remove deprecated `--lang` and `--lc-all`
options in favor of `--env-vars` ([11066](https://github.com/pantsbuild/pants/pull/11066))
- Remove deprecated `--protoc-runtime-targets` option
([11083](https://github.com/pantsbuild/pants/pull/11083))
- Remove deprecated `--interpreter-constraints` option
for some Python tools ([11082](https://github.com/pantsbuild/pants/pull/11082))
- Remove deprecated `runtime_binary_dependencies` field
([11079](https://github.com/pantsbuild/pants/pull/11079))
- Remove deprecated `--spec-file` option in favor of
`--spec-files` ([11076](https://github.com/pantsbuild/pants/pull/11076))
- Remove deprecated `[basic-auth]`,
`[reporter]`, and `run-tracker`
options ([11078](https://github.com/pantsbuild/pants/pull/11078))
- Remove deprecated `--print-exception-stacktrace` in
favor of `--print-stacktrace` ([11085](https://github.com/pantsbuild/pants/pull/11085))
- Remove unused global options ([11077](https://github.com/pantsbuild/pants/pull/11077))
- Remove deprecated `python_requirement` BUILD file symbol
([11055](https://github.com/pantsbuild/pants/pull/11055))
- Deprecate the `platforms` field allowing a bare string
([11073](https://github.com/pantsbuild/pants/pull/11073))
- Deprecate several unused options ([11041](https://github.com/pantsbuild/pants/pull/11041))
- Deprecate unused `run-tracker` options ([11038](https://github.com/pantsbuild/pants/pull/11038))
- Remove deprecated `python-setup` options ([10984](https://github.com/pantsbuild/pants/pull/10984))
- Remove deprecated `Subsystem.get_options()` in favor of
`Subsystem.options` ([10986](https://github.com/pantsbuild/pants/pull/10986))
- Remove deprecated global options like `--v2` and
`--backend-packages2` ([10985](https://github.com/pantsbuild/pants/pull/10985))
- Remove deprecated `--changed-*` options ([10982](https://github.com/pantsbuild/pants/pull/10982))
- Remove deprecated `./pants filter` options ([10983](https://github.com/pantsbuild/pants/pull/10983))

New Features

- Add `[python-setup].resolver_http_cache_ttl` option
([10997](https://github.com/pantsbuild/pants/pull/10997))
- Add new `py-constraints` goal through new
`pants.backend.python.mixed_interpreter_constraints`
backend ([11075](https://github.com/pantsbuild/pants/pull/11075))
- Add `:my_func` shorthand for the
`entry_point` field ([11064](https://github.com/pantsbuild/pants/pull/11064))
- Add new EngineAware method metadata() ([11030](https://github.com/pantsbuild/pants/pull/11030))
- remote caching support ([10960](https://github.com/pantsbuild/pants/pull/10960))
- Store per-run logs on RunTracker ([11025](https://github.com/pantsbuild/pants/pull/11025))
- Allow changing the URL to download tools like PEX and Protoc
([11013](https://github.com/pantsbuild/pants/pull/11013))
- Add mechanism to deprecate target types and fields ([10966](https://github.com/pantsbuild/pants/pull/10966))

Bugfixes

- remote caching: upload stdout/stderr content to remote cache
([11049](https://github.com/pantsbuild/pants/pull/11049))
- Fix PEX to always write to `named_caches_dir`, rather
than `~/.pex` ([11040](https://github.com/pantsbuild/pants/pull/11040))
- Fix `setup_py().with_binaries()` to use the default
entry point ([11021](https://github.com/pantsbuild/pants/pull/11021))
- Fix resource leak warning with stdio ([10995](https://github.com/pantsbuild/pants/pull/10995))
- Fix `./pants repl` to use global constrains when no
targets specified ([10991](https://github.com/pantsbuild/pants/pull/10991))
- Fix overly verbose `FieldSet` in stack traces ([10978](https://github.com/pantsbuild/pants/pull/10978))
- Fix several bad usages of `itertools.groupby()` ([10976](https://github.com/pantsbuild/pants/pull/10976))
- Fix bug with linter targets being skipped ([10974](https://github.com/pantsbuild/pants/pull/10974))
- Fix config validation not erroring on global options in wrong scope
([10950](https://github.com/pantsbuild/pants/pull/10950))
- Automatically set setuptools interpreter constraints if unspecified
([10951](https://github.com/pantsbuild/pants/pull/10951))

Documentation

- Improve error message for invalid input in `Get()`s ([11081](https://github.com/pantsbuild/pants/pull/11081))
- Improve several help messages ([11029](https://github.com/pantsbuild/pants/pull/11029))
- Fold target help into the help system. ([11022](https://github.com/pantsbuild/pants/pull/11022))

release_2.0.0

The first stable release in the 2.0.x series, with no changes since
`rc3`.

Thank you for everyone's feedback!

release_2.0.0rc3

User API Changes

- Deprecate several unused options (Cherry-pick of 11041) ([11043](https://github.com/pantsbuild/pants/pull/11043))
- Deprecate unused `run-tracker` options (Cherry-pick of
11038) ([11039](https://github.com/pantsbuild/pants/pull/11039))

Bugfixes

- Fix PEX to always write to `named_caches_dir`, rather
than `~/.pex` (Cherry-pick of 11040) ([11042](https://github.com/pantsbuild/pants/pull/11042))
- Eagerly validate entry points for
`setup_py().with_binaries()` (Cherry-pick of 11034)
([11036](https://github.com/pantsbuild/pants/pull/11036))

Documentation

- Improve several help messages (Cherry-pick of 11029) ([11035](https://github.com/pantsbuild/pants/pull/11035))

release_2.0.0rc2

User API Changes

- Fold target help into the help system. (Cherry-pick of 11022)
([11028](https://github.com/pantsbuild/pants/pull/11028))
- Rename pex-binary/python-distribution subsystems to avoid naming
collisions. (Cherry-pick of 11007) ([11010](https://github.com/pantsbuild/pants/pull/11010))
- Increase default `[python-setup].resolver_jobs` to
`cpu_count / 2` (Cherry-pick of 11006) ([11011](https://github.com/pantsbuild/pants/pull/11011))
- Include `<PYENV>` in
`[python-setup].interpreter_search_paths` default
(Cherry-pick of 10998) ([11008](https://github.com/pantsbuild/pants/pull/11008))
- Upgrade Pex to 2.1.20 (Cherry-pick of 11014) ([11016](https://github.com/pantsbuild/pants/pull/11016))

Plugin API Changes

- Validate that option scopes and target aliases don't collide.
(Cherry-pick of 11004) ([11015](https://github.com/pantsbuild/pants/pull/11015))

New Features

- Allow changing the versioning scheme for
`python_distribution` first-party dependencies
(Cherry-pick of 10977) ([10989](https://github.com/pantsbuild/pants/pull/10989))
- Add `[python-setup].resolver_http_cache_ttl` option
(Cherry-pick of 10997) ([11002](https://github.com/pantsbuild/pants/pull/11002))
- Allow changing the URL to download tools like PEX and Protoc
(Cherry-pick of 11013) ([11024](https://github.com/pantsbuild/pants/pull/11024))

Bugfixes

- Revert using libCST for dep inference due to performance
(Cherry-pick of 11001) ([11005](https://github.com/pantsbuild/pants/pull/11005))
- Fix resource leak warning with stdio (Cherry-pick of 10995)
([10996](https://github.com/pantsbuild/pants/pull/10996))
- Fix `./pants repl` to use global constrains when no
targets specified (Cherry-pick of 10991) ([10992](https://github.com/pantsbuild/pants/pull/10992))
- Fix `setup_py().with_binaries()` to use the default
entry point (Cherry-pick of 11021) ([11026](https://github.com/pantsbuild/pants/pull/11026))
- Fix overly verbose `FieldSet` in stack traces
(Cherry-pick of 10978) ([10990](https://github.com/pantsbuild/pants/pull/10990))
- Fix several bad usages of `itertools.groupby()`
(Cherry-pick of 10976) ([10979](https://github.com/pantsbuild/pants/pull/10979))

release_2.0.0rc1

User API Changes

- Restore several removed targets and fields to help with upgrading
([10970](https://github.com/pantsbuild/pants/pull/10970))

New Features

- Add `./pants target-types --all` (Cherry-pick of
10957) ([10961](https://github.com/pantsbuild/pants/pull/10961))

Bugfixes

- Fix interpreter selection when building a PEX to use
`[python-setup].interpreter_search_paths` (Cherry-pick
of 10965) ([10967](https://github.com/pantsbuild/pants/pull/10967))
- Fix linter targets being skipped when repo has multiple interpreter
constraints (Cherry-pick of 10974) ([10975](https://github.com/pantsbuild/pants/pull/10975))
- Automatically set setuptools interpreter constraints if unspecified
(Cherry-pick of 10951) ([10958](https://github.com/pantsbuild/pants/pull/10958))
- Fix config validation not erroring on global options in wrong scope
(Cherry-pick of 10950) ([10956](https://github.com/pantsbuild/pants/pull/10956))
- Fix logging of lint result files (Cherry-pick of 10959) ([10968](https://github.com/pantsbuild/pants/pull/10968))

release_2.0.0rc0

User API Changes

- Deprecate `python_binary` in favor of
`pex_binary` ([10939](https://github.com/pantsbuild/pants/pull/10939))
- Deprecate `[protoc].runtime_targets` in favor of
`[python-protobuf].runtime_dependencies` ([10926](https://github.com/pantsbuild/pants/pull/10926))
- Use the `package` goal to build setup-py dists. ([10919](https://github.com/pantsbuild/pants/pull/10919))
- Deprecate `--print-exception-stacktrace` to
`--print-stacktrace` ([10912](https://github.com/pantsbuild/pants/pull/10912))

Plugin API Changes

- Use `TransitiveTargetsRequest` as input for resolving
`TransitiveTargets` ([10915](https://github.com/pantsbuild/pants/pull/10915))
- Add `await Get(Addresses, UnparsedAddressInputs)`
([10913](https://github.com/pantsbuild/pants/pull/10913))
- Upgrade to Pex 2.1.18. ([10938](https://github.com/pantsbuild/pants/pull/10938))

New Features

- Add gRPC Python code generation ([10937](https://github.com/pantsbuild/pants/pull/10937))
- Add MyPy Protobuf plugin support ([10931](https://github.com/pantsbuild/pants/pull/10931))
- Add `output_path` field to `python_binary`,
`python_awslambda`, and `archive` ([10899](https://github.com/pantsbuild/pants/pull/10899))

Bugfixes

- Fix for log messages/dynamic UI teardown conflict ([10940](https://github.com/pantsbuild/pants/pull/10940))
- Fix some dependencies-like fields not showing up with project
introspection ([10923](https://github.com/pantsbuild/pants/pull/10923))
- Send SIGTERM to child processes upon SIGINT ([10930](https://github.com/pantsbuild/pants/pull/10930))
- Fix Python 3.8 syntax not working with dependency inference ([10907](https://github.com/pantsbuild/pants/pull/10907))
- Plumb `ca_certs_path` to the plugin resolver. ([10910](https://github.com/pantsbuild/pants/pull/10910))

Documentation

- Differentiate between User API vs. Plugin API changes in changelog
([10916](https://github.com/pantsbuild/pants/pull/10916))
- Streamline some goal descriptions. ([10911](https://github.com/pantsbuild/pants/pull/10911))

release_2.0.0b3

API Changes

- Add a FileDigest type to differentiate file APIs from directory APIs
([10900](https://github.com/pantsbuild/pants/pull/10900))
- Deprecate `awslambda` and `binary` goals in
favor of new `package` goal ([10881](https://github.com/pantsbuild/pants/pull/10881))

New Features

- Add `archive` target type to replace
`python_app` ([10895](https://github.com/pantsbuild/pants/pull/10895))
- Add `relocated_files` target type ([10880](https://github.com/pantsbuild/pants/pull/10880))
- Add support for `.pyi` type stubs (including for
first-party) ([10759](https://github.com/pantsbuild/pants/pull/10759))

Bugfixes

- Upgrade Pex to 2.1.17. ([10901](https://github.com/pantsbuild/pants/pull/10901))
- Add back `blocked` flag on BoundedCommandRunner workunit
([10873](https://github.com/pantsbuild/pants/pull/10873))

Refactoring, Improvements, and Tooling

- Log long running workunits when the dynamic UI is disabled ([10890](https://github.com/pantsbuild/pants/pull/10890))
- Add a `'coverage_'` prefix to artifact key ([10891](https://github.com/pantsbuild/pants/pull/10891))
- Remove unused Nailgun code ([10883](https://github.com/pantsbuild/pants/pull/10883))
- Add several rule descriptions and debug hints ([10878](https://github.com/pantsbuild/pants/pull/10878))
- fs_util Directory subsetting ignores non-matches ([10854](https://github.com/pantsbuild/pants/pull/10854))
- Clean up trace logging ([10875](https://github.com/pantsbuild/pants/pull/10875))
- A new mechanism for showing "did you mean" help. ([10872](https://github.com/pantsbuild/pants/pull/10872))
- Check in the Pants logo. ([10871](https://github.com/pantsbuild/pants/pull/10871))
- Improved type annotations for OrderedSet and FrozenOrderedSet,
removed code duplication ([10868](https://github.com/pantsbuild/pants/pull/10868))

Documentation

- Prepare 1.30.2rc1 ([10887](https://github.com/pantsbuild/pants/pull/10887))

release_2.0.0b2

API Changes

- Remove .*/ from --build-ignore defaults ([10856](https://github.com/pantsbuild/pants/pull/10856))

New Features

- Partition MyPy based on interpreter constraints ([10817](https://github.com/pantsbuild/pants/pull/10817))

Bugfixes

- Fix dependency inference AST parsing to include file names ([10857](https://github.com/pantsbuild/pants/pull/10857))
- Validate the names of directory children, and normalize output
directory/file names ([10850](https://github.com/pantsbuild/pants/pull/10850))
- Fix empty key for global options in run tracker ([10807](https://github.com/pantsbuild/pants/pull/10807))
- Locate bash before using it to locate BinaryPaths for other tools
([10858](https://github.com/pantsbuild/pants/pull/10858))

Refactoring, Improvements, and Tooling

- Move `PantsEnvironment` into `SessionValues`
([10862](https://github.com/pantsbuild/pants/pull/10862))
- Delete binaries/ and net/. ([10861](https://github.com/pantsbuild/pants/pull/10861))
- Add `RuleRunner.set_options()` ([10859](https://github.com/pantsbuild/pants/pull/10859))
- Improve support of MyPy requirements when Python 2 used ([10853](https://github.com/pantsbuild/pants/pull/10853))
- A script to download rust build helper binaries. ([10851](https://github.com/pantsbuild/pants/pull/10851))
- Hotfix merge conflict in MyPy tests. ([10867](https://github.com/pantsbuild/pants/pull/10867))

release_2.0.0b1

API Changes

- Default to setting `LC_ALL` and `LANG` in
subprocesses again ([10800](https://github.com/pantsbuild/pants/pull/10800))
- Default to `[python-infer].inits = false` ([10813](https://github.com/pantsbuild/pants/pull/10813))
- Deprecate `--interpreter-constraints` option where it
no-ops ([10833](https://github.com/pantsbuild/pants/pull/10833))
- Upgrade setuptools from 49.6.0 to 50.3.0 and wheel from 0.31.1 to
0.35.1 ([10803](https://github.com/pantsbuild/pants/pull/10803))

New Features

- Restore support for third-party requirements with MyPy ([10811](https://github.com/pantsbuild/pants/pull/10811))

Bugfixes

- Plumb the custom certs file through to Pip (via Pex) ([10837](https://github.com/pantsbuild/pants/pull/10837))
- Fix MyPy with Python 2-only third-party requirements ([10820](https://github.com/pantsbuild/pants/pull/10820))
- Fix `setup_py.with_binaries()` to automatically inject
`dependencies` ([10829](https://github.com/pantsbuild/pants/pull/10829))
- Fix run not working with foo:main entry point. ([10821](https://github.com/pantsbuild/pants/pull/10821))
- Fix `internal_only` PEXes runtime interpreter diverging
from buildtime ([10818](https://github.com/pantsbuild/pants/pull/10818))
- Local process cache validates that digests exist locally before
hitting ([10789](https://github.com/pantsbuild/pants/pull/10789))
- Better Ctrl-C handling in the `test --debug` case
([10835](https://github.com/pantsbuild/pants/pull/10835))
- Fix --pants-ignore-warnings behavior ([10845](https://github.com/pantsbuild/pants/pull/10845))
- Fix display of "Snapshotting" in dynamic UI ([10797](https://github.com/pantsbuild/pants/pull/10797))

Refactoring, Improvements, and Tooling

- Change Display impl of Key ([10848](https://github.com/pantsbuild/pants/pull/10848))
- OptionsBootstrapper is provided via a new SessionValues facility
rather than a Param ([10827](https://github.com/pantsbuild/pants/pull/10827))
- Internally stop ignoring missing imports with MyPy ([10828](https://github.com/pantsbuild/pants/pull/10828))
- Make `get_options_to_record` a 'public' api. ([10808](https://github.com/pantsbuild/pants/pull/10808))
- Useful equality for relevant options types ([10815](https://github.com/pantsbuild/pants/pull/10815))
- Clean nodes with uncacheable dependencies once per session ([10814](https://github.com/pantsbuild/pants/pull/10814))
- Disable pantsd when piping output for internal script ([10810](https://github.com/pantsbuild/pants/pull/10810))
- Simplify logging initialization ([10812](https://github.com/pantsbuild/pants/pull/10812))
- Remove support for "weak" Gets ([10805](https://github.com/pantsbuild/pants/pull/10805))
- Un-revert Add cache_failures option to Process type ([10796](https://github.com/pantsbuild/pants/pull/10796))
- Remove reset_interactive_output_stream ([10791](https://github.com/pantsbuild/pants/pull/10791))
- Allow creating empty directories with the engine ([10760](https://github.com/pantsbuild/pants/pull/10760))
- Use "output" and "input" instead of "product" and "subject"
([10790](https://github.com/pantsbuild/pants/pull/10790))
- Add graph test for UncacheableDeps nodes only running once ([10795](https://github.com/pantsbuild/pants/pull/10795))
- Fix our release script to use the correct Python ([10841](https://github.com/pantsbuild/pants/pull/10841))
- Refactor `core/util_rules/archive.py` to use
`BinaryPaths` ([10836](https://github.com/pantsbuild/pants/pull/10836))
- Work around trailing slash issue with protobuf codegen ([10849](https://github.com/pantsbuild/pants/pull/10849))
- Consolidate "runner" PEXes into "tool" PEXes ([10852](https://github.com/pantsbuild/pants/pull/10852))

Testing

- Re-export `QueryRule` from
`pants.testutil.rule_runner` ([10806](https://github.com/pantsbuild/pants/pull/10806))

Documentation

- Add documentation for the `graph` crate. ([10793](https://github.com/pantsbuild/pants/pull/10793))
- Prepare 1.30.1 ([10843](https://github.com/pantsbuild/pants/pull/10843))
- Prepare 1.30.2rc0 ([10846](https://github.com/pantsbuild/pants/pull/10846))

release_2.0.0b0

API Changes

- Upgrade to Pex 2.1.16. ([10782](https://github.com/pantsbuild/pants/pull/10782))
- Restore running internal only PEXes via discovered Python (10779)
([10788](https://github.com/pantsbuild/pants/pull/10779))

Bugfixes

- rules consume params to prevent some types of ambiguity ([10764](https://github.com/pantsbuild/pants/pull/10764))
- Fix xdg-open. ([10773](https://github.com/pantsbuild/pants/pull/10773))
- Hide BinaryPath test processes from TUI by default. ([10774](https://github.com/pantsbuild/pants/pull/10774))
- Signal handling fixes ([10758](https://github.com/pantsbuild/pants/pull/10758))
- Fix UUIDRequest scoping. ([10780](https://github.com/pantsbuild/pants/pull/10780))
- Fix `DictStringToStringField` not working with default
values ([10776](https://github.com/pantsbuild/pants/pull/10776))
- Sandbox Pex temporary files. ([10772](https://github.com/pantsbuild/pants/pull/10772))

Refactoring, Improvements, and Tooling

- remoting: move target_platform property into environment variable
([10713](https://github.com/pantsbuild/pants/pull/10713))
- Add the ability to capture all known scope options in run tracker.
([10778](https://github.com/pantsbuild/pants/pull/10778))
- fs_util cat-proto has --child-dir arg ([10228](https://github.com/pantsbuild/pants/pull/10228))
- Simplify --print-exception-stacktrace logic ([10786](https://github.com/pantsbuild/pants/pull/10786))
- Various ExceptionSink improvements ([10781](https://github.com/pantsbuild/pants/pull/10781))
- Revert "Run internal only pexes via discovered python. (10779)"
([10785](https://github.com/pantsbuild/pants/pull/10785))
- Support volatile processes. ([10768](https://github.com/pantsbuild/pants/pull/10768))
- Run internal only pexes via discovered python. ([10779](https://github.com/pantsbuild/pants/pull/10779))
- Fix a leaking pytest-cov abstraction. ([10775](https://github.com/pantsbuild/pants/pull/10775))
- Support tests for BinaryPaths. ([10770](https://github.com/pantsbuild/pants/pull/10770))

Documentation

- Prepare 1.30.1rc2 ([10783](https://github.com/pantsbuild/pants/pull/10783))
- Prepare 1.30.1rc1 ([10766](https://github.com/pantsbuild/pants/pull/10766))
- Explain how to fix dependency cycles ([10761](https://github.com/pantsbuild/pants/pull/10761))

release_2.0.0a3

API Changes

- Replace `cloc` with `count-loc`, using much
faster SCC program ([10740](https://github.com/pantsbuild/pants/pull/10740))
- Upgrade default isort from 4.6 to 5.5 ([10737](https://github.com/pantsbuild/pants/pull/10737))
- Disambiguate binary and lambda output. ([10735](https://github.com/pantsbuild/pants/pull/10735))

New Features

- Add `runtime_binary_dependencies` field to
`python_tests` target ([10756](https://github.com/pantsbuild/pants/pull/10756))
- Pass proxy-related env vars through to Pex calls. ([10762](https://github.com/pantsbuild/pants/pull/10762))
- Support custom CA bundles. ([10757](https://github.com/pantsbuild/pants/pull/10757))
- Add support to MyPy for first-party plugins ([10755](https://github.com/pantsbuild/pants/pull/10755))
- Filter log levels by target ([10729](https://github.com/pantsbuild/pants/pull/10729))

Bugfixes

- fix incorrect mapping of parameters into PyRemotingOptions struct
([10752](https://github.com/pantsbuild/pants/pull/10752))
- Fix MyPy to work by default with Python 3.6+ code and Black with
3.8+ code ([10750](https://github.com/pantsbuild/pants/pull/10750))
- Temporarily disable 3rd-party requirements support for MyPy ([10765](https://github.com/pantsbuild/pants/pull/10765))

Refactoring, Improvements, and Tooling

- Support binary dependencies in tests. ([10744](https://github.com/pantsbuild/pants/pull/10744))
- Add support to MyPy for third-party requirements and stubs (PEP 561)
([10753](https://github.com/pantsbuild/pants/pull/10753))
- Add new intrinsic `Paths` to avoid snapshotting ([10741](https://github.com/pantsbuild/pants/pull/10741))
- Remove unused FFI types and `tar_api.rs` ([10742](https://github.com/pantsbuild/pants/pull/10742))
- Remove daemonize method + tests ([10749](https://github.com/pantsbuild/pants/pull/10749))
- Some refactoring around pantsd and warning filtering ([10748](https://github.com/pantsbuild/pants/pull/10748))
- Refactor `pytest_runner_integration_test.py` ([10736](https://github.com/pantsbuild/pants/pull/10736))
- Switch the backend of AsyncSemaphore to tokio's Semaphore. ([10738](https://github.com/pantsbuild/pants/pull/10738))
- Refactor find_valid_field_sets. ([10732](https://github.com/pantsbuild/pants/pull/10732))
- Upgrade to Rust v1.46.0 ([10694](https://github.com/pantsbuild/pants/pull/10694))

Documentation

- Fix `./pants help $goal` showing the goal in "related
subsystems" ([10754](https://github.com/pantsbuild/pants/pull/10754))

release_2.0.0a2

New Features

- Support adding arbitrary env vars to test processes ([10715](https://github.com/pantsbuild/pants/pull/10715))
- Add a plugin hook for `setup-py` kwargs ([10721](https://github.com/pantsbuild/pants/pull/10721))

Bugfixes

- Fix the `testutil` wheel's imports not working due to
namespace packages ([10725](https://github.com/pantsbuild/pants/pull/10725))
- Fix Pipenv not parsing requirement extras ([10722](https://github.com/pantsbuild/pants/pull/10722))
- Fix invalid shebang for `BinaryPaths` script ([10710](https://github.com/pantsbuild/pants/pull/10710))
- Fix retrieval of bytes from artifacts in StreamingWorkunitHandler
([10698](https://github.com/pantsbuild/pants/pull/10698))

Refactoring, Improvements, and Tooling

- Improve Pylint to use
`--python-setup-resolve-all-constraints` ([10726](https://github.com/pantsbuild/pants/pull/10726))
- Reorganize `pants/backend/python` ([10724](https://github.com/pantsbuild/pants/pull/10724))
- Improve RuleGraph convergence time slightly ([10700](https://github.com/pantsbuild/pants/pull/10700))
- Snapshots of single files store normalized paths. ([10707](https://github.com/pantsbuild/pants/pull/10707))
- Add product type to the Rule trait to simplify unit testing.
([10720](https://github.com/pantsbuild/pants/pull/10720))

Testing

- Add `RuleRunner.get_target()` ([10714](https://github.com/pantsbuild/pants/pull/10714))
- Port more tests from `TestBase` to
`RuleRunner` ([10704](https://github.com/pantsbuild/pants/pull/10704))

Documentation

- Formalize support for VCS-style requirements via PEP 440 ([10728](https://github.com/pantsbuild/pants/pull/10728))

release_2.0.0a1

API Changes

- Upgrade default Black version to 20.8b1 ([10696](https://github.com/pantsbuild/pants/pull/10696))

Bugfixes

- Fix `test --debug` to be hermetic, but keep
`run` and `repl` non-hermetic ([10701](https://github.com/pantsbuild/pants/pull/10701))
- Properly fix setting a custom coverage config file ([10692](https://github.com/pantsbuild/pants/pull/10692))
- remoting: output directories in action results reference trees
([10691](https://github.com/pantsbuild/pants/pull/10691))

Refactoring, Improvements, and Tooling

- Unify logging implementations and remove simplelog ([10686](https://github.com/pantsbuild/pants/pull/10686))

Testing

- Rename `run_rule` to `run_rule_with_mocks`
([10702](https://github.com/pantsbuild/pants/pull/10702))
- Add `RuleRunner` as a Pytest-style replacement to
`TestBase` ([10699](https://github.com/pantsbuild/pants/pull/10699))
- Remove unused `TestBase` setup ([10697](https://github.com/pantsbuild/pants/pull/10697))

Documentation

- Fix stale comments in `logger.rs` ([10695](https://github.com/pantsbuild/pants/pull/10695))
- Document rule graph construction and open issues ([10690](https://github.com/pantsbuild/pants/pull/10690))

release_2.0.0a0

API Changes

- Temporarily disable protobuf support. ([10685](https://github.com/pantsbuild/pants/pull/10685))
- Simplify `python_requirement_library` by deprecating the
`python_requirement` object ([10669](https://github.com/pantsbuild/pants/pull/10669))
- Updated default version of pytest to 6.0.1 ([10328](https://github.com/pantsbuild/pants/pull/10328))

New Features

- Adds a `pipenv_requirements` macro ([10654](https://github.com/pantsbuild/pants/pull/10654))
- Add transitive excludes for `dependencies` with
`!!` ([10663](https://github.com/pantsbuild/pants/pull/10663))

Bugfixes

- Fix Coverage loading a custom config file ([10670](https://github.com/pantsbuild/pants/pull/10670))
- Fix Rust 3rdparty logs showing up with `--dynamic-ui`
([10640](https://github.com/pantsbuild/pants/pull/10640))
- Fix logging deadlock when trace logging is used ([10635](https://github.com/pantsbuild/pants/pull/10635))
- Fix project name canonicalization. ([10628](https://github.com/pantsbuild/pants/pull/10628))

Refactoring, Improvements, and Tooling

- Revert "Fix `run`, `repl`, and [test
--debug` to have hermetic environments (10668)"
([10688](https://github.com/pantsbuild/pants/pull/10688))
- Implement RuleGraph construction using data flow analysis ([10645](https://github.com/pantsbuild/pants/pull/10645))
- Fix `run`, `repl`, and [test
--debug` to have hermetic environments ([10668](https://github.com/pantsbuild/pants/pull/10668))
- Handle workunits corresponding to canceled Nodes. ([10659](https://github.com/pantsbuild/pants/pull/10659))
- Add support for JSON coverage reports ([10625](https://github.com/pantsbuild/pants/pull/10625))
- Add an FFI function for reading a `FrozenDict` ([10666](https://github.com/pantsbuild/pants/pull/10666))
- Stream output of `typecheck`, rather than dumping at the
end ([10656](https://github.com/pantsbuild/pants/pull/10656))
- Allow `binary` to be implemented without implementing
`run` ([10660](https://github.com/pantsbuild/pants/pull/10660))
- Reduce noisy log messages from `rule` params ([10658](https://github.com/pantsbuild/pants/pull/10658))
- Add type hints to `TestBase` ([10647](https://github.com/pantsbuild/pants/pull/10647))
- Refactoring in graph ([10637](https://github.com/pantsbuild/pants/pull/10637))
- Stream output of `test`, rather than dumping at the end
([10634](https://github.com/pantsbuild/pants/pull/10634))
- Preserve Pytest's exit code with `./pants test`
([10632](https://github.com/pantsbuild/pants/pull/10632))
- Rename `--per-target-caching` to
`--per-file-caching` for `lint` and
`fmt` ([10630](https://github.com/pantsbuild/pants/pull/10630))
- Upgrade setuptools from 49.2.0 to 49.60 ([10626](https://github.com/pantsbuild/pants/pull/10626))
- Allow `test --debug` to run on multiple targets
sequentially ([10629](https://github.com/pantsbuild/pants/pull/10629))
- Stream output of `fmt`, rather than dumping at the end
([10627](https://github.com/pantsbuild/pants/pull/10627))
- Stream output of `lint`, rather than dumping at the end
([10538](https://github.com/pantsbuild/pants/pull/10538))
- Add coverage reports as artifacts on the test goal workunit ([10623](https://github.com/pantsbuild/pants/pull/10623))

Testing

- Change `TestBase.request_product()` to take an iterable
of subjects ([10682](https://github.com/pantsbuild/pants/pull/10682))
- Only use `TestBase` for tests that run rules ([10680](https://github.com/pantsbuild/pants/pull/10680))
- Change `pants_integration_test.py` to use Pytest-style
functions ([10675](https://github.com/pantsbuild/pants/pull/10675))
- Consolidate `GoalRuleTestBase` into
`TestBase` ([10679](https://github.com/pantsbuild/pants/pull/10679))
- Rename `TestBase.request_single_product` to
`TestBase.request_product` ([10678](https://github.com/pantsbuild/pants/pull/10678))
- Reorganize `testutil/` ([10674](https://github.com/pantsbuild/pants/pull/10674))
- Add `PantsIntegrationTest.setup_tmpdir()` ([10673](https://github.com/pantsbuild/pants/pull/10673))
- Change `PantsIntegrationTest` to be hermetic by default
([10672](https://github.com/pantsbuild/pants/pull/10672))
- Remove unused `pytest-timeout` plugin from default
`--pytest-plugins` ([10631](https://github.com/pantsbuild/pants/pull/10631))
- Rename `PantsRunIntegrationTest` to
`PantsIntegrationTest` ([10664](https://github.com/pantsbuild/pants/pull/10664))
- Add tests for HTML and XML coverage reports. ([10211](https://github.com/pantsbuild/pants/pull/10211))

Documentation/Logging

- Provide better debugging information for rule parameters ([10665](https://github.com/pantsbuild/pants/pull/10665))
- Stop including the origin module in Debug logs ([10642](https://github.com/pantsbuild/pants/pull/10642))
- Change log level for rules and filesystem intrinsics to trace
([10639](https://github.com/pantsbuild/pants/pull/10639))
- Change some remote execution log messages to debug level ([10643](https://github.com/pantsbuild/pants/pull/10643))

release_2.0.0.dev9

API Changes

- Deprecate `--option-name-check-distance` ([10611](https://github.com/pantsbuild/pants/pull/10611))

New Features

- Allow restricting use of resolve_all_constraints. ([10614](https://github.com/pantsbuild/pants/pull/10614))

Bugfixes

- Revert 10603 so that `conftest.py` belongs to
`python_tests` again ([10619](https://github.com/pantsbuild/pants/pull/10619))
- Spawning against materialized binaries works. ([10577](https://github.com/pantsbuild/pants/pull/10577))
- Fix linter reports when there are multiple generated ([10612](https://github.com/pantsbuild/pants/pull/10612))
- Fix log not always showing up when `--dynamic-ui` is
set ([10616](https://github.com/pantsbuild/pants/pull/10616))

Refactoring, Improvements, and Tooling

- Simplify `core/goals/test.py` ([10622](https://github.com/pantsbuild/pants/pull/10622))
- Remove passive options mechanism ([10621](https://github.com/pantsbuild/pants/pull/10621))
- Speed up resolving requirements through
`--use-first-matching-interpreter` Pex flag ([10442](https://github.com/pantsbuild/pants/pull/10442))

release_2.0.0.dev8

API Changes

- Change `conftest.py` to default to
`python_library` rather than `python_tests`
([10603](https://github.com/pantsbuild/pants/pull/10603))
- Deprecate `--python-setup-platforms` ([10596](https://github.com/pantsbuild/pants/pull/10596))
- Make `zip_safe` default to False for
`python_binary` targets. ([10608](https://github.com/pantsbuild/pants/pull/10608))

New Features

- Add `--python-infer-string-imports` ([10609](https://github.com/pantsbuild/pants/pull/10609))
- Add `--pex-verbosity` option to facilitate debugging
([10604](https://github.com/pantsbuild/pants/pull/10604))

Bugfixes

- Fix binary running to correctly work with source roots. ([10607](https://github.com/pantsbuild/pants/pull/10607))
- Fix issues with REPL implementation ([10597](https://github.com/pantsbuild/pants/pull/10597))
- Fix regression in unmatched globs error message ([10595](https://github.com/pantsbuild/pants/pull/10595))
- Require `provides` field for a
`python_distribution` target ([10591](https://github.com/pantsbuild/pants/pull/10591))

Refactoring, Improvements, and Tooling

- Rename `determine_source_files.py` and
`strip_source_roots.py` ([10588](https://github.com/pantsbuild/pants/pull/10588))
- Add XML test results as artifacts on the test goal workunit ([10606](https://github.com/pantsbuild/pants/pull/10606))
- Add non-root pantsbuild user to remote execution image ([10583](https://github.com/pantsbuild/pants/pull/10583))
- Move `--files-not-found-behavior` and BUILD file
options out of bootstrap options ([10586](https://github.com/pantsbuild/pants/pull/10586))
- Remoting: limit retries for execution requests. ([10600](https://github.com/pantsbuild/pants/pull/10600))
- Ensure MyPy always runs with at least Python 3.6 internally.
([10602](https://github.com/pantsbuild/pants/pull/10602))

Documentation

- Improve errors for invalid `Get` objects ([10593](https://github.com/pantsbuild/pants/pull/10593))

release_2.0.0.dev7

API Changes

- A python_distribution target. ([10565](https://github.com/pantsbuild/pants/pull/10565))
- Enable Python dependency inference by default ([10520](https://github.com/pantsbuild/pants/pull/10520))
- Targets act as aliases for their files ([10511](https://github.com/pantsbuild/pants/pull/10511))

New Features

- Allow using file addresses on the command line ([10573](https://github.com/pantsbuild/pants/pull/10573))
- Add `--build-patterns` option ([10559](https://github.com/pantsbuild/pants/pull/10559))
- Allow protobuf_library targets to specify a python source root.
([10549](https://github.com/pantsbuild/pants/pull/10549))
- Restore the missing init injection logic. ([10517](https://github.com/pantsbuild/pants/pull/10517))
- Add `--pex-executable-search-path` ([10489](https://github.com/pantsbuild/pants/pull/10489))
- Add support for bandit output file. ([10412](https://github.com/pantsbuild/pants/pull/10412))

Bugfixes

- Sync before executing a process if running in Docker ([10568](https://github.com/pantsbuild/pants/pull/10568))
- Fix some issues from 10535 Address changes ([10555](https://github.com/pantsbuild/pants/pull/10555))
- Remove self-inflicted invalidation caused by exception logging.
([10521](https://github.com/pantsbuild/pants/pull/10521))
- Fix bug that caused setup-py to hang if src root==buildroot.
([10509](https://github.com/pantsbuild/pants/pull/10509))
- Fix ExternalTool to use relative paths ([10503](https://github.com/pantsbuild/pants/pull/10503))
- Fix `./pants binary` not outputting the full output path
([10506](https://github.com/pantsbuild/pants/pull/10506))

Refactoring, Improvements, and Tooling

- Stop validating that `!` dependency ignores are used
([10585](https://github.com/pantsbuild/pants/pull/10585))
- Lower the default for `--python-setup-resolver-jobs`
([10584](https://github.com/pantsbuild/pants/pull/10584))
- Automatically inject dependencies on sibling files when dependency
inference is unused ([10582](https://github.com/pantsbuild/pants/pull/10582))
- Use a constraints file in this repo. ([10579](https://github.com/pantsbuild/pants/pull/10579))
- Disable speculation by default ([10581](https://github.com/pantsbuild/pants/pull/10581))
- upgrade to Rust v1.45.2 ([10556](https://github.com/pantsbuild/pants/pull/10556))
- Move `--tag` and `--exclude-target-regexp`
out of bootstrap options ([10569](https://github.com/pantsbuild/pants/pull/10569))
- Allow for disabling pantsrc in OptionsBootstrapper independently of
options values ([10562](https://github.com/pantsbuild/pants/pull/10562))
- Refactor rule to resolve address specs ([10563](https://github.com/pantsbuild/pants/pull/10563))
- Stop using `AddressWithOrigin` for precise file
arguments ([10551](https://github.com/pantsbuild/pants/pull/10551))
- Always use generated subtargets with file arguments ([10550](https://github.com/pantsbuild/pants/pull/10550))
- Remove unused `SymbolTable` ([10544](https://github.com/pantsbuild/pants/pull/10544))
- Support and require disambiguated file addresses ([10535](https://github.com/pantsbuild/pants/pull/10535))
- Revert "Add cache_failures option to Process type (10433)"
([10534](https://github.com/pantsbuild/pants/pull/10534))
- Simplify source root stripping. ([10543](https://github.com/pantsbuild/pants/pull/10543))
- Improve source root stripping performance. ([10533](https://github.com/pantsbuild/pants/pull/10533))
- ArgSplitter operates relative to the buildroot. ([10540](https://github.com/pantsbuild/pants/pull/10540))
- Simplify the setup-py rules. ([10529](https://github.com/pantsbuild/pants/pull/10529))
- Allow `Process` to set its workunit level ([10528](https://github.com/pantsbuild/pants/pull/10528))
- Rely on the init-injection rules to trigger errors for
un-depended-on-and-relevant `__init__.py` files. ([10524](https://github.com/pantsbuild/pants/pull/10524))
- Remove rust source include from integration tests. ([10522](https://github.com/pantsbuild/pants/pull/10522))
- upgrade to rust v1.45.1 ([10523](https://github.com/pantsbuild/pants/pull/10523))
- Store SpanIds as integers ([10512](https://github.com/pantsbuild/pants/pull/10512))
- Remove `tarutil.py` ([10516](https://github.com/pantsbuild/pants/pull/10516))
- Refactor Pex usage through new helper rules ([10514](https://github.com/pantsbuild/pants/pull/10514))
- Get rid of the remote backend subsystems. ([10502](https://github.com/pantsbuild/pants/pull/10502))
- Move subsystem.py and its test into pants.option. ([10500](https://github.com/pantsbuild/pants/pull/10500))
- Lower the default local parallelism, and align the number of
swimlanes to it. ([10499](https://github.com/pantsbuild/pants/pull/10499))
- Rotate travis aws creds. ([10496](https://github.com/pantsbuild/pants/pull/10496))
- Add cache_failures option to Process type ([10433](https://github.com/pantsbuild/pants/pull/10433))
- Deprecate `Subsystem.get_options()` in favor of
`Subsystem.options` ([10493](https://github.com/pantsbuild/pants/pull/10493))
- Simplify script to check `__init__.py` files
([10488](https://github.com/pantsbuild/pants/pull/10488))
- Merge interactive_process.py into process.py ([10495](https://github.com/pantsbuild/pants/pull/10495))
- Export `Get` and `MultiGet` from
`rules.py` ([10485](https://github.com/pantsbuild/pants/pull/10485))
- Simplify `engine/internals/nodes.py` ([10487](https://github.com/pantsbuild/pants/pull/10487))
- Add cache_failures option to Process type ([10433](https://github.com/pantsbuild/pants/pull/10433))

Testing

- Disable remote execution due to RBE shutdown. ([10566](https://github.com/pantsbuild/pants/pull/10566))
- remoting: use non-RBE pants remote execution image ([10539](https://github.com/pantsbuild/pants/pull/10539))
- Avoid Python 3.8+ for Pylint test ([10548](https://github.com/pantsbuild/pants/pull/10548))
- avoid Py 3.8 for BanditIntegrationTest.test_3rdparty_plugin ([10546](https://github.com/pantsbuild/pants/pull/10546))
- set locale vars for remoting image ([10541](https://github.com/pantsbuild/pants/pull/10541))
- Test for rule graph issues with each distinct backend ([10519](https://github.com/pantsbuild/pants/pull/10519))
- docker image for remote execution without GCP/RBE ([10515](https://github.com/pantsbuild/pants/pull/10515))

Documentation/Logging

- Update docs urls to pantsbuild.org. ([10580](https://github.com/pantsbuild/pants/pull/10580))
- Improve log message when resolving entire lockfile. ([10578](https://github.com/pantsbuild/pants/pull/10578))
- Improve error message when the path component does not exist
([10570](https://github.com/pantsbuild/pants/pull/10570))
- Prepare 1.30.1rc0 ([10554](https://github.com/pantsbuild/pants/pull/10554))
- Improve error message for unrecognized BUILD file symbols ([10531](https://github.com/pantsbuild/pants/pull/10531))
- Reduce verbosity of finding binaries ([10525](https://github.com/pantsbuild/pants/pull/10525))
- Render all frames of a failure in Engine tracebacks ([10510](https://github.com/pantsbuild/pants/pull/10510))
- Fix bad indent of default in option help. ([10501](https://github.com/pantsbuild/pants/pull/10501))
- Fix display of default/current values in help. ([10490](https://github.com/pantsbuild/pants/pull/10490))
- Stop warning when return code != 0 or 1 ([10486](https://github.com/pantsbuild/pants/pull/10486))

release_1.30.1rc0
None

release_2.0.0.dev6

API Changes

- Upgrade to Pex 2.1.14 ([10437](https://github.com/pantsbuild/pants/pull/10437))

New Features

- Improve test output and allow it be configured. ([10484](https://github.com/pantsbuild/pants/pull/10484))

Bugfixes

- Make independent owners requests per file to improve memoization
([10491](https://github.com/pantsbuild/pants/pull/10491))
- Fix `PluginField` not working in production ([10469](https://github.com/pantsbuild/pants/pull/10469))
- Allow for more cyclic cases with file dependencies ([10475](https://github.com/pantsbuild/pants/pull/10475))
- Fix Protobuf when using source roots ([10453](https://github.com/pantsbuild/pants/pull/10453))
- Fix fromfile expansion to skip passthrough args. ([10457](https://github.com/pantsbuild/pants/pull/10457))
- Fix `--print-exception-stacktrace` not invalidating
pantsd ([10451](https://github.com/pantsbuild/pants/pull/10451))
- fixes in async_semaphore for concurrency ID calculation ([10436](https://github.com/pantsbuild/pants/pull/10436))

Refactoring, Improvements, and Tooling

- Eliminate most rule registration boilerplate. ([10477](https://github.com/pantsbuild/pants/pull/10477))
- Remove unused `util/` and `base/` code
([10462](https://github.com/pantsbuild/pants/pull/10462))
- Rename `UrlToFetch` to `DownloadFile`
([10468](https://github.com/pantsbuild/pants/pull/10468))
- Change the `PathGlobs`, `SnapshotSubset`,
and `UrlToFetch` intrinsics to return
`Digest` ([10449](https://github.com/pantsbuild/pants/pull/10449))
- Unify accessing options for a `GoalSubsystem` with
`Subsystem` ([10456](https://github.com/pantsbuild/pants/pull/10456))
- Rename `Workspace.materialize_directory()` to
`Workspace.write_digest()` ([10448](https://github.com/pantsbuild/pants/pull/10448))
- Remove unused `SingleFileExecutable` ([10443](https://github.com/pantsbuild/pants/pull/10443))
- Remove support for Protoc 2 ([10439](https://github.com/pantsbuild/pants/pull/10439))
- Make GoalSubsystem subclass Subsystem. ([10483](https://github.com/pantsbuild/pants/pull/10483))
- Tweaks to help output: ([10466](https://github.com/pantsbuild/pants/pull/10466))
- Cleanup `fs.py` ([10474](https://github.com/pantsbuild/pants/pull/10474))
- Add `UnionMembership.from_rules()` ([10472](https://github.com/pantsbuild/pants/pull/10472))
- Kill Reporting (mostly). ([10463](https://github.com/pantsbuild/pants/pull/10463))
- Add dependencies on conftest and init files via inference ([10441](https://github.com/pantsbuild/pants/pull/10441))
- Kill ./pants literals. ([10465](https://github.com/pantsbuild/pants/pull/10465))
- Remove Options <-> Parser cycle. ([10464](https://github.com/pantsbuild/pants/pull/10464))
- Revert "Use isort v5.x as the default version (10258)" ([10460](https://github.com/pantsbuild/pants/pull/10460))
- Demystify get_all_scoped_flag_names mypy kludges. ([10459](https://github.com/pantsbuild/pants/pull/10459))
- Optimize generated subtargets' interaction with
`SpecifiedSourceFiles` ([10454](https://github.com/pantsbuild/pants/pull/10454))
- Simplify Collection. ([10450](https://github.com/pantsbuild/pants/pull/10450))
- Improvements to help output. ([10444](https://github.com/pantsbuild/pants/pull/10444))
- Fixes to get the process_executor CLI tool working again. ([10435](https://github.com/pantsbuild/pants/pull/10435))
- Rename argument in streaming workunit callback ([10432](https://github.com/pantsbuild/pants/pull/10432))

Testing

- Only skip building wheels on PR builds ([10482](https://github.com/pantsbuild/pants/pull/10482))
- Skip building wheels if no release files have changed ([10481](https://github.com/pantsbuild/pants/pull/10481))
- Skip flaky GoalRuleIntegrationTest ([10479](https://github.com/pantsbuild/pants/pull/10479))
- A script to create an index.html for pants wheels on S3. ([10458](https://github.com/pantsbuild/pants/pull/10458))
- Get rid of remaining uses of init_subsystem. ([10427](https://github.com/pantsbuild/pants/pull/10427))

release_2.0.0.dev5

API Changes

- Use isort v5.x as the default version ([10258](https://github.com/pantsbuild/pants/pull/10258))
- Don't register any options as recursive. ([10415](https://github.com/pantsbuild/pants/pull/10415))

New Features

- Speed up `repl` to no longer rebuild a Pex on source
file changes ([10418](https://github.com/pantsbuild/pants/pull/10418))

Refactoring, Improvements, and Tooling

- Implement cycle detection in transitive_targets, and tolerate cycles
in file-addresses. ([10409](https://github.com/pantsbuild/pants/pull/10409))
- Stop using cargo-ensure-installed ([10400](https://github.com/pantsbuild/pants/pull/10400))
- Remove use of "quiet" in logging init ([10417](https://github.com/pantsbuild/pants/pull/10417))

Testing

- Port the plugin resolver test to v2 test style. ([10424](https://github.com/pantsbuild/pants/pull/10424))
- Refactor flake8 integration test to use create_options_bootstrapper
([10422](https://github.com/pantsbuild/pants/pull/10422))
- Increase timeout on project_info tests. ([10421](https://github.com/pantsbuild/pants/pull/10421))

release_2.0.0.dev4

API Changes

- Upgrade default mypy from 0.781 to 0.782 ([10404](https://github.com/pantsbuild/pants/pull/10404))
- Remove unused `--fmt-only` option ([10388](https://github.com/pantsbuild/pants/pull/10388))
- Don't turn on branch coverage by default. ([10386](https://github.com/pantsbuild/pants/pull/10386))
- access store server for action cache ([10329](https://github.com/pantsbuild/pants/pull/10329))
- Upgrade setuptools from 49.1.0 to 49.2.0 ([10347](https://github.com/pantsbuild/pants/pull/10347))
- Move `target.py` rules to
`engine/internals/graph.py` ([10372](https://github.com/pantsbuild/pants/pull/10372))

New Features

- Speed up `run` to no longer rebuild a Pex on source file
changes ([10410](https://github.com/pantsbuild/pants/pull/10410))
- Support for using a single global resolve. ([10405](https://github.com/pantsbuild/pants/pull/10405))
- Flake8 output file support. ([10371](https://github.com/pantsbuild/pants/pull/10371))
- A flag to force rerunning tests, bypassing the cache. ([10403](https://github.com/pantsbuild/pants/pull/10403))
- Support for injecting ancestor conftest.py files. ([10378](https://github.com/pantsbuild/pants/pull/10378))
- Allow ignoring dependencies with `!` ([10385](https://github.com/pantsbuild/pants/pull/10385))
- Allow dependencies on files in BUILD files ([10381](https://github.com/pantsbuild/pants/pull/10381))
- Unify generated subtargets with file arguments and
`--changed-since` ([10356](https://github.com/pantsbuild/pants/pull/10356))
- Use colors for log messages ([10278](https://github.com/pantsbuild/pants/pull/10278))

Bugfixes

- Print initial logs from pantsd using local time format [Issue
10128](https://github.com/pantsbuild/pants/issues/10128)
- Fix using relative paths with `--local-cache-dir` and
`--named-caches-dir` ([10398](https://github.com/pantsbuild/pants/pull/10398))
- Fix validation of dependencies ignores breaking with generated
subtargets ([10407](https://github.com/pantsbuild/pants/pull/10407))
- close write stream for CAS writes via ByteStream API ([10395](https://github.com/pantsbuild/pants/pull/10395))
- Fix recently added n^2 edge collection. ([10392](https://github.com/pantsbuild/pants/pull/10392))
- Align cache directory calculation so that the LMDB store location is
uniformly configurable. ([10391](https://github.com/pantsbuild/pants/pull/10391))
- remoting: use debug level for RE client workunits saved from remote
([10382](https://github.com/pantsbuild/pants/pull/10382))
- Always include types in the engine's definition of equality.
([10377](https://github.com/pantsbuild/pants/pull/10377))
- Have help respond to color ([10357](https://github.com/pantsbuild/pants/pull/10357))
- Display multiline help nicely. ([10366](https://github.com/pantsbuild/pants/pull/10366))

Refactoring, Improvements, and Tooling

- Add a hint about adjusting max_user_watches on Linux. ([10413](https://github.com/pantsbuild/pants/pull/10413))
- Delete unused v1 sources. ([10411](https://github.com/pantsbuild/pants/pull/10411))
- upgrade to Rust 1.45.0 ([10396](https://github.com/pantsbuild/pants/pull/10396))
- Tolerate target cycles when using dependency inference ([10393](https://github.com/pantsbuild/pants/pull/10393))
- Revert "Tolerate target cycles when using dependency inference
(10393)" ([10401](https://github.com/pantsbuild/pants/pull/10401))
- Add support for cycle-tolerant "weak" Gets ([10230](https://github.com/pantsbuild/pants/pull/10230))
- Make fetching wheels more resilient to network errors. ([10376](https://github.com/pantsbuild/pants/pull/10376))
- Avoid undefined behaviour around f64/u64 casts ([10374](https://github.com/pantsbuild/pants/pull/10374))
- Fix when an explicitly provided dependency supersedes an inferred
dependency ([10375](https://github.com/pantsbuild/pants/pull/10375))
- Fix dependency inference handling of dependencies on self ([10373](https://github.com/pantsbuild/pants/pull/10373))
- Render local process infrastructure errors more verbosely. ([10368](https://github.com/pantsbuild/pants/pull/10368))
- Use our validate goal instead of the custom header check. ([10361](https://github.com/pantsbuild/pants/pull/10361))
- Delete some unused testprojects code. ([10364](https://github.com/pantsbuild/pants/pull/10364))

Testing

- Upload coverage data to coveralls ([10299](https://github.com/pantsbuild/pants/pull/9919))

Documentation

- A script to generate options reference pages for the docsite.
([10387](https://github.com/pantsbuild/pants/pull/10387))

release_1.30.0
None

release_2.0.0.dev3

New Features

- Allow specifying address and file arguments at the same time
([10345](https://github.com/pantsbuild/pants/pull/10345))
- Make help-all dump a JSON blob containing all help info. ([10336](https://github.com/pantsbuild/pants/pull/10336))
- Integrate option value derivation into help. ([10313](https://github.com/pantsbuild/pants/pull/10313))
- Generate subtargets with file-level precision for dependency
inference ([10305](https://github.com/pantsbuild/pants/pull/10305))
- Add option for specifying environment variable with concurrency slot
([10297](https://github.com/pantsbuild/pants/pull/10297))
- Add support for specifying a custom coverage config file
(.coveragerc) ([10289](https://github.com/pantsbuild/pants/pull/10289))

Bugfixes

- Fix generated subtargets not working with `dependees`
([10355](https://github.com/pantsbuild/pants/pull/10355))
- Ignore dead symlinks on Linux as well as OSX ([10339](https://github.com/pantsbuild/pants/pull/10339))
- Fix bug where workunit completion was not reported correctly
([10277](https://github.com/pantsbuild/pants/pull/10277))
- Fix collision in workunit affecting patches. ([10350](https://github.com/pantsbuild/pants/pull/10350))
- Pass stream workunit context to all callbacks calls instead of just
passing it in the last call. ([10340](https://github.com/pantsbuild/pants/pull/10340))
- Fix awslambda configuration of Pex. ([10323](https://github.com/pantsbuild/pants/pull/10323))
- Hotfix Bandit breaking from stevedore 3.0 release ([10319](https://github.com/pantsbuild/pants/pull/10319))

Refactoring, Improvements, and Tooling

- Render only leaf rule graph errors, and improve error messages
([10311](https://github.com/pantsbuild/pants/pull/10311))
- Tweak `any_matches_filespec` to return which paths
matched ([10358](https://github.com/pantsbuild/pants/pull/10358))
- Add check for invalid concrete time dates ([10349](https://github.com/pantsbuild/pants/pull/10349))
- Explicit error on missing descriptions in the `goals`
goal. ([10348](https://github.com/pantsbuild/pants/pull/10348))
- Add module to default rule names. ([10341](https://github.com/pantsbuild/pants/pull/10341))
- add artifacts infrastructure on relevant types ([10344](https://github.com/pantsbuild/pants/pull/10344))
- Revert modernization of virtualenv to fix pants.pex deploy in CI.
([10343](https://github.com/pantsbuild/pants/pull/10343))
- Represent generated subtarget addresses as file names ([10338](https://github.com/pantsbuild/pants/pull/10338))
- Remove unusued RunTracker code ([10315](https://github.com/pantsbuild/pants/pull/10315))
- Minor wording change in help message ([10335](https://github.com/pantsbuild/pants/pull/10335))
- Display whether a scope is a goal or subsystem in help. ([10332](https://github.com/pantsbuild/pants/pull/10332))
- Fix `run_virtualenv` to target the current
`$PY`. ([10331](https://github.com/pantsbuild/pants/pull/10331))
- Modernize virtualenv. ([10330](https://github.com/pantsbuild/pants/pull/10330))
- Stop differentiating between constructors and types in FFI. ([10327](https://github.com/pantsbuild/pants/pull/10327))
- Use generated subtargets internally ([10312](https://github.com/pantsbuild/pants/pull/10312))
- Remove `Revision` ([10318](https://github.com/pantsbuild/pants/pull/10318))
- Bump to nails 0.6.0 to lay groundwork for cancelation of pantsd
runs. ([10320](https://github.com/pantsbuild/pants/pull/10320))
- remove polling remote execution client ([10306](https://github.com/pantsbuild/pants/pull/10306))
- Remove `Struct` and `addressable`
abstractions ([10309](https://github.com/pantsbuild/pants/pull/10309))
- Move SubprocessProcessHandler near its single use. ([10307](https://github.com/pantsbuild/pants/pull/10307))
- No longer special case the `dependencies` field with
TargetAdaptor ([10303](https://github.com/pantsbuild/pants/pull/10303))
- Use with_workunit everywhere ([10300](https://github.com/pantsbuild/pants/pull/10300))
- refactor execution strategy options into separate struct ([10304](https://github.com/pantsbuild/pants/pull/10304))
- Remove -q from the release run of reversion. ([10301](https://github.com/pantsbuild/pants/pull/10301))
- Simplify BUILD file parsing ([10298](https://github.com/pantsbuild/pants/pull/10298))

Testing

- Fix tests that relied on the docsite CNAME file. ([10337](https://github.com/pantsbuild/pants/pull/10337))
- Run unit tests and integration tests in CI in the same Pants run
([10333](https://github.com/pantsbuild/pants/pull/10333))
- Merge the unit and integration tests ([10302](https://github.com/pantsbuild/pants/pull/10302))
- Run code coverage on v2 unit tests. ([9919](https://github.com/pantsbuild/pants/pull/9919))

release_2.0.0.dev2

API Changes

- Rename `FilesContent` to `DigestContents`
and `InputFilesContent` to `CreateDigest`
([10290](https://github.com/pantsbuild/pants/pull/10290))
- remoting: default is streaming client ([10260](https://github.com/pantsbuild/pants/pull/10260))
- Upgrade setuptools from 47.3.1 to 49.1.0 ([10255](https://github.com/pantsbuild/pants/pull/10255))
- Upgrade packaging from 20.3 to 20.4 ([10256](https://github.com/pantsbuild/pants/pull/10256))
- Deprecate the --v1/--v2 global options. ([10245](https://github.com/pantsbuild/pants/pull/10245))

New Features

- Preserve source roots with Pytest output ([10165](https://github.com/pantsbuild/pants/pull/10165))

Bugfixes

- Downgrade to tokio 0.2.20 to fix
`materialize_directories`. ([10294](https://github.com/pantsbuild/pants/pull/10294))
- Expose method to bring down dynamic UI ([10234](https://github.com/pantsbuild/pants/pull/10234))
- Fix double-workunit-completion print ([10247](https://github.com/pantsbuild/pants/pull/10179))

Refactoring, Improvements, and Tooling

- Remove v1 `source/` abstractions like
`EagerFileSet` ([10292](https://github.com/pantsbuild/pants/pull/10292))
- Use f-strings in engine/util.py ([10288](https://github.com/pantsbuild/pants/pull/10288))
- Use dependency inference internally ([10283](https://github.com/pantsbuild/pants/pull/10283))
- Unify `LegacyPythonCallbackParser` and
`Parser` ([10281](https://github.com/pantsbuild/pants/pull/10281))
- Lower the default max-memory usage of pantsd. ([10287](https://github.com/pantsbuild/pants/pull/10287))
- Improvements and refactoring of help system. ([10280](https://github.com/pantsbuild/pants/pull/10280))
- Refactor WorkunitStore struct ([10242](https://github.com/pantsbuild/pants/pull/10242))
- remoting: check action cache for cached result before submitting a
request ([10253](https://github.com/pantsbuild/pants/pull/10253))
- Remove leftover v1 Target API bindings ([10276](https://github.com/pantsbuild/pants/pull/10276))
- Fix remaining internal dependency cycles ([10254](https://github.com/pantsbuild/pants/pull/10254))
- Remove `build_graph.Target` ([10266](https://github.com/pantsbuild/pants/pull/10266))
- Remove `cache/` and `invalidation/` ([10262](https://github.com/pantsbuild/pants/pull/10262))
- Remove obsolete root patterns. ([10263](https://github.com/pantsbuild/pants/pull/10263))
- Remove `Task`, `Goal`, and
`Context` ([10252](https://github.com/pantsbuild/pants/pull/10252))
- Simplify `git.py` and `scm.py` ([10251](https://github.com/pantsbuild/pants/pull/10251))
- Remove the internal tags `type_checked` and
`partially_type_checked` ([10244](https://github.com/pantsbuild/pants/pull/10244))
- Remove `HydratedTarget`, `AddressMapper`,
and `BuildGraph` ([10250](https://github.com/pantsbuild/pants/pull/10250))
- Remove all remaining v1 Targets ([10246](https://github.com/pantsbuild/pants/pull/10246))
- Remove `TestBase.context()` ([10248](https://github.com/pantsbuild/pants/pull/10248))
- Delete the rest of v1 `pants.backend.python` ([10240](https://github.com/pantsbuild/pants/pull/10240))
- Remove the concept of a scope category. ([10224](https://github.com/pantsbuild/pants/pull/10224))

Testing

- Remove stale "pants.pex for integration tests" mechanism ([10279](https://github.com/pantsbuild/pants/pull/10279))
- Re-enable RBE ([10284](https://github.com/pantsbuild/pants/pull/10284))
- Temporarily disable remote execution in CI ([10268](https://github.com/pantsbuild/pants/pull/10268))
- Upgrade responses from 0.10.14 to 0.10.15 ([10257](https://github.com/pantsbuild/pants/pull/10257))
- Increase pylint integration tests timeout. ([10261](https://github.com/pantsbuild/pants/pull/10261))
- Fix broken Pylint test from new isort release ([10259](https://github.com/pantsbuild/pants/pull/10259))
- Simplify ci.py now that we have no v1 tests ([10241](https://github.com/pantsbuild/pants/pull/10241))

release_2.0.0.dev1

API Changes

- Get rid of --plugins2/--backend-packages2 ([10231](https://github.com/pantsbuild/pants/pull/10231))
- Deprecate `--changed-include-dependees` in favor of
`--changed-dependees` ([10217](https://github.com/pantsbuild/pants/pull/10217))
- Remove `pants.contrib.mypy` plugin in favor of v2
implementation ([10157](https://github.com/pantsbuild/pants/pull/10157))
- Remove `--coverage-py-omit-test-sources` ([10202](https://github.com/pantsbuild/pants/pull/10202))
- Gets rid of the v1 GoalRunner. ([10167](https://github.com/pantsbuild/pants/pull/10167))
- Remove `pants.backend.jvm` ([10218](https://github.com/pantsbuild/pants/pull/10218))
- Remove --zipkin-trace-v2 option ([10184](https://github.com/pantsbuild/pants/pull/10184))
- Remove `core_tasks/` and most of `task/`
([10236](https://github.com/pantsbuild/pants/pull/10236))
- Remove v1 portions of `backend/native` and
`ipex` ([10187](https://github.com/pantsbuild/pants/pull/10187))
- Delete v1 python backend task code ([10223](https://github.com/pantsbuild/pants/pull/10223))
- Remove v1 Python `unpack_whls`, `bundle`,
and `repl` ([10204](https://github.com/pantsbuild/pants/pull/10204))
- Remove Thrift ([10171](https://github.com/pantsbuild/pants/pull/10171))
- Remove `TestBase.create_library()` and
`TestBase.target()` ([10237](https://github.com/pantsbuild/pants/pull/10237))
- Remove some v1 parts of `testutil/` ([10233](https://github.com/pantsbuild/pants/pull/10233))

New Features

- Add new `typecheck` goal for MyPy ([10212](https://github.com/pantsbuild/pants/pull/10212))
- Properly handle PEP 420 namespace packages ([10183](https://github.com/pantsbuild/pants/pull/10183))
- Add support for creating multiple coverage reports ([9997](https://github.com/pantsbuild/pants/pull/9997))
- Add the ability to write/output the raw coverage file. ([10195](https://github.com/pantsbuild/pants/pull/10195))
- Log Coverage report name as part of the console message. ([10194](https://github.com/pantsbuild/pants/pull/10194))
- Attempt to adjust file handle limits and warn if they cannot be
adjusted ([10174](https://github.com/pantsbuild/pants/pull/10174))

Bugfixes

- Fix `--changed-dependees` to work when v1 is disabled
([10235](https://github.com/pantsbuild/pants/pull/10235))
- Teach `pants_requirement()` to work with dependency
inference ([10232](https://github.com/pantsbuild/pants/pull/10232))
- Remove indentation in process errors. ([10181](https://github.com/pantsbuild/pants/pull/10181))
- Automatically include `__init__.py` files ([10166](https://github.com/pantsbuild/pants/pull/10166))
- Fix AddPrefix to correctly add arbitrarily many parent components
([10189](https://github.com/pantsbuild/pants/pull/10189))
- Fix `dependencies --transitive` to include target roots
that are also dependencies ([10186](https://github.com/pantsbuild/pants/pull/10186))
- Fix MyPy to include `resources`, but still not
`files` ([10168](https://github.com/pantsbuild/pants/pull/10168))

Refactoring, Improvements, and Tooling

- Reduce time spend grabbing locks in workunit code ([10179](https://github.com/pantsbuild/pants/pull/10179))
- local_cas supports an instance-name ([10225](https://github.com/pantsbuild/pants/pull/10225))
- local_cas supports GetCapabilities request ([10226](https://github.com/pantsbuild/pants/pull/10226))
- Refactor remoting options into separate struct ([10215](https://github.com/pantsbuild/pants/pull/10215))
- remoting: log RE capabilities and refresh REv2 proto ([10155](https://github.com/pantsbuild/pants/pull/10155))
- Fix stray type error in fs.py ([10182](https://github.com/pantsbuild/pants/pull/10182))
- Remove redundant cast call ([10196](https://github.com/pantsbuild/pants/pull/10196))
- Use debug level for remote store workunits ([10238](https://github.com/pantsbuild/pants/pull/10238))
- Simplify Get implementation. ([10178](https://github.com/pantsbuild/pants/pull/10178))
- Delete the old BinaryTool mechanism. ([10239](https://github.com/pantsbuild/pants/pull/10239))
- Delete more v1 task-related integration tests. ([10210](https://github.com/pantsbuild/pants/pull/10210))
- Refactor coverage integration tests ([10209](https://github.com/pantsbuild/pants/pull/10209))
- Stop using deprecated assertEquals ([10197](https://github.com/pantsbuild/pants/pull/10197))
- Remove `ivy/` and most of `java/` ([10222](https://github.com/pantsbuild/pants/pull/10222))
- Remove Bundle and App code ([10221](https://github.com/pantsbuild/pants/pull/10221))
- Remove more zipkin-related code ([10207](https://github.com/pantsbuild/pants/pull/10207))
- Remove unused `list_backends.py` ([10205](https://github.com/pantsbuild/pants/pull/10205))
- Remove internal `contrib/` infrastructure ([10177](https://github.com/pantsbuild/pants/pull/10177))
- Rewrite/delete some tests that involve v1 tasks. ([10219](https://github.com/pantsbuild/pants/pull/10219))
- Remove JVM testprojects ([10216](https://github.com/pantsbuild/pants/pull/10216))
- Stop testing `testprojects::` ([10170](https://github.com/pantsbuild/pants/pull/10170))
- Remove the src/{scala|java} directories. ([10201](https://github.com/pantsbuild/pants/pull/10201))
- Delete examples/src/{java,scala}. ([10198](https://github.com/pantsbuild/pants/pull/10198))
- Stop running JVM tests written in Java/Scala ([10175](https://github.com/pantsbuild/pants/pull/10175))
- Move `scm/` and `util/` tests to
`src` ([10176](https://github.com/pantsbuild/pants/pull/10176))
- Nuke more v1 tests ([10172](https://github.com/pantsbuild/pants/pull/10172))
- upgrade tokio to 0.2.21 ([10191](https://github.com/pantsbuild/pants/pull/10191))
- upgrade futures crate to 0.3.5 ([10190](https://github.com/pantsbuild/pants/pull/10190))
- upgrade async-trait crate to 0.1.36 ([10193](https://github.com/pantsbuild/pants/pull/10193))
- upgrade crossbeam-channel create so only one copy ([10192](https://github.com/pantsbuild/pants/pull/10192))
- upgrade indexmap crate ([10199](https://github.com/pantsbuild/pants/pull/10199))
- upgrade parking_lot crate ([10200](https://github.com/pantsbuild/pants/pull/10200))

Documentation

- Prepare 1.30.0rc1. ([10188](https://github.com/pantsbuild/pants/pull/10188))

release_2.0.0.dev0

API Changes

- Remove v1 JVM backend Tasks. ([10142](https://github.com/pantsbuild/pants/pull/10142))
- Remove `targets` goal in favor of
`target-types` goal ([10145](https://github.com/pantsbuild/pants/pull/10145))
- Remove deprecated `Get[P](S)` syntax in favor of
`Get(P, S)` ([10148](https://github.com/pantsbuild/pants/pull/10148))
- Remove v1 `login`, `server`, and
`killserver` goals ([10144](https://github.com/pantsbuild/pants/pull/10144))
- Remove v1 `minimize`, `filemap`,
`paths`, `sort`, and `depmap`
goals ([10135](https://github.com/pantsbuild/pants/pull/10135))
- Replace v1 `dependees`, `dependencies`,
`filedeps`, and `filter` with v2 ([10117](https://github.com/pantsbuild/pants/pull/10117))
- Remove the v1 scrooge contrib plugin. ([10127](https://github.com/pantsbuild/pants/pull/10127))
- Remove support for `pants.ini` ([10123](https://github.com/pantsbuild/pants/pull/10123))
- Remove the v1 `export` goal ([10122](https://github.com/pantsbuild/pants/pull/10122))
- Remove `pants.backend.docgen` ([10121](https://github.com/pantsbuild/pants/pull/10121))
- Remove v1 `idea-plugin` goal ([10115](https://github.com/pantsbuild/pants/pull/10115))
- Remove v1 Java Protobuf implementation ([10111](https://github.com/pantsbuild/pants/pull/10111))
- Remove `pants.contrib.node` plugin ([10113](https://github.com/pantsbuild/pants/pull/10113))
- Remove v1 `bash-completion` goal ([10112](https://github.com/pantsbuild/pants/pull/10112))
- Remove watchman. ([10114](https://github.com/pantsbuild/pants/pull/10114))
- Upgrade default mypy version from 0.780 to 0.781 ([10109](https://github.com/pantsbuild/pants/pull/10109))
- Remove `pants.contrib.go` plugin ([10107](https://github.com/pantsbuild/pants/pull/10107))
- Remove v1 Python Grpcio codegen backend ([10108](https://github.com/pantsbuild/pants/pull/10108))
- Remove deprecated `--v2-ui` in favor of
`--dynamic-ui` ([10105](https://github.com/pantsbuild/pants/pull/10105))
- Remove deprecated `--enable-pantsd` in favor of
`--pantsd` ([10104](https://github.com/pantsbuild/pants/pull/10104))
- Remove deprecated `pytest-coverage` scope in favor of
`coverage-py` ([10103](https://github.com/pantsbuild/pants/pull/10103))
- Remove `pants.contrib.confluence` ([10106](https://github.com/pantsbuild/pants/pull/10106))

New Features

- Add support for MyPy to Pants v2 ([10132](https://github.com/pantsbuild/pants/pull/10132))
- Changes to support Django. ([10088](https://github.com/pantsbuild/pants/pull/10088))
- Add support for enum list options. ([10083](https://github.com/pantsbuild/pants/pull/10083))

Bugfixes

- Do not render pytest at info by default, but give it a description.
([10164](https://github.com/pantsbuild/pants/pull/10164))
- Preserve source roots in MyPy and Pylint output ([10159](https://github.com/pantsbuild/pants/pull/10159))
- Do not include resource targets in v2 MyPy chroot ([10154](https://github.com/pantsbuild/pants/pull/10154))
- Set dynamic-ui default based on CI ([10140](https://github.com/pantsbuild/pants/pull/10140))
- Fix Pytest XML reports and Coverage breaking with remote execution
([10136](https://github.com/pantsbuild/pants/pull/10136))
- Retry for filesystem changes more quickly, indefinitely, and with
logging ([10139](https://github.com/pantsbuild/pants/pull/10139))
- Normalize paths before determining whether we can watch them.
([10130](https://github.com/pantsbuild/pants/pull/10130))

Refactoring, Improvements, and Tooling

- Remove use of importlib for native_engine loading ([10161](https://github.com/pantsbuild/pants/pull/10161))
- Update sha2 crate dependency ([10163](https://github.com/pantsbuild/pants/pull/10163))
- Remove unused rust deps. ([10162](https://github.com/pantsbuild/pants/pull/10162))
- Add message field on workunits and use it to replace some explicit
logging ([10158](https://github.com/pantsbuild/pants/pull/10158))
- Expose the types consumed to produce a type in a RuleGraph. ([10153](https://github.com/pantsbuild/pants/pull/10153))
- Upgrade setuptools from 44.0.0 to 47.3.1 ([10149](https://github.com/pantsbuild/pants/pull/10149))
- Support for using unstripped python sources ([10138](https://github.com/pantsbuild/pants/pull/10138))
- fix snapshot subset testing and unrevert 9779 ([10146](https://github.com/pantsbuild/pants/pull/10146))
- Revert "Make SnapshotSubset() faster (9779)" ([10143](https://github.com/pantsbuild/pants/pull/10143))
- Make SnapshotSubset() faster ([9779](https://github.com/pantsbuild/pants/pull/9779))
- upgrade to rust v1.44.1 ([10125](https://github.com/pantsbuild/pants/pull/10125))
- Remove `BuildFile` ([10102](https://github.com/pantsbuild/pants/pull/10102))

Testing

- Enable test timeouts for python in v2. ([10147](https://github.com/pantsbuild/pants/pull/10147))
- Delete many v1 tests. ([10116](https://github.com/pantsbuild/pants/pull/10116))
- enable REv2 streaming client in CI ([9989](https://github.com/pantsbuild/pants/pull/9989))

Documentation

- Remove the v1 docsite ([10120](https://github.com/pantsbuild/pants/pull/10120))

release_1.28.1rc0
None

release_1.27.1rc0
None

release_1.29.0
None

release_1.29.0rc4
None

release_1.29.0rc3
None

release_1.29.0rc2
None

release_1.29.0rc1
None

release_1.28.0
None

release_1.27.0
None

release_1.28.0rc2
None

release_1.28.0rc1
None

release_1.27.0rc2
None

release_1.28.0.dev2
None

release_1.28.0.dev1
None

release_1.27.0rc0
None

release_1.27.0.dev2
None

release_1.27.0.dev1
None

release_1.27.0.dev0
None

release_1.25.0rc1
None

release_1.25.0.dev3
None

release_1.24.0rc1
None

release_1.24.0.dev3
None

release_1.23.0
None

release_1.24.0.dev1
None

release_1.23.0rc0
None

release_1.23.0.dev0
None

release_1.21.0.dev0
None

release_1.20.0.dev2
None

release_1.19.0
None

release_1.18.0.dev1
None

release_1.16.0rc5
None

release_1.17.0.dev1
None

release_1.17.0.dev0
None

release_1.16.0rc0
None

release_1.16.0.dev4
None

release_1.16.0.dev2
None

release_1.15.0rc3
None

release_1.15.0rc2
None

release_1.16.0.dev0
None

release_1.15.0rc0
None

release_1.15.0.dev4
None

release_1.14.0
None

release_1.15.0.dev1
None

release_1.14.0rc3
None

release_1.15.0.dev0
None

release_1.14.0.dev3
None

release_1.14.0.dev1
None

release_1.13.0
None

release_1.13.0rc1
None

release_1.13.0rc0
None

release_1.12.0
None

release_1.13.0.dev2
None

release_1.11.0rc3
None

release_1.13.0.dev1
None

release_1.10.0
None

release_1.12.0rc0
None

release_1.12.0.dev1
None

release_1.12.0.dev0
None

release_1.11.0rc1
None

release_1.11.0rc0
None

release_1.11.0.dev3
None

release_1.11.0.dev2
None

release_1.11.0.dev1
None

release_1.10.0rc1
None

release_1.9.0
None

release_1.10.0.dev5
None

release_1.10.0.dev4
None

release_1.10.0.dev3
None

release_1.9.0rc1
None

release_1.9.0rc0
None

release_1.9.0.dev1
None

release_1.9.0.dev0
None

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.