<div dir="ltr">Hi Kurtis,<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 12, 2015 at 10:11 AM, Kurtis Mullins <span dir="ltr"><<a href="mailto:kurtis.mullins@gmail.com" target="_blank">kurtis.mullins@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hey guys and girls,<div><br></div><div>Polling for opinions here. I watched the Rust video from PyCon about a week ago. I work with a handful of people who commonly attend (and some speak) at PyCon. I also work with people who are big "Go" people.</div><div><br></div><div>This was really the first time I've come across Rust. It had some cool things going for it. I was also surprised to see it backed by Mozilla.</div><div><br></div><div>What's the benefits of using Rust over Go? I feel like they were both sort of created to solve the same problem. I'm not intending this to be a flame war -- I am just genuinely curious how/why Rust is taking off so successfully.</div></div></blockquote><div><br></div><div>I'm a big fan of both Rust and Go.  I think it's kind of unfortunate that the world has sort of pitted them against each other, because they each have their own strengths and weaknesses and don't, in my opinion, have a lot of overlap in when you would choose one over the other.<br><br></div><div>I would choose Rust over Go anywhere using C or C++ was essential:<br><ul><li>Low-level system programming (kernel, drivers, low-level libraries)</li><li>System libraries (think an OpenSSL replacement)</li><li>Any time a garbage collector or runtime is not suitable<br></li><li>Situations where memory safety is absolutely essential (again, a crypto library comes to mind)</li></ul><p>For most applications I personally would choose Go for most things (especially today with the current level of maturity).  Depending on how much you like the relative languages would influence that decision for you.<br></p><p>Rust has a much stronger memory safety story.  Its ownership model is novel and able to guarantee safety at compile time.  It's basically impossible to write a Rust program that segfaults.  Moreover, due to its immutability guarantees it's not really possible to end up with concurrency-caused data races.  Go's is much more memory safe than C, but it still gives you the ability to shoot yourself in the foot with data races.  Fortunately Go comes with great tooling to detect these kinds of races and they're pretty easy to avoid with some experience.</p><p>While both Rust and Go can interop rather simply with existing C code, Rust does so much faster than Go ever could.  This is largely because Go is a garbage collected language, so data has to be copied when crossing the barrier into C.  Rust seems to have a little more programmer boilerplate for this, but fewer memory copies.</p><p>Both Rust and Go have very good modern concurrency.  Go's is tightly integrated with the language, which I think is a huge plus.  Rust has a few different models that are provided by their standard library.  Rust's seems to require more boilerplate to use than Go's.<br></p><p>Go is a much, much, much simpler language.  In many ways you can think of Go as analogous to Python or Ruby and Rust as analogous to C++.  This makes Go a little less flexible in many ways -- its type system isn't as rich, for instance -- but it takes vastly less time to begin programming in Go, become productive with it, and understand other people's Go code.</p><p>Go is a lot more mature at this point.  Go 1 was released in 2012, and there have been 5 stable releases since then.  (Go is on a 6 month release cycle.)  They have made backwards compatibility guarantees for the lifetime of Go 1 and there are no plans for Go 2 at this point.  Rust only just stopped making backward incompatible changes as part of their 1.0 beta a few weeks ago.  There is much more good third-party Go code out there.<br></p><p>I think Go's standard library is absolutely fantastic.  It is definitely a "batteries included" standard library.  It is very common for Go programs to be written using only code from the standard library.  There is a lot of very good third-party code out there as well.  I don't have as much experience with Rust's stdlib yet, but I get the feeling that it's not quite as complete and easy to use as Go's.</p><p>The Rust blog has been absolutely on fire lately, highlighting a few features of the language that really illustrate its power:</p><ul><li><a href="http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html">http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html</a></li><li><a href="http://blog.rust-lang.org/2015/04/17/Enums-match-mutation-and-moves.html">http://blog.rust-lang.org/2015/04/17/Enums-match-mutation-and-moves.html</a></li><li><a href="http://blog.rust-lang.org/2015/04/24/Rust-Once-Run-Everywhere.html">http://blog.rust-lang.org/2015/04/24/Rust-Once-Run-Everywhere.html</a></li><li><a href="http://blog.rust-lang.org/2015/05/11/traits.html">http://blog.rust-lang.org/2015/05/11/traits.html</a></li></ul><p>Hope this helps,</p><p>Joe<br></p></div><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Thanks!</div><div><br></div></div><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 10, 2015 at 2:54 PM, John Santiago <span dir="ltr"><<a href="mailto:jdsantiagojr@gmail.com" target="_blank">jdsantiagojr@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p dir="ltr">Thanks. I have been looking into embedded programming and looks like Rust could possibly replace c/cpp. </p>
<div class="gmail_quote"><div><div>On May 10, 2015 2:51 PM, "Eric Floehr" <<a href="mailto:eric@intellovations.com" target="_blank">eric@intellovations.com</a>> wrote:<br type="attribution"></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div dir="ltr"><div><div><div>At the last monthly meeting, Raymond mentioned that The Columbus Rust Society was planning a Rust 1.0 Release party May 15 at Pillar (though the meetup says no location yet, so it might not be Pillar). The details are here:<br><br><a href="http://www.meetup.com/columbus-rs/events/222044818/" target="_blank">http://www.meetup.com/columbus-rs/events/222044818/</a><br><br></div>If you are interested in hooking your Python code to Rust code instead of C, there was a talk at PyCon this year by Dan Callahan called "My Python is a little Rust-y" that talked about how to call Rust functions from Python:<br><br><a href="https://www.youtube.com/watch?v=3CwJ0MH-4MA" target="_blank">https://www.youtube.com/watch?v=3CwJ0MH-4MA</a><br><br></div>Cheers,<br></div>Eric<br><br></div>
<br></div></div>_______________________________________________<br>
CentralOH mailing list<br>
<a href="mailto:CentralOH@python.org" target="_blank">CentralOH@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/centraloh" target="_blank">https://mail.python.org/mailman/listinfo/centraloh</a><br>
<br></blockquote></div>
<br>_______________________________________________<br>
CentralOH mailing list<br>
<a href="mailto:CentralOH@python.org" target="_blank">CentralOH@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/centraloh" target="_blank">https://mail.python.org/mailman/listinfo/centraloh</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
CentralOH mailing list<br>
<a href="mailto:CentralOH@python.org">CentralOH@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/centraloh" target="_blank">https://mail.python.org/mailman/listinfo/centraloh</a><br>
<br></blockquote></div><br></div></div>