On Sat, 25 Dec 2010 19:18:43 -0000, Robert Jacques <[email protected]> wrote:

This @owned is very similar to previous 'scope' proposals (and oddly dissimilar to previous owned proposals). To answer your question, under previous proposals the scope keyword would allow you to declare that a variable doesn't escape the current scope. So you could define external functions that would take a 'scope int[]' and be guaranteed that it wouldn't escape. (returning scoped values has to obey certain restrictions)

The previous 'owned' proposals are a bit more general. Owned types allow you parameterize a type on a variable, which sounds complex, but what it means in terms of the runtime, is that all objects in the same ownership group shared the same monitor. The big advantage is that inside a synchronized method you don't have to synchronize other 'owned' objects of the same type. It also makes this like unique a lot more viable, since you can now define trees, etc.

Ok, I'll try to find previous proposals about 'scope' - now I cannot understand how you can prevent external function from, e.g., saving owned object or array (i.e. references) in global variable, if it's at all possible to pass owned variables into external functions.

Reply via email to