So You Want to Build a Language VM - Part 20 - Benchmarks

Adds in Criterion to do benchmarks

Doh

We’ve been having so much fun, we haven’t written any benchmarks! Though it isn’t the most exciting thing to write, they are important. == Benchmarks There’s two things to understand about benchmarks:

This Week in Iridium - #5

Summary of what happened in the fifth week

Week 5 Hello! Below is a list of changes made this week in Iridium. The tutorials this week start here: https://blog.subnetzero.io/project/iridium-vm/building-language-vm-part-18/ You can find the repo for Palladium here: https://gitlab.com/subnetzero/palladium VM Changes (all with tutorials) Added simple PID tracking to the VM. Using random UUIDs for now Refactored command processing in the REPL. Commands now start with a ! There is proper tokenization now

So You Want to Build a Language VM - Part 19 - Starting on Palladium

Begins building the higher level language and compiler

Introduction

If you’ve been following the development of Iridium, you know how heavily it uses Nom to parse the assembly language. I hope you liked it, because we’re going to be using Nom for this as well. =)

In this tutorial, we’re going to start creating a language called Palladium that will compile down to the assembly code we’ve been using. Before we get started, please remember…​

Vertical and Horizontal Scaling

Summary

Hello! This article discusses the two types of scaling found in infrastructure. These concepts aren’t extra-mysterious or anything; there are some subtleties to them that can trip you up.

So You Want to Build a Language VM - Part 17 - Basic Threads

Adds executing a program in separate OS threads

Intro

Hey everyone! In this tutorial, we’re going to start adding in multithreading to the Iridium VM. Please make sure you are starting from this point in the code: https://gitlab.com/subnetzero/iridium/tags/0.0.16. Going forward, I’m going to make a tag per tutorial so that everyone starts from a common point. === A Note on Assumed Knowledge I write these tutorials target towards more advanced users. I sometimes skip small steps, such as "add in this line to file X".

So You Want to Build a Language VM - Part 16 - String Constants And More

Two-pass assembler, using and printing string constants, and other loose ends

Home Stretch

This is going to be a longer post. In it, we’ll wrap up our two-pass assembler, add a PRTS opcode for printing, and tie up some other loose ends. At the end, we should have an interpreter with a good amount of functionality and a simple assembly language. We are, of course, far from done with the project. I want to work on a different tutorial series for a bit, then we’ll continue with Iridium. === Quick Change Add the following dependencies in your Cargo.toml. We’ll need them later:

So You Want to Build a Language VM - Part 15 - Assembler CLI Improvements

Makes the CLI interface a bit more robust and useful

CLI Improvements

Having to start the interpreter, then type .load_file, etc is cumbersome. Let’s change it so that the VM tries to execute the file given to it as an argument. There’s a super handy-dandy crate called clap in Rust that will make this trivial. The behavior we want is: