<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>