rune
rune copied to clipboard
Rust VM for Emacs
The two main options for a buffer struct is a gap buffer, or a [rope](https://docs.rs/ropey/latest/ropey/). They both come with different tradeoffs. I really like this [comment](https://github.com/emacs-ng/emacs-ng/issues/378#issuecomment-907680382) from the author of...
The plan for the garbage collector is to be generational, copying collector. The old generation will use Immix style mark region collector, which Jon Harrop calls a [breakthrough in gc...
Executive Summary: I propose that it would be worth while to have Rune dump it's serialized state into a binary file that could be reloaded at a later time to...
Hey, this is a nice project. I had also thought before about creating an elisp runtime from scratch. One idea I had was to move as much as possible to...
The soundness of the code heavily relies on the fact that only one `Arena` exists in a thread at a time. Otherwise you might have code that borrows from an...
This is similar to #2. We have `bind` function for `Arena`. https://github.com/CeleritasCelery/rune/blob/7136b74386a4586537ffa59c3be4849cb76354fe/src/arena/mod.rs#L346-L351 This relies on a safe trait `ConstrainLifetime` which let's us take object and "bind" it's lifetime to the...
The rebind macro has this definition: https://github.com/CeleritasCelery/rune/blob/7136b74386a4586537ffa59c3be4849cb76354fe/src/arena/mod.rs#L96-L102 We are casting the object into a raw form that removes the lifetime. Then we call an unsafe function to create a new...
This really needs to be proc macro to auto derive since implementing is unsafe, but that is not yet implemented. We get a `RootRef` by using `RootOwner` on `Root`. Root...
This one is a beast. https://github.com/CeleritasCelery/rune/blob/7136b74386a4586537ffa59c3be4849cb76354fe/src/cons/iter.rs#L166-L189 Essentially what we need to do here is create a iterator where the returned value is rooted on each iteration and can only live...