[9.2.0] Add an implicit _sort_key field to module extension tags (#29484) <!-- Thank you for contributing to Bazel! Please read the contribution guidelines: https://bazel.build/contribute.html --> ### Description Replaces the implicit `tag._sort_key` field introduced in https://github.com/bazelbuild/bazel/pull/27883 with an explicit method `module_ctx.tag_sort_key(tag)`. The implicit field can unintentionally break users who are iterating through all available fields using e.g. `dir(tag)`.Replaces the implicit `tag._sort_key` field introduced in https://github.com/bazelbuild/bazel/pull/27883 with an explicit method `module_ctx.tag_sort_key(tag)`. The implicit field can unintentionally break users who are iterating through all available fields using e.g. `dir(tag)`. ### Motivation Fixes https://github.com/bazelbuild/rules_rust/issues/3962Fixes https://github.com/bazelbuild/rules_rust/issues/3962 ### Build API Changes This does affect the Build API, and is not backwards compatible; but `tag._sort_key` was introduced earlier on HEAD, and hasn't been backported to a release branch yet. ### Checklist - [ ] I have added tests for the new use cases (if any). - [ ] I have updated the documentation (if applicable). ### Release Notes <!-- If this is a new feature, please add 'RELNOTES[NEW]: <description>' here. If this is a breaking change, please add 'RELNOTES[INC]: <reason>' here. If this change should be mentioned in release notes, please add 'RELNOTES: <reason>' here. --> RELNOTES: Added the `module_ctx.tag_sort_key(tag)` method, which returns an opaque object for the given tag that can be compared to derive the order in which tags from different classes appear in the MODULE.bazel file. Closes https://github.com/bazelbuild/bazel/pull/29343.Closes https://github.com/bazelbuild/bazel/pull/29343. PiperOrigin-RevId: 902647373 Change-Id: I177edef56f8946cf88e41ed35cc01403e537857c Commit https://github.com/bazelbuild/bazel/commit/a76b2e610b099aca138feb8d0ce231d0db060303 and https://github.com/bazelbuild/bazel/commit/a39cef7d8171fb39663f541ed03434bd126414dc --------- Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im> Co-authored-by: Xudong Yang <wyverald@gmail.com>
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md