Re:Passerine: A small extensible language designed for conci...
by slightknack on Tuesday February 23, 2021 @06:48AM
(#26236223)
It's loosely based on Proust ASAP, but without the explicit quadratic-time construction of paths (in a sense, this is done 'dynamically' at runtime with the CoW strategy we've discussed). When you think about it, Vaporization is really just an extension to escape analysis. It's not a perfect system though, namely, It required immutable closures. But if you're coming from a functional programming language, that's a small sacrifice to make, given that mutability is generally frowned upon.
> I think I'll have at least one more question about how the "tying of references to the stack" works, but I need to think things through a bit more.
I tried to answer your sibling comment on appending a CoW xs. I hope that clears some things up so you can ask any questions you have!
> What about compiling to low-level targets, like LLVM IR, which don't really have a 'runtime' and rather specify the manual layout of structs and references?
If you want to support dynamic memory allocation/deallocation, you will have to provide a runtime anyway. Even if it's "just" LLVM IR or C code or whatever for a simple allocator.
I think I'll have at least one more question about how the "tying of references to the stack" works, but I need to think things through a bit more.