The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.
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.
tinyvm
Posts with mentions or reviews of tinyvm.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-04-01.
-
Trying to write a stack-based VM in Rust, have not found useful tutorial.
I'm actually writing a tutorial right now, but in the meantime you can checkout this repo of mine: https://github.com/mkhan45/tinyvm. It's a ~250 LOC stack vm with another 200 lines of comments
- A tiny stack based VM in Rust
-
Dijkstra's "Why numbering should start at zero"
The last Rust I looked at was this file, ; true there are few if any explicit array indexing, but the code is gobbledygook, with lines this:
-
Looking for feedback on a toy bytecode vm
The repo is here: https://github.com/mkhan45/tinyvm. It's written in Rust and only ~275 mostly repetetive LOC so I think it's pretty understandable even without comments, but I'll add some explanation if anyone asks.
interpret
Posts with mentions or reviews of interpret.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-09-04.
-
Making an interpreter for variable length byte-code, any way to use enums for this and not just a big u8?
I also gave a talk about writing an interpreter, which goes into a big more depth on interpreter styles: https://ndmitchell.com/#interpreter_23_feb_2021 (slides at https://ndmitchell.com/downloads/slides-cheaply_writing_a_fast_interpreter-23_feb_2021.pdf, video at https://www.youtube.com/watch?v=V8dnIw3amLA&list=PLFTr8ChfQg9t9quFJNSoRwVHQhLFfTYnV, code at https://github.com/ndmitchell/interpret ). The conclusion was a compact bytecode was basically the same speed.
-
Trying to write a stack-based VM in Rust, have not found useful tutorial.
I gave a talk about this recently, on how to write a variety of interpreters and their performance trade-offs: https://www.youtube.com/watch?v=V8dnIw3amLA&list=PLFTr8ChfQg9t9quFJNSoRwVHQhLFfTYnV. The code that goes behind the talk for stack-based interpreters is at https://github.com/ndmitchell/interpret/blob/main/src/alt/jump_stack.rs, which might be useful as a simplified stack-based interpreter.
-
Interpreting a scripting language, in Rust, quickly, but not going as far as generating assembly code. Low effort, moderate performance.
The code is at https://github.com/ndmitchell/interpret. The Starlark interpreter being referenced is https://github.com/facebookexperimental/starlark-rust. The Starlark interpreter uses the closure approach not yet the register approach (I did some hacks to try it, but haven't yet completed it to production quality).
What are some alternatives?
When comparing tinyvm and interpret you can also consider the following projects:
slang-v2 - Simple scripting language interpreter
itsy - super early, don't bother
evolution_original - rust evolving pictures
Lobsters - Computing-focused community centered around link aggregation and discussion
TablaM - The practical relational programing language for data-oriented applications