<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </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>Re: [P4-design] P4_14 changes</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
            <td>Thu, 3 Nov 2016 17:30:18 -0700</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
            <td>Changhoon Kim <a class="moz-txt-link-rfc2396E" href="mailto:chang@barefootnetworks.com"><chang@barefootnetworks.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>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">CC: </th>
            <td>Amin Vahdat <a class="moz-txt-link-rfc2396E" href="mailto:vahdat@google.com"><vahdat@google.com></a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr">All,
        <div><br>
        </div>
        <div>Since we discussed this minor revision last week Monday, a
          few members additionally expressed their support on this minor
          revision of P4_14. Given that we had enough feedback and
          support calls, I'll go ahead and replace the v1.0.2 version
          with this one (attached). </div>
        <div><br>
        </div>
        <div>I will also withdraw the v1.1 spec from the P4.org web page
          and share the following news to set the stage for P4_16.</div>
        <div><br>
        </div>
        <div><i><font face="arial, helvetica, sans-serif">"The P4
              Language Design Working Group is working actively to
              produce and publish a major revision of P4 (P4_16) soon.
              This new public pre-release spec will offer the following
              additional capabilities respective to the current
              widely-adoped P4 (P4_14):   </font></i></div>
        <div><i><font face="arial, helvetica, sans-serif"><br>
            </font></i></div>
        <div><i><font face="arial, helvetica, sans-serif">- Support for
              architectural heterogeneity (language-architecture
              decoupling)</font></i></div>
        <div><i><font face="arial, helvetica, sans-serif">- Support for
              functional heterogeneity</font></i></div>
        <div><i><font face="arial, helvetica, sans-serif">- Strong types</font></i></div>
        <div><i><font face="arial, helvetica, sans-serif">- Improvement
              on code re-usability</font></i></div>
        <div><i><font face="arial, helvetica, sans-serif">"</font></i></div>
        <div><i><font face="arial, helvetica, sans-serif"><br>
            </font></i></div>
        <div><i><font face="arial, helvetica, sans-serif"><br>
            </font></i></div>
        <div><br>
        </div>
        <div class="gmail_extra">
          <div class="gmail_quote">On Sun, Oct 23, 2016 at 12:31 PM,
            Changhoon Kim <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:chang@barefootnetworks.com" target="_blank">chang@barefootnetworks.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div dir="ltr">All,
                <div><br>
                </div>
                <div>Based on some feedback from a few p4-design
                  members, we made a few more minor updates to this
                  P4_14 v1.0.3 draft. Again, the main goal of all these
                  changes is making the reference P4 software switch
                  (BMv2) and the P4_14 spec as close as possible in
                  terms of primitive actions supported and their
                  details. This will help P4 users -- especially new P4
                  writers -- learn P4 programming more easily with few
                  surprises.</div>
                <div><br>
                </div>
                <div>Section 15.3 (page 67 and 68) has the summary of
                  changes.</div>
                <div><br>
                </div>
                <div>Let's also review this tomorrow and try to approve.</div>
                <div><br>
                </div>
                <div>-- Chang</div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div>
                  <div class="gmail_extra">
                    <div class="gmail_quote"><span>On Wed, Sep 28, 2016
                        at 11:09 PM, Vladimir Gurevich <span dir="ltr"><<a
                            moz-do-not-send="true"
                            href="mailto:vag@barefootnetworks.com"
                            target="_blank">vag@barefootnetworks.com</a>></span>
                        wrote:<br>
                      </span>
                      <div>
                        <div class="m_-3467199225133497341h5">
                          <blockquote class="gmail_quote"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <div dir="ltr">Hi Chang,
                              <div>
                                <ol>
                                  <li>What is the status of other
                                    arithmetic and logical primitives
                                    beyond add()? They are available in
                                    BMv2-simple_switch and some of them
                                    are being used in switch.p4 for
                                    example (bit_xor() to name one)?</li>
                                  <li>What's the status of the
                                    primitive modify_field_rng_uni<wbr>form(dst,
                                    lower_boundary, upper_boundary) ? It
                                    has been added to BMv2-simple_switch
                                    a while ago, is used in switch.p4
                                     and in any case people need some
                                    sort of randomness<br>
                                  </li>
                                  <li>What's the decision on
                                    execute_meter() and count() in
                                    relation to direct meters and
                                    counters? There were two schools of
                                    thought: </li>
                                  <ol>
                                    <li>They are not needed and are
                                      implicitly added to all actions
                                      referenced in the table</li>
                                    <li>There should be a special form
                                      of these primitives
                                      (count(counter_ref) and
                                      execute_meter(meter_ref), i.e.
                                      without index/destination field)
                                      that can OPTIONALLY be added to
                                      some or all actions, mentioned in
                                      the table, therefore providing
                                      more flexibility to the user and
                                      reducing the amount of implicitly
                                      generated code </li>
                                  </ol>
                                </ol>
                                <div>Thanks,<br>
                                  Vladimir</div>
                              </div>
                              <div><br>
                              </div>
                              <div><br>
                              </div>
                            </div>
                            <div
                              class="m_-3467199225133497341m_-8451994827727690453HOEnZb">
                              <div
                                class="m_-3467199225133497341m_-8451994827727690453h5">
                                <div class="gmail_extra"><br>
                                  <div class="gmail_quote">On Tue, Sep
                                    27, 2016 at 11:11 PM, Changhoon Kim
                                    <span dir="ltr"><<a
                                        moz-do-not-send="true"
                                        href="mailto:chang@barefootnetworks.com"
                                        target="_blank">chang@barefootnetworks.com</a>></span>
                                    wrote:<br>
                                    <blockquote class="gmail_quote"
                                      style="margin:0 0 0
                                      .8ex;border-left:1px #ccc
                                      solid;padding-left:1ex">
                                      <div dir="ltr">Team,
                                        <div><br>
                                        </div>
                                        <div>We haven't had time to
                                          discuss these changes at our
                                          last meeting. Gordon, Peter,
                                          and a few other told me
                                          they're in favor of these
                                          tidying-up changes for P4_14.
                                          Please give me a holler in a
                                          day or two if you oppose to
                                          these. Otherwise, I'll publish
                                          these changes via P4.org late
                                          Friday.</div>
                                        <div><br>
                                        </div>
                                        <div>Thanks.</div>
                                        <div><br>
                                        </div>
                                        <div>-- Chang</div>
                                        <div>
                                          <div
