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

Reply via email to