rune
boa
rune | boa | |
---|---|---|
8 | 20 | |
387 | 4,721 | |
- | 2.2% | |
9.6 | 9.8 | |
12 days ago | 2 days ago | |
Emacs Lisp | Rust | |
GNU General Public License v3.0 only | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rune
-
The Emacsen family, the design of an Emacs and the importance of Lisp (2023)
Two projects that may be of interest, related to this topic:
- Rune (https://github.com/CeleritasCelery/rune) - A re-implementation of Emacs but in Rust (like Remacs, but actively developed)
- Pimacs (https://github.com/federicotdn/pimacs) - Same, but using Go (created by me, but developed in a very slow pace)
-
Text Editor Data Structures
[2] https://github.com/CeleritasCelery/rune/issues/17#issuecomme...
- rune: Rust VM for Emacs
-
Design of Emacs in Rust
I second this ! I had trouble finding the github link, but here is is https://github.com/CeleritasCelery/rune
- Rune: An experimental Emacs Lisp interpreter written in Rust
-
Implementing a safe garbage collector in Rust
> How is anything rooted here? The lifetime changed from 'arena to 'root but I don't see a root being created.
In this example, the Vec has been rooted previously. So pushing an object into the Vec will make it "transitively" rooted (accessible from the root). You would root a struct with the root_struct![1] macro, which works very similar to the root! macro shown in the post.
However you made you realize one error; The rooted `Vec` in the example you pointed is a by value type, but in the implementation you can only get references to rooted structs, so that example needs to be updated.
> But later we see roots not obeying a LIFO order, under "Preventing escapes" where roots are dynamically created and destroyed in an arbitrary order.
Objects are just a copyable wrapper around a pointer, so they are not the part that has the LIFO semantics. inside the root! macro[2] there is a `StackRoot` type that is the actual "root". The object just borrows from that so that is has a 'root lifetime and is valid post gc. The actual root struct is not exposed outside of the macro.
I hope this makes the distinction between "roots" and "objects" clearer. Objects are just pointers to heap data. When we root an object we store the data it points to on the root stack and create a new `StackRoot`. Then we say this object is rooted. But the struct that "does the rooting" is inside the macro and not exposed. Rooting a struct works similarly.
[1] https://github.com/CeleritasCelery/rune/blob/5a616efbed763b9...
-
I came to the conclusion that I wont learn Elisp...unless...
Hack on Rune
boa
-
A list of JavaScript engines, runtimes, interpreters
boa
-
Boa JavaScript Engine v0.17 released
Yeah, pretty much. I'm not sure if we're gonna need to implement Static Shapes first but at least we need to make it possible to separate codeblocks from contexts for this to be feasible.
-
Official /r/rust "Who's Hiring" thread for job-seekers and job-offerers [Rust 1.67]
Hi, I'm looking for full time work and I'm interested in roles related to compilers, developer tools and systems. I'm a college senior(graduating on May, 2023) and have been working as an [IOS Developer](https://www.cyengagement.org/) for the past two years. At University, I took a compilers class where I learnt to use LLVM and MLIR to compile programs to various architectures. In Oct. 2022, I was selected to attend the [Programming Language Implementation Summer School](https://pliss.org/2022/) where I got to learn about compiler implementation and language tools from leading researchers around the world. Recently, I have been contributing to [Boa](https://github.com/boa-dev/boa), an embeddable Javascript engine written in Rust, by fixing issues and implementing features to improve conformance with ECMAScript specification. Aside from working on compilers, I have volunteered at conferences like ICFP'21 and PLDI'22 to familiarize myself with latest research in the field of compilers. You can find more information about me and my work in my [blog](https://veera.app) and Github [profile](https://github.com/veera-sivarajan). Thank you for your time and consideration.
- How dare you call Node.js "blazing fast"!
-
Really it have to be some kind of virus that spreads sneakly
I have great news
-
Adding a JavaScript interpreter to your Rust project
I already use it in my project to run some parts of the youtube js player. I must say it was broken on one version of the player because of a generated regex inside (more on the issue), but definitely recommending.
-
Dune: A new JavaScript and TypeScript runtime built in Rust
I would be curious how much effort it would be to swap boa for V8 to have an all Rust runtime :) If it's not meant to be a production-ready project anyways.
- Boa – Experimental JavaScript lexer, parser and interpreter written in Rust
-
Boa release v0.15: A JavaScript engine written in Rust
We'd love to see these benchmarks too! We have an open issue to set-up these benchmarks: https://github.com/boa-dev/boa/issues/1924
-
Implementing a safe garbage collector in Rust
Although you probably could use it for something else, Boa[1] is a good demonstration of this (it uses the GC crate, but the same principle probably applies).
[1]: https://github.com/boa-dev/boa
What are some alternatives?
dotemacs
starlight - JS engine in Rust
immer - Postmodern immutable and persistent data structures for C++ — value semantics at scale
RustPython - A Python Interpreter written in Rust
c-rrb - RRB-tree implemented as a library in C.
napi-rs - A framework for building compiled Node.js add-ons in Rust via Node-API
gc-arena - Incremental garbage collection from safe Rust
deno - A modern runtime for JavaScript and TypeScript.
racket - The Racket repository
Rust - All Algorithms implemented in Rust
mmtk-core - Memory Management ToolKit
firecracker - Secure and fast microVMs for serverless computing.