class="m_-3467199225133497341m_-8451994827727690453m_-5873616731359524777h5">
                                            <div class="gmail_extra"><br>
                                              <div class="gmail_quote">On
                                                Thu, Sep 22, 2016 at
                                                10:03 AM, Peter Newman
                                                (petenewm) <span
                                                  dir="ltr"><<a
                                                    moz-do-not-send="true"
href="mailto:petenewm@cisco.com" target="_blank">petenewm@cisco.com</a>></span>
                                                wrote:<br>
                                                <blockquote
                                                  class="gmail_quote"
                                                  style="margin:0 0 0
                                                  .8ex;border-left:1px
                                                  #ccc
                                                  solid;padding-left:1ex">
                                                  <div
                                                    style="word-wrap:break-word">
                                                    Chang,
                                                    <div><br>
                                                    </div>
                                                    <div>Thanks for
                                                      tidying this up. I
                                                      had noticed that
                                                      the primitive
                                                      actions in
                                                      switch.p4 did not
                                                      exactly agree with
                                                      the spec. This
                                                      looks fine.</div>
                                                    <div><br>
                                                    </div>
                                                    <div>—Peter</div>
                                                    <div><br>
                                                    </div>
                                                    <div><br>
                                                      <div>
                                                        <div>
                                                          <div>
                                                          <div>On Sep
                                                          20, 2016, at
                                                          6:11 PM,
                                                          Changhoon Kim
                                                          <<a
                                                          moz-do-not-send="true"
