A couple of years back, everybody laughed at the idea of “everything in JavaScript”. Rust is doing the same.
We created a Rust library for writing and executing Wireshark®-like filters in different parts of our stack.
A couple of years back, everybody laughed at the idea of “everything in JavaScript”. Rust is doing the same.
Now that the interpreter’s performance concerns had been addressed, it was time to decide how each of the available runtimes would be packaged and distributed. In the final post within the series, I will document how the language and runtimes were built, tested, and distributed using a custom CI/CD pipeline.
Now that we have discussed building the core language and desired runtimes, it is time to highlight one of the biggest reasons why I decided to rewrite the interpreter in a lower-level systems language - performance! In this post, I will document how I went about benchmarking the two implementations (TypeScript/Node and Rust), greatly improving performance and highlighting interesting findings along the way.
Summary: Interpretation by closure is a lot faster than I expected. Let's imagine we have an imperative language (expressions, assignments, ...