Repository navigation
Prepare v1.6.0 release - #640
Conversation
* Added v1.6.0 changelist to revision history (and moved the member/group terminology entry from v1.5.0 to v1.6.0, since it landed after v1.5.0). * Set version to "v1.6.0" in various places. NOTE: these references need to be reset to "main"/"-dev" on the main branch after merging in this PR. Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>
Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>
Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>
|
@chrispsommers and @jafingerhut Looking for review. Hoping to cut a new version soon (ideally by EoW) and update the BCR accordingly before the P4 workshop |
chrispsommers
left a comment
There was a problem hiding this comment.
Hi Matthew, thanks for initiating this. My initial reaction was "LGTM" but Gemini is a bit more thorough (See below; my prompts are shown as block quotes and Gemini output is copied from the browser, sorry for the verbosity). I don't think there are any blockers but it might be nice to close some gaps. Some picky items could be glossed over, it's a matter of taste.
You could probably ask Gemini to close some of these things automatically. We want to avoid being too boringly detailed in the change list, trivial stuff could just be summarized in a sentence.
evaluate this PR and compare the process/methodology to previous release #586 and identify any inconsistency or gaps
Evaluation of PR #640: Prepare v1.6.0 release
Overview
PR #640 aims to stage and prepare the v1.6.0 release for p4lang/p4runtime. It updates version references across documentation, specifications, build configurations, and language bindings.
Comparison of Methodology: PR #640 vs. PR #586 (v1.5.0)
| Scope / Dimension | PR #586 (v1.5.0 Release) | PR #640 (v1.6.0 Release) |
|---|---|---|
| Spec Revision History | Updated spec revision history for v1.5.0. |
Added v1.6.0 changelist to the specification revision history. |
| Version Strings | Updated revnumber, proto links, guidance docs, Bazel, Rust crates. |
Updated revnumber, proto links, p4info guidance doc, bzlmod example, Rust crates, and root MODULE.bazel. |
| Post-Merge Cleanup Plan | Documented necessity to reset version strings back to main/head post-merge. |
Explicitly noted post-merge reset requirement back to main / 1.6.1-dev / head (citing commit d54978a). |
| Revision History Preservation | Clean bump from v1.4.1 to v1.5.0. |
Explicitly added commit 44f6427 ("Keep v1.5.0 revision history unchanged") to ensure prior release history remains pristine. |
Key Inconsistencies & Potential Gaps
-
Post-Merge Chore Dependency (Manual Tracking Risk)
- Issue: PR #640 notes that version references (such as
MODULE.bazel, Rust crate references, and spec links) must be immediately reset tomain/1.6.1-dev/headright after merging. - Gap: This relies on manual follow-up actions immediately post-merge without an open tracking issue or automated CI check/script to enforce post-release bumps.
- Issue: PR #640 notes that version references (such as
-
Root
MODULE.bazelvs. Example Modules- Observation: PR #640 explicitly updates the root
MODULE.bazelfromheadto1.6.0, in addition to the bzlmod example. - Verification Needed: Ensure all nested
MODULE.bazelfiles across examples/tests are consistently synchronized to1.6.0during the release commit, or left as intended for external usage.
- Observation: PR #640 explicitly updates the root
-
Release Tagging & BCR (Bazel Central Registry) Workflow
- Gap: PR #640 mentions updating the BCR prior to the P4 workshop. Tagging the repository (
v1.6.0) must happen at the exact merge commit before submitting the module to the BCR to ensure commit hash and checksum integrity align.
- Gap: PR #640 mentions updating the BCR prior to the P4 workshop. Tagging the repository (
examine the changes for 1.6.0 as listed in https://github.com/p4lang/p4runtime/pull/640/files#diff-4caec25e083ef1e197a0bbf1728d90632876bb55ff29a68d59d030faf45611a4 and identify gaps or inaccuracies based on commit history since 1.5.0. Only mention things needing attention.
Examination of Changes for 1.6.0 (P4Runtime-Spec.adoc)
1. Missing Core Protocol & Spec Changes in Summary
- Optional Value Parameter for Invariant/Direct Resources:
- Missing Change: Support for optional value parameters in Direct Meter / Direct Counter / Direct Alarm definitions or annotations was merged into the specification.
- Action Required: Add a sub-bullet under Action Profiles / Direct Resources or P4Info documenting the addition of optional value parameters.
asciidoclintCode Block & Formatting Cleanup:- Missing Change: Merged PR #629 ("tools: fix asciidoclint's silently-disabled checks and clean up resulting spec violations") repaired broken table structures, listing delimiters, and unescaped block markers across the specification text.
- Action Required: Add a bullet under Specification / Tooling mentioning the AsciiDoc specification linting fixes and markup standardizations.
2. Inaccurate or Incomplete Build Tooling Statements
- Python Dependency Bumps vs. Distribution Cleanup:
- Inaccuracy: The changelog states "Raised minimum supported Python, protobuf, and grpcio versions."
- Gap: It neglects PR #621 ("py: drop obsolete setuptools_scm_git_archive dependency"), which removed deprecated setup/build-backend dependencies from
py/. - Action Required: Explicitly note the removal of
setuptools_scm_git_archivealongside the dependency version bumps to accurately inform Python package maintainers.
- Go Tooling / CI Pipeline Dependencies Omitted:
- Missing Change: Multiple PRs updated Go tooling and CI runner configurations:
- Action Required: Add a [Go / CI] entry summarizing the Go toolchain updates, protobuf/gRPC dependency bumps, and CI fallback resilience improvements.
3. Rust Crate Inconsistencies (p4runtime-prost vs p4runtime-tonic)
- Inaccuracy in Baseline Bumps:
- In PR #640's
Cargo.tomldiffs,p4runtime-prostwas bumped from1.5.1-devto1.6.0, whereasp4runtime-tonicwas bumped from1.5.0to1.6.0. - Action Required: Verify if
p4runtime-tonicshould have been at1.5.1-devprior to release staging, or confirm whether Rust crate versions need explicit mention in the changelog text (e.g., under a [Rust] header matching Java/Python/Bazel).
- In PR #640's
Summary Checklist for PR #640 Changelog Updates
- Add Spec Features: Mention optional value parameters for direct resources/P4Info.
- Add Spec Quality Fixes: Reference AsciiDoc linting and spec formatting cleanup (PR #629).
- Clarify Python Changes: Mention dropping
setuptools_scm_git_archive(PR #621). - Add Go / CI Section: Note
google.golang.org/grpc&golang.org/x/netbumps,status.protodownload fallbacks (PR #622), and Go Docker environment alignment (PR #626).
jafingerhut
left a comment
There was a problem hiding this comment.
I am not aware of anything missing from this, but I have not performed a release of a new version of the spec personally before, so there might be something I'm unaware of.
Out of curiosity, is there a documented list of steps anywhere for creating a new P4Runtime API spec release, ideally that includes anything specific to Bazel, and/or the Java/Python/Rust generated code, and/or package releases that should accompany it (e.g. releasing a new version of the Python package on pypi.org?)
No, and it is an obvious gap. I think we should plug this in the near future e.g. with a RELEASING.md, although I don't want to hold up this release PR, it can be follow-up. |
Signed-off-by: Matthew Lam <matthew.lam.qwerty@gmail.com>
|
Thanks @chrispsommers! I fact-checked the Gemini suggestions against
|
@jafingerhut There isn't an obvious way at least to me for creating a new P4Runtime API spec release. I tried to look through the history of commits that Steffen made but nothing looked obvious to me. At least in terms of making changes to the API, I believe we have to run this codegen script: https://github.com/p4lang/p4runtime/blob/main/codegen/update.sh whenever we make changes to the P4Runtime API proto. I think we should also document how to cut a release because the steps aren't super obvious and I think I only kinda have a rough idea because of the work that I do for other BCR (bazel central registery repos) |
|
...
@matthewtlam I'd commented above that we could create a RELEASING.md document by mining previous releases and Github standard practices, and use it as a checklist for the future. We can discuss at the WG meeting. |
Prepares the v1.6.0 release, analogous to #586 (v1.5.0).
revnumber, proto link,p4info guidance doc, bzlmod example, Rust crates).
NOTE: these references need to be reset to "main" / "1.6.1-dev" / "head" on the main
branch after merging in this PR (cf. d54978a).
Also set the root
MODULE.bazelversion fromheadto1.6.0(to be resetto
headon main after merging, along with the references above).