<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <br>
    <br>
    <div class="moz-cite-prefix">On 1/2/20 9:59 AM, David Mason wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:9eb96ac0-fab7-4cb5-8a33-f094d53a8d09@Spark">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <title></title>
      <div name="messageBodySection">
        <div dir="auto">Rust uses a reference-counting collector for
          allocations that go beyond what the borrow-checker can handle.
          You have to explicitly use the RC allocation. Reference
          counting, as you may know is a more predictable memory
          allocation technique and works well for many data structures,
          such as trees (binary or otherwise). It however has problems
          with cyclic data structures (doubly-linked lists, general
          graphs, etc.). Since the reference-counted allocations are
          explicit, it is usually not onerous for the programmer to
          handle the de-allocation of these data structures. Having a
          built-in RC collector is a big win over C/C++ - your effective
          alternatives.
        </div>
      </div>
    </blockquote>
    Thanks for letting me know. Don't know if it will be solved as
    that's a problem in my view.<br>
    <br>
    Nick<br>
    <blockquote type="cite"
      cite="mid:9eb96ac0-fab7-4cb5-8a33-f094d53a8d09@Spark">
      <div name="messageBodySection">
        <div dir="auto">
          <div dir="auto">If you aren’t willing to deal with the
            reference counter, your closest choices to Rust are D, Nim,
            or (less close) Go. But if you look at the benchmark game
            site, you’ll see that garbage-collected languages are often
            a factor of 3 slower than Rust/C/C++. If that degree of
            performance matters to you, I think you should use Rust
            rather than C or C++. If it doesn’t, you have a plethora of
            choices, including Go, Java, C#, Haskell, Python, Lisp, or
            (my favoured) Smalltalk.</div>
        </div>
      </div>
      <div name="messageSignatureSection"><br>
        <div class="matchFont">../Dave</div>
      </div>
      <div name="messageReplySection">On Jan 1, 2020, 6:09 PM -0500,
        Nicholas Krause <a class="moz-txt-link-rfc2396E" href="mailto:xerofoify@gmail.com"><xerofoify@gmail.com></a>, wrote:<br>
        <blockquote type="cite" class="spark_quote" style="margin: 5px
          5px; padding-left: 10px; border-left: thin solid #1abc9c;"><br>
          <br>
          <div class="moz-cite-prefix">On 1/1/20 11:44 AM, David Mason
            wrote:<br>
          </div>
          <blockquote type="cite"
            cite="mid:3f9d65ca-663d-4de9-968c-9931429eaff0@Spark"
            class="spark_quote" style="margin: 5px 5px; padding-left:
            10px; border-left: thin solid #e67e22;">
            <meta http-equiv="content-type" content="text/html;
              charset=UTF-8">
            <div name="messageBodySection">
              <div dir="auto">Borrowing is entirely a compile-time
                analysis. There is no runtime impact (other than the
                fact that you can get away without a garbage collector -
                in a safe way).
                <div dir="auto"><br>
                </div>
                <div dir="auto">The Learn Rust the Dangerous way article
                  is very good, by the way! I heartily endorse it for
                  the C-philes among GTALUG. If you haven’t read it, one
                  of the things that might convince you is that the
                  leaderboard for this highly-optimized n-body
                  simulation has Rust in the first-place <a