href="mailto:chang@barefootnetworks.com" target="_blank">chang@barefootnetworks.com</a>>
                                                          wrote:</div>
                                                          <br>
                                                          </div>
                                                        </div>
                                                        <div>
                                                          <div>
                                                          <div>
                                                          <div dir="ltr">Hi
                                                          P4 designers,
                                                          <div><br>
                                                          </div>
                                                          <div>While
                                                          we're all
                                                          working busily
                                                          to review the
                                                          P4_16 proposal
                                                          and trying to
                                                          solidify it,
                                                          I'd like to
                                                          make a couple
                                                          proposals
                                                          related to a
                                                          completely
                                                          different
                                                          topic: P4_14.</div>
                                                          <div><br>
                                                          </div>
                                                          <div>1) The
                                                          currently
                                                          widely adopted
                                                          P4_14 spec is
                                                          the v1.0.2
                                                          version. All
                                                          the public
                                                          p4lang code
                                                          out there is
                                                          largely based
                                                          on this spec,
                                                          and I expect
                                                          that this
                                                          version will
                                                          continue to be
                                                          used for a
                                                          while, as
                                                          we'll phase
                                                          into P4_16.
                                                          Unfortunately
                                                          there are a
                                                          few minor
                                                          discrepancies
                                                          between the
                                                          v1.0.2 spec
                                                          and what's
                                                          actually
                                                          implemented in
                                                          p4lang/p4-hlir
                                                          and BMv2,
                                                          causing
                                                          confusion to
                                                          P4 beginners
                                                          and writers
                                                          right now. I
                                                          think it'll be
                                                          very helpful
                                                          for the P4
                                                          community if
                                                          we fix those
                                                          discrepancies
                                                          quickly. The
                                                          attached draft
                                                          -- which is
                                                          tentatively
                                                          versioned
                                                          v1.0.3, but
                                                          could be
                                                          officially
                                                          named P4_14 --
                                                          is an attempt
                                                          to fix those
                                                          issues. The
                                                          extent of
                                                          change is
                                                          minimal, and
                                                          the following
                                                          list
                                                          summarizes it.
                                                          There's a
                                                          revision
                                                          history in the
                                                          Appendix as
                                                          well. I
                                                          suggest we
                                                          review this
                                                          version
                                                          quickly and
                                                          publish it,
                                                          replacing the
                                                          v1.0.2 spec.</div>
                                                          <div>
                                                          <ul
                                                          style="font-size:12.8px">
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">Page 29: removed register layout in register
                                                          declaration.</span><br>
                                                          </li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">removed bracket-based register referencing
                                                          from </span><br>
                                                          <ul>
                                                          <span>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">the parameters of modify_field, add_to_field
                                                          and add
                                                          primitives</span></li>
                                                          </span>
                                                          </ul>
                                                          </li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:small">Page 27, Section 7 intro.</span></li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:small">Page 47, 9.1.2 Parameter Binding</span></li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:small">page 87, example code: Use register_read/write
                                                          primitives
                                                          instead.</span></li>
                                                          </ul>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">page 32: fixed execute_meter, <span
                                                          style="font-size:12.8px">modify_field_wi<wbr>th_hash_based_</span><span
style="font-size:12.8px">offset, </span></span><span
                                                          style="font-size:12.8px">added
register_read/write</span></li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">pages 37: </span><span style="font-size:12.8px">fixed
                                                          the name,</span><span
style="font-size:12.8px"> description and parameter ordering of </span><span
style="font-size:12.8px">modify_field_with_hash_base<wbr>d_</span><span
style="font-size:12.8px">offset.</span></li>
                                                          <li
                                                          style="margin-left:15px"><span
