[GTALUG] Rust intro

Nicholas Krause xerofoify at gmail.com
Thu Jan 2 11:22:10 EST 2020



On 1/2/20 9:59 AM, David Mason wrote:
> 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.
Thanks for letting me know. Don't know if it will be solved as that's a 
problem in my view.

Nick
> 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.
>
> ../Dave
> On Jan 1, 2020, 6:09 PM -0500, Nicholas Krause <xerofoify at gmail.com>, 
> wrote:
>>
>>
>> On 1/1/20 11:44 AM, David Mason wrote:
>>> 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).
>>>
>>> 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 
>>> https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/nbody.html - 
>>> faster than C, C++, Fortran or Ada. I’ve added it to my list of 
>>> resources for Rust: https://cps506.scs.ryerson.ca/Resources/rust.html
>> Ownership makes sense its a compiler version of smart pointers. My 
>> concerns are still:
>>  What about circular references in which the owner depends on data 
>> from the child
>> but cannot free it due to the knowledge also depending on the parent. 
>> Binary trees
>> are a problem here. Or you must assume like garbage collectors this  
>> never occurs
>> and this is one way to get memory leaks in a lot of garbage 
>> collectors fast.
>>
>> Rust seems fine for a lot of things but this one case does not seem 
>> solved at least
>> in my knowledge or is  assumed to not be a big issue and I could be 
>> wrong but
>> from my limited research it appears not,
>> Nick
>>>
>>> ../Dave
>>> On Dec 31, 2019, 4:22 PM -0500, Nicholas Krause via talk 
>>> <talk at gtalug.org>, wrote:
>>>>
>>>>
>>>> On 12/31/19 11:57 AM, D. Hugh Redelmeier via talk wrote:
>>>>> | From: Tom Low-Shang via talk <talk at gtalug.org>
>>>>>
>>>>> | I'm interested in your thoughts on Rust if you attended the talk.
>>>>>
>>>>> The talk was mostly a guided creation of a program. So I don't think
>>>>> that it answered any of your questions.
>>>>>
>>>>> | I'm currently learning Rust the old fashioned hacker way (from 
>>>>> books and
>>>>> | other people's code :)). My biggest mistake was trying to use 
>>>>> Rust with
>>>>> | SDL2 to display some graphics. My head still hurts from banging 
>>>>> it into
>>>>> | a wall called 'lifetimes'. :)
>>>>>
>>>>> The whole idea of borrowing etc. is fundamental to Rust and how it
>>>>> ensures safety. Without garbage collection. If you don't like or
>>>>> understand this approach, Rust isn't useful.
>>>> Hugh,
>>>> I've a question about how borrowing is implemented internally as it 
>>>> can lead
>>>> to a problem, if I allow lots of memory can my program stall 
>>>> because of this
>>>> at the end of a block. In addition due to this does borrow checking
>>>> limit or
>>>> not implement something like freelists or caching to get better 
>>>> usage of the
>>>> CPU cache as that's also a concern.
>>>>
>>>> Thanks,
>>>> Nick
>>>>> ---
>>>>> Post to this mailing list talk at gtalug.org
>>>>> Unsubscribe from this mailing list 
>>>>> https://gtalug.org/mailman/listinfo/talk
>>>>
>>>> ---
>>>> Post to this mailing list talk at gtalug.org
>>>> Unsubscribe from this mailing list 
>>>> https://gtalug.org/mailman/listinfo/talk
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/talk/attachments/20200102/6c81b273/attachment.html>


More information about the talk mailing list