<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <div class="moz-forward-container"><br>
      <br>
      -------- Forwarded Message --------
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject:
            </th>
            <td>[P4-design] P4_16 v1.0.0 Release Candidate</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
            <td>Mon, 15 May 2017 21:47:05 +0000</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
            <td>Gordon Brebner <a class="moz-txt-link-rfc2396E" href="mailto:Gordon.Brebner@xilinx.com"><Gordon.Brebner@xilinx.com></a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:p4-design@lists.p4.org">p4-design@lists.p4.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:p4-design@lists.p4.org"><p4-design@lists.p4.org></a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Dear P4 Designers,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">We have a release candidate for P4_16
          v1.0.0:  <a class="moz-txt-link-freetext" href="https://p4lang.github.io/p4-spec/">https://p4lang.github.io/p4-spec/</a><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">At this point we are freezing the
          specification.  However, because many improvements were made
          over the weekend, we will let it sit for one more day before
          releasing the official final version.  This will allow any
          members of this group who have not been following the changes
          to catch up, and also leaves a small window for fixing any
          last typos that may have been introduced.  One beautification
          activity during this extra day is that Calin and Nate are
          working on fixing the formatting to make it look like the
          P4_14 spec (<a moz-do-not-send="true"
            href="https://github.com/p4lang/p4-spec/pull/219">https://github.com/p4lang/p4-spec/pull/219</a>)
          since the fonts in the generated PDF are under-attractive.  We
          will post the final version at midday tomorrow, in advance of
          the P4 Workshop on Wednesday.  <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I give my personal thanks to Mihai Budiu,
          Andy Fingerhut, Nate Foster, and Andy Keep, who basically
          worked round-the-clock over the past few days helping to
          polish this document.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Almost all of the changes made since last
          week were either editorial in nature or straightforward (e.g.,
          typo fixes).  However there were two non-trivial technical
          changes that we thought worth communicating to the group (per
          our technical bug fixes process):<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">1. We eliminated two-argument emit:<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">void emit<T>(bool b, T data);<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">since it can be emulated with the
          single-argument emit plus a conditional:<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">void emit<T>(b,data) ==> <o:p></o:p></p>
        <p class="MsoNormal">if(b) emit<T>(data);<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">As far as we know, this variant was not in
          active use.  We also clarified that emit handles headers,
          header stacks, header unions, and structs recursively built
          from those types.
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">2. We simplified the semantics of the
          setInvalid() method and assignments involving header unions.
           Previously the specification said that invoking setInvalid()
          on a field that is already invalid is a no-op.  Now it
          invalidates all fields in the union.  Likewise, previously the
          specification said that assigning an invalid header to an
          already-invalid union member was a no-op.  Now it invalidates
          all fields in the union.
          <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">We took this change because it is simpler
          and the old behaviors can be easily recovered if desired:<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">u.h1.setInvalid() ==> <o:p></o:p></p>
        <p class="MsoNormal">if (u.h1.isValid()) u.h1.setInvalid();<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">and<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">u.h1 = e_h1 ==> <o:p></o:p></p>
        <p class="MsoNormal">if (e_h1.isValid()) {<o:p></o:p></p>
        <p class="MsoNormal">  u.h1 = e_h1;<o:p></o:p></p>
        <p class="MsoNormal">} else if (u.h1.isValid()) {<o:p></o:p></p>
        <p class="MsoNormal">  u.h1.setInvalid();<o:p></o:p></p>
        <p class="MsoNormal">} else {<o:p></o:p></p>
        <p class="MsoNormal">  // no-op<o:p></o:p></p>
        <p class="MsoNormal">}<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Again, as far as we know, there is no code
          in active use that depends on the old semantics.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Best wishes,<o:p></o:p></p>
        <p class="MsoNormal">Gordon.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
      <br>
      <br>
      This email and any attachments are intended for the sole use of
      the named recipient(s) and contain(s) confidential information
      that may be proprietary, privileged or copyrighted under
      applicable law. If you are not the intended recipient, do not
      read, copy, or forward this email message or any attachments.
      Delete this email message and any attachments immediately.
      <br>
      <br>
    </div>
  <div id="DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br /> <table style="border-top: 1px solid #D3D4DE;">
        <tr>
      <td style="width: 55px; padding-top: 18px;"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><img src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif" alt="" width="46" height="29" style="width: 46px; height: 29px;" /></a></td>
                <td style="width: 470px; padding-top: 17px; color: #41424e; font-size: 13px; font-family: Arial, Helvetica, sans-serif; line-height: 18px;">Mentes a vírusoktól. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank" style="color: #4453ea;">www.avast.com</a>              </td>
        </tr>
</table>
<a href="#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1"> </a></div></body>
</html>