style="font-size:12.8px">pages 40, 41: fixed execute_meter and </span><span
style="font-size:12.8px">added register_read/write primitives.</span></li>
                                                          <li
                                                          style="margin-left:15px">Changed
                                                          optional
                                                          parameters of
                                                          push, pop,
                                                          resubmit,
                                                          recirculate,
                                                          clone_*
                                                          primitives to
                                                          mandatory
                                                          parameters.
                                                          Revised
                                                          pop/push
                                                          descriptions
                                                          accordingly. </li>
                                                          </div>
                                                          <div>2) The
                                                          v1.1 spec is
                                                          currently in a
                                                          pre-release
                                                          review state.
                                                          It hasn't
                                                          gotten much
                                                          traction, and
                                                          we weren't
                                                          able to secure
                                                          the necessary
                                                          code
                                                          contributions
                                                          that fully
                                                          realize this
                                                          version
                                                          either.
                                                          Meanwhile
                                                          P4_16 offers
                                                          language
                                                          features
                                                          addressing all
                                                          the goals we
                                                          wanted to
                                                          achieve with
                                                          v1.1,
                                                          including
                                                          extern types,
                                                          stronger type,
                                                          expression
                                                          support, etc.,
                                                          and even more.
                                                          Given that
                                                          we'll publish
                                                          P4_16 soon, I
                                                          suggest we
                                                          withdraw the
                                                          v1.1 spec.
                                                          That way,
                                                          we'll avoid
                                                          proliferation
                                                          of spec
                                                          variations and
                                                          minimize
                                                          confusion. <br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                          <div>Let me
                                                          know your
                                                          thought on
                                                          this. If
                                                          there's no
                                                          strong
                                                          objection,
                                                          I'll go ahead
                                                          and make these
                                                          changes by
                                                          next week.</div>
                                                          <div><br>
                                                          </div>
                                                          <div>Thanks.</div>
                                                          <div><br>
                                                          </div>
                                                          <div>-- Chang<br>
                                                          <div><br>
                                                          </div>
                                                          <div><br>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          </div>
                                                          <span><p4_14_v1.0.3-draft.pdf></span>______<wbr>______________________________<wbr>___________<br>
                                                          P4-design
                                                          mailing list<br>
                                                          <a
                                                          moz-do-not-send="true"
href="mailto:P4-design@lists.p4.org" target="_blank">P4-design@lists.p4.org</a><br>
                                                          <a
                                                          moz-do-not-send="true"
href="http://lists.p4.org/mailman/listinfo/p4-design_lists.p4.org"
                                                          target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-design_lists.p4.org</a><br>
                                                          <br>
                                                        </div>
                                                      </div>
                                                      <br>
                                                    </div>
                                                  </div>
                                                </blockquote>
                                              </div>
                                              <br>
                                            </div>
                                          </div>
                                        </div>
                                      </div>
                                      <br>
                                      ______________________________<wbr>_________________<br>
                                      P4-design mailing list<br>
                                      <a moz-do-not-send="true"
                                        href="mailto:P4-design@lists.p4.org"
                                        target="_blank">P4-design@lists.p4.org</a><br>
                                      <a moz-do-not-send="true"
                                        href="http://lists.p4.org/mailman/listinfo/p4-design_lists.p4.org"
                                        rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-design_lists.p4.org</a><br>
                                      <br>
                                      <br>
                                    </blockquote>
                                  </div>
                                  <br>
                                </div>
                              </div>
                            </div>
                          </blockquote>
                        </div>
                      </div>
                    </div>
                    <br>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </div>
  
<br /><br />
<hr style='border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;' />
<table style='border-collapse:collapse;border:none;'>
        <tr>
                <td style='border:none;padding:0px 15px 0px 8px'>
                        <a href="https://www.avast.com/antivirus">
                                <img border=0 src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo" />
                        </a>
                </td>
                <td>
                        <p style='color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica"; font-size:12pt;'>
                                Ezt az e-mailt az Avast víruskereső szoftver átvizsgálta.
                                <br><a href="https://www.avast.com/antivirus">www.avast.com</a>
                        </p>
                </td>
        </tr>
</table>
<br />
</body>
</html>