href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/nbody.html"
                    moz-do-not-send="true">https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/nbody.html</a> -
                  faster than C, C++, Fortran or Ada. I’ve added it to
                  my list of resources for Rust: <a
                    href="https://cps506.scs.ryerson.ca/Resources/rust.html"
                    moz-do-not-send="true">https://cps506.scs.ryerson.ca/Resources/rust.html</a></div>
              </div>
            </div>
          </blockquote>
          Ownership makes sense its a compiler version of smart
          pointers. My concerns are still:<br>
           What about circular references in which the owner depends on
          data from the child<br>
          but cannot free it due to the knowledge also depending on the
          parent. Binary trees<br>
          are a problem here. Or you must assume like garbage collectors
          this  never occurs<br>
          and this is one way to get memory leaks in a lot of garbage
          collectors fast.<br>
          <br>
          Rust seems fine for a lot of things but this one case does not
          seem solved at least<br>
          in my knowledge or is  assumed to not be a big issue and I
          could be wrong but<br>
          from my limited research it appears not,<br>
          Nick<br>
          <blockquote type="cite"
            cite="mid:3f9d65ca-663d-4de9-968c-9931429eaff0@Spark"
            class="spark_quote" style="margin: 5px 5px; padding-left:
            10px; border-left: thin solid #e67e22;">
            <div name="messageBodySection">
            </div>
            <div name="messageSignatureSection"><br>
              <div class="matchFont">../Dave</div>
            </div>
            <div name="messageReplySection">On Dec 31, 2019, 4:22 PM
              -0500, Nicholas Krause via talk <a
                class="moz-txt-link-rfc2396E"
                href="mailto:talk@gtalug.org" moz-do-not-send="true"><talk@gtalug.org></a>,
              wrote:<br>
              <blockquote type="cite" class="spark_quote" style="margin:
                5px 5px; padding-left: 10px; border-left: thin solid
                #3498db;"><br>
                <br>
                On 12/31/19 11:57 AM, D. Hugh Redelmeier via talk wrote:<br>
                <blockquote type="cite" class="spark_quote"
                  style="margin: 5px 5px; padding-left: 10px;
                  border-left: thin solid #d35400;">| From: Tom
                  Low-Shang via talk <a class="moz-txt-link-rfc2396E"
                    href="mailto:talk@gtalug.org" moz-do-not-send="true"><talk@gtalug.org></a><br>
                  <br>
                  | I'm interested in your thoughts on Rust if you
                  attended the talk.<br>
                  <br>
                  The talk was mostly a guided creation of a program. So
                  I don't think<br>
                  that it answered any of your questions.<br>
                  <br>
                  | I'm currently learning Rust the old fashioned hacker
                  way (from books and<br>
                  | other people's code :)). My biggest mistake was
                  trying to use Rust with<br>
                  | SDL2 to display some graphics. My head still hurts
                  from banging it into<br>
                  | a wall called 'lifetimes'. :)<br>
                  <br>
                  The whole idea of borrowing etc. is fundamental to
                  Rust and how it<br>
                  ensures safety. Without garbage collection. If you
                  don't like or<br>
                  understand this approach, Rust isn't useful.<br>
                </blockquote>
                Hugh,<br>
                I've a question about how borrowing is implemented
                internally as it can lead<br>
                to a problem, if I allow lots of memory can my program
                stall because of this<br>
                at the end of a block. In addition due to this does
                borrow checking<br>
                limit or<br>
                not implement something like freelists or caching to get
                better usage of the<br>
                CPU cache as that's also a concern.<br>
                <br>
                Thanks,<br>
                Nick<br>
                <blockquote type="cite" class="spark_quote"
                  style="margin: 5px 5px; padding-left: 10px;
                  border-left: thin solid #d35400;">---<br>
                  Post to this mailing list <a
                    class="moz-txt-link-abbreviated"
                    href="mailto:talk@gtalug.org" moz-do-not-send="true">talk@gtalug.org</a><br>
                  Unsubscribe from this mailing list <a
                    class="moz-txt-link-freetext"
                    href="https://gtalug.org/mailman/listinfo/talk"
                    moz-do-not-send="true">https://gtalug.org/mailman/listinfo/talk</a><br>
                </blockquote>
                <br>
                ---<br>
                Post to this mailing list <a
                  class="moz-txt-link-abbreviated"
                  href="mailto:talk@gtalug.org" moz-do-not-send="true">talk@gtalug.org</a><br>
                Unsubscribe from this mailing list <a
                  class="moz-txt-link-freetext"
                  href="https://gtalug.org/mailman/listinfo/talk"
                  moz-do-not-send="true">https://gtalug.org/mailman/listinfo/talk</a><br>
              </blockquote>
            </div>
          </blockquote>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>