Thad (cc'ing rust-dev)- > How will Rust deal with the mutator (the part that modifies user code and > mutates it ) ? From a high level, will it be run as separate computation > threads or within the same computation thread ?
The current goal is for the mutator and GC to be coroutines on the same computation thread. I do not know if we'll eventually try for concurrent GC; I'm not convinced it would pay for itself in the context of Rust, in the sense of providing significant benefit over a good incremental GC coroutine on each task. A conversation with thiez on IRC [1] made me realize that the terminology here can be confusing; in particular, the write-barriers under discussion are not memory barrier intrinsics (aka memory fences) [2]. These are rather software write-barriers, for maintaining thread-local GC meta-data. Cheers, -Felix [1] https://botbot.me/mozilla/rust/msg/4437567/ [2] http://en.wikipedia.org/wiki/Memory_barrier ----- Original Message ----- From: "Thad Guidry" <[email protected]> To: "Niko Matsakis" <[email protected]> Cc: [email protected], "Patrick Walton" <[email protected]> Sent: Thursday, July 11, 2013 9:28:27 PM Subject: Re: [rust-dev] Incremental and generational GC > * Objects in the borrowed set are grayed before each incremental GC slice. mutator In a garbage-collected system, the part that executes the user code, which allocates objects and modifies, or mutates , them. For purposes of describing incremental garbage collection , the system is divided into the mutator and the collector (2) . These can be separate threads of computation, or interleaved within the same thread. The user code issues allocation requests, but the allocator code is usually considered part of the collector. Indeed, one of the major ways of scheduling the other work of the collector is to perform a little of it at every allocation. While the mutator mutates, it implicitly frees storage by overwriting references . How will Rust deal with the mutator (the part that modifies user code and mutates it ) ? From a high level, will it be run as separate computation threads or within the same computation thread ? -- -Thad Thad on Freebase.com Thad on LinkedIn _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
