Our great sponsors
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.
rhizome
- How do optimizing compilers convert variables into registers
- YJIT: Building a New JIT Compiler for CRuby
-
Tenderjit – A JIT for Ruby Written in Ruby
There was actually an existing, similar in concept, Ruby JIT, Rhyzome: https://github.com/chrisseaton/rhizome.
It's good to see (IMO) the development of a JIT in a strict sense. I'm personally skeptical about the current approach (invoking a compiler separately).
On the other hand, it's important to know that JITs may take a long development time to be performant, and that they also complicate the performance profile of a virtual machine.
-
Let's write a compiler, part 5: A code generator
Lots of compiler tutorials are like this - there's very little out there to explain how compilers really work.
This is my effort - trying to show genuine data structures and processes.
https://github.com/chrisseaton/rhizome
- Thoughts about Intermediate representations
- A JIT for Ruby, implemented in pure Ruby (/r/ruby)
- Rhizome – a JIT for Ruby, implemented in pure Ruby
langs
- How does the compiler know that an already typedefed ident is meant to be a new declarator?
- Compiler Case Study
- Making Simple Concepts Hard
- What makes a language easy for writing a parser?
-
Resources to understand mojo and compilers
The code is here. Note that the input filename is hardcoded in the source code.
- Automatic import of C headers —how to deal with macros?
- How does preprocessing work in a one pass compiler?
- 'Table Data' and 'X-Macros'
- Register Window in a Stack VM Interpreter
- My New IL
What are some alternatives?
yjit - Optimizing JIT compiler built inside CRuby
prolog-to-minizinc - A Prolog-to-MiniZinc translator
sqlite-parser - JavaScript implentation of SQLite 3 query parser
rakudo - 🦋 Rakudo – Raku on MoarVM, JVM, and JS
grammars-v4 - Grammars written for ANTLR v4; expectation that the grammars are free of actions.
vox - Vox language compiler. AOT / JIT / Linker. Zero dependencies
zetasql - ZetaSQL - Analyzer Framework for SQL
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
swifties - a custom language construction kit
wabt - The WebAssembly Binary Toolkit
langjam
factor - Factor programming language