Bill, memory is cheap.

On Mon, Nov 4, 2013 at 9:50 PM, Bill Myers <bill_my...@outlook.com> wrote:

> The advantage of segmented stacks is that blocked tasks only take up as
> much memory as they actually need to store state, so that for instance a
> network server can use a task for each connection, and still only use, say,
> 64 bytes per connection if that's possible instead of the number of stack
> pages that got allocated for previous computation (assuming an "extreme"
> version that allocates a stack segment on every call).
>
> However, there is another approach that can replace segmented stacks for
> that purpose, namely having the compiler automatically transform blocking
> functions to instead return a future (with limited lifetime).
>
> This means that segmented allocation only happens for functions that
> indirectly perform I/O and only allocates the exact amount of memory needed
> to retain state that must persistent across the blocking I/O operation,
> while other functions execute normally using traditional stacks.
>
> The simplest example of this feature is async/await in C# 5, and Scala has
> a delimited continuation passing transformation that can be used to do the
> same thing.
>
> Has this been considered for Rust?
>
>
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev
>
>


-- 
-Thad
+ThadGuidry <https://www.google.com/+ThadGuidry>
Thad on LinkedIn <http://www.linkedin.com/in/thadguidry/>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to