<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="moz-cite-prefix">On 05/27/2018 11:31 AM, Eric S. Raymond
      via devel wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20180527163108.622C53A42D4@snark.thyrsus.com">
      <pre wrap="">
* GOPREP: Clear the path to moving the codebase to Go. We haven't committed
to doing this yet, but the odds on that happening someday look high enough
that I think it is good to already be factoring it into our planning.
</pre>
    </blockquote>
    <br>
    Though it is known to some I have not mentioned this publicly until
    now; the De-globalization / Structification project's goal is to
    make the codebase easier to port over to Go if the time comes. The
    project has spawned a check of when variables are getting
    initialized, which also helps with GOPREP.<br>
    <br>
    <blockquote type="cite"
      cite="mid:20180527163108.622C53A42D4@snark.thyrsus.com">
      <pre wrap="">4. Returning to code simplification, every simplification helps with
GOPREP.  This one more so than most because it will dramatically
reduce the spread of platform-dependent code paths we have to map to
Go if and when it comes time to do that.
</pre>
    </blockquote>
    [...]<br>
    <br>
    <blockquote type="cite"
      cite="mid:20180527163108.622C53A42D4@snark.thyrsus.com">
      <pre wrap="">Reasons for GOPREP:

Go means (1) no more buffer-overrun attacks, ever, (2) no more memory-leak
issues, ever, (3) *vast* code simplification (LOC might easily drop 50%), (4)
greatly improved maintainability of what remains.
</pre>
    </blockquote>
    <br>
    There is also a benefit in that by cutting out lots of
    easy-to-screw-up C boilerplate code it dramatically lowers the
    barrier to entry for new developers to come in without being in
    terror of breaking something.<br>
    <br>
    <blockquote type="cite"
      cite="mid:20180527163108.622C53A42D4@snark.thyrsus.com">
      <pre wrap="">GOPREP:  Aside from the considerable labor of code translation, there is
only one problem blocking a move to Go.  That is how GC stop-the-world
pauses might stall refclock reports.
</pre>
    </blockquote>
    <br>
    [...]<br>
    <br>
    <blockquote type="cite"
      cite="mid:20180527163108.622C53A42D4@snark.thyrsus.com">
      <pre wrap="">= DEPENDENCIES =

The logical order to do these things in is: SINGLESOCK first.  Then
EVENTS, if we choose to do it.  Then NTS.  GOPREP isn't a task to be
scheduled (at least not yet) but a set of issues to keep an eye on.
</pre>
    </blockquote>
    <br>
    Fortunately most (all?) of what GOPREP needs before the translation
    proper begins is a win even if GOMOVE never happens.<br>
    <br>
    <br>
    <div class="moz-signature">-- <br>
      <i>"In the end; what separates a Man, from a Slave? Money? Power?
        No. A Man Chooses, a Slave Obeys."</i> -- Andrew Ryan
      <p>
        <i>"Utopia cannot precede the Utopian.
          It will exist the moment we are fit to occupy it."</i> --
        Sophia Lamb
      </p>
      <p>
        I work for the <a href="https://icei.org/">Internet Civil
          Engineering Institute</a>, help us save the Internet from
        Entropy!
      </p>
    </div>
  </body>
</html>