rune
rune copied to clipboard
Rust VM for Emacs
I see there is a `TypeError` defined in core/error.rs. However, the Emacs C code often has something like: ``` return wrong_type_argument (Qchar_or_string_p, obj); ``` Does that mean the `Type` enum...
Emacs already offers AOT compilation via native compilation. By doing so you can remove the overhead of the bytecode interpreter and optimizing the code as a single compilation unit (which...
This uses the same principle as the `root_struct!` macro. So if this is sound I expect that will be as well. https://github.com/CeleritasCelery/rune/blob/7136b74386a4586537ffa59c3be4849cb76354fe/src/arena/mod.rs#L78-L83 We create a new `StackRoot` using an unsafe...
Currently all allocation are part [of a big enum](https://github.com/CeleritasCelery/rune/blob/master/src/core/gc/alloc.rs#L10-L18). This is very space inefficient, since each enum instance has to be the size of the largest variant. We need to...
There is some discussion of my thoughts on multi-threaded Emacs [here](https://coredumped.dev/2022/05/19/a-vision-of-a-multi-threaded-emacs/). Read that first. This project gives us a unique opportunity to make the interpreter thread safe. I am generally...
It's unfortunate that allocation must go through refcell. Perhaps we can do better by using some sort of ghosttoken? ```rust fn alloc(cx: &'a mut Context, token: &'b Token) -> Object
In our wrapper code around native functions we something that looks similar to this ```rust let val = native_func(objects[0], objects[1], &mut arena)?; Ok(crate::object::IntoObject::into_obj(val, arena)) ``` we are calling some native...
There is conflict between the Rust world and the elisp world. Rust expects types to have explicit compile time alias checking, and elisp says you can alias anything you want....
In order to map between the Rust and Lisp worlds, we have to handle aliasing. Data structures must be both mutable and aliasable. The "simple" solution to this is to...
[Emacs docs](https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Representations.html) [github comment with explanation](https://github.com/remacs/remacs/issues/499#issuecomment-373981399) Emacs uses an extended UTF-8 internally. It uses code points beyond the extended plane and can therefore use up to 5 bytes instead of...