Hacker News new | past | comments | ask | show | jobs | submit login

So one important question about Rust that is relevant here is how it handles dynamic stack allocation. It is in the language? C++ has alloca of course but needs a couple of macros to work across compilers. Memory allocation ends up being a very big performance concern in renderers. PBRT uses both memory arenas and an ALLOCA macro.



It's quite possible to not use alloca(), but just use C++'s placement new operator to re-use memory already allocated on the stack.

I'm not sure if Rust has something similar to placement new, but I'm sure custom allocators (for memory arenas) are possible in Rust.


User-defined placement new and custom allocators for existing data structures are still being worked on. `box` can do a form of placement new already, and while you can use your own allocator, you can't use it with already-existing types.


That is a valid and useful technique, but being able to dynamically allocate stack memory in the first place is separate from using placement new on stack memory.


Of course, I was just pointing out it's not always necessary to use alloca - I've written a production-level path-tracer without needing to allocate stack memory dynamically.


I might be mistaken about this, but I believe they plan on implementing support for this at some point.


It's on the todo list.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: