This is the official v1.0.0 release. All backward-compatibility guarantees listed in the specification will be enforced from now on.
Changelog:
* API
* removed obsolete references to P4_14 in proto files
* fixed signed int (`int<W>`) representation: we now mandate sign-bit padding to be able to differentiate between positive & negative values while preserving our original goal of "non-disruptive P4 program updates"
* ensured canonical representation of compound types (e.g. stacks) with `P4Data`
* required `idle_timeout_ns` field to be set in the `table_entry` fields of the `IdleTimeoutNotification` message
* major overhaul of Value Set programming, which was very much out-of-sync with the P4_16 spec: support for multi-field matches, support for `match` annotation
* added support for numeric translation of Counter / Meter / Register indices
* corrected out-of-date comment in p4runtime.proto regarding match entry priority
* better semantics for `max_group_size` field (P4Info) and `max_size` (P4Runtime)
* specification
* typos & formatting issues fixed all over the place
* clarified the meaning of the `alias` field in the P4Info `Preamble` message
* described documentation annotations: `brief`, `description` and `pkginfo`, which influence P4Info generation
* added appendix listing all annotations primarily relevant to P4Info / P4Runtime; for each annotation we include a link to the relevant section in the spec
* explicitly documented order of error statuses in `WriteResponse`
* changed description of scenarios where P4 program is not available to emphasize usefulness of P4 program to build robust / correct systems
* clarified how each P4Runtime client is identified to the server
* improved description of master-slave arbitration and terminology used
* clarifications regarding action profile programming: 0 is not a valid weight for members, members cannot be repeated in an action profile group (although action specifications can be "repeated" when doing one-shot programming), members can be shared across different groups
* called out that idle timeout is not supported for default entries
* refined the definition of read-write symmetry: the order of `repeated` fields is no longer required to be preserved for "entity programming", unless explicitly specified on a case-by-case basis
* added information about which operations are allowed for immutable tables
* included some security considerations & recommendations in the spec