Re: [rust-dev] box syntax question

2014-07-02 Thread Patrick Walton

On 7/2/14 11:08 PM, Igor Bukanov wrote:

So at some future point it would be possible to replace
TypedArena_instance().alloc(X) with box(TypedArena_instance) X
avoiding an extra move of X from a temporary allocated on the stack
that the compiler in general cannot optimize?


Yes. Under the hood, this will be implemented via return value 
optimization and an unboxed closure.


Patrick

___
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev


Re: [rust-dev] box syntax question

2014-07-02 Thread Igor Bukanov
So at some future point it would be possible to replace
TypedArena_instance().alloc(X) with box(TypedArena_instance) X
avoiding an extra move of X from a temporary allocated on the stack
that the compiler in general cannot optimize?

On 3 July 2014 04:39, Corey Richardson  wrote:
> The full syntax is: "box" ["(" EXPR ")"] EXPR
>
> The first expression is the "boxer", or where the result of the second
> expression will be stored. GC and HEAP are special cased right now as
> the only boxers, but the goal is to use a trait such that you can use
> Rc, arenas, vectors, or any other arbitrary type as a boxer.
>
> On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin  wrote:
>> Once in the tutorial, I see this syntax:
>>
>>
>> let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10];
>>
>> It seems to me, that should be: box, as it feels like box is referring
>> to a container type (which the default type is Box<_>, but may be Rc<_> or
>> Gc<_>).
>>
>> What is the principle behind the current notation? What is "GC" is this
>> context other than a special string that is a one-off syntax?
>> --
>> Oscar Boykin :: @posco :: http://twitter.com/posco
>>
>> ___
>> Rust-dev mailing list
>> Rust-dev@mozilla.org
>> https://mail.mozilla.org/listinfo/rust-dev
>>
>
>
>
> --
> http://octayn.net/
> ___
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
___
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev


Re: [rust-dev] box syntax question

2014-07-02 Thread Benjamin Striegel
To expand upon what Corey was saying, `box` is basically a huge
special-cased hack right now. I'm surprised that a mention of `box(GC)` is
even included in the tutorial. Someone tell Steve to rip that out. :P

We'll be clarfiying how best to use `box` before 1.0. In the meantime, just
don't use GC. Like, at all. You don't need it! :)


On Wed, Jul 2, 2014 at 10:39 PM, Corey Richardson  wrote:

> The full syntax is: "box" ["(" EXPR ")"] EXPR
>
> The first expression is the "boxer", or where the result of the second
> expression will be stored. GC and HEAP are special cased right now as
> the only boxers, but the goal is to use a trait such that you can use
> Rc, arenas, vectors, or any other arbitrary type as a boxer.
>
> On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin  wrote:
> > Once in the tutorial, I see this syntax:
> >
> >
> > let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10];
> >
> > It seems to me, that should be: box, as it feels like box is
> referring
> > to a container type (which the default type is Box<_>, but may be Rc<_>
> or
> > Gc<_>).
> >
> > What is the principle behind the current notation? What is "GC" is this
> > context other than a special string that is a one-off syntax?
> > --
> > Oscar Boykin :: @posco :: http://twitter.com/posco
> >
> > ___
> > Rust-dev mailing list
> > Rust-dev@mozilla.org
> > https://mail.mozilla.org/listinfo/rust-dev
> >
>
>
>
> --
> http://octayn.net/
> ___
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
___
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev


Re: [rust-dev] box syntax question

2014-07-02 Thread Corey Richardson
The full syntax is: "box" ["(" EXPR ")"] EXPR

The first expression is the "boxer", or where the result of the second
expression will be stored. GC and HEAP are special cased right now as
the only boxers, but the goal is to use a trait such that you can use
Rc, arenas, vectors, or any other arbitrary type as a boxer.

On Wed, Jul 2, 2014 at 7:29 PM, Oscar Boykin  wrote:
> Once in the tutorial, I see this syntax:
>
>
> let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10];
>
> It seems to me, that should be: box, as it feels like box is referring
> to a container type (which the default type is Box<_>, but may be Rc<_> or
> Gc<_>).
>
> What is the principle behind the current notation? What is "GC" is this
> context other than a special string that is a one-off syntax?
> --
> Oscar Boykin :: @posco :: http://twitter.com/posco
>
> ___
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>



-- 
http://octayn.net/
___
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev


[rust-dev] box syntax question

2014-07-02 Thread Oscar Boykin
Once in the tutorial, I see this syntax:

let x = box(GC) [1i, 2, 3, 4, 5, 6, 7, 8, 9, 10];

It seems to me, that should be: box, as it feels like box is referring
to a container type (which the default type is Box<_>, but may be Rc<_> or
Gc<_>).

What is the principle behind the current notation? What is "GC" is this
context other than a special string that is a one-off syntax?
-- 
Oscar Boykin :: @posco :: http://twitter.com/posco
___
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev