Technical (3)

Eniko Fox

Memory management and safety in Bismuth VM

This is the second in a series of posts about a virtual machine I’m developing as a hobby project called Bismuth. In this edition we’re going to look at the VM’s design for memory management and safety. To start with I’ll remind you of the design goals for this VM as detailed in my last post, with those that apply here in bold:

  1. Must be fast
  2. The IR must be compatible with standard C
  3. Can run in a browser
  4. The VM must be easy to implement

Not to give away the twist, but when you combine points 2 and 4 with a VM that cares about memory safety (i.e. programs should not be able to do things like read outside of the bounds of an allocated region of memory) things can get a little bit complicated. So let’s walk through the stages of grief that I experienced and the solutions I came to during the bargaining stage when designing the memory management and safety features of the Bismuth VM.

Continue reading...
Eniko Fox

Introduction to Bismuth VM

This is the first post in what will hopefully become a series of posts about a virtual machine I’m developing as a hobby project called Bismuth. This post will touch on some of the design fundamentals and goals, with future posts going into more detail on each.

But to explain how I got here I first have to tell you about Bismuth, the kernel.

Bismuth OS kernel boot up sequence in terminal
Continue reading...
Eniko Fox

Fediverse comments with Publii

I decided I wanted something a little slicker than a command line for my new blog so I went with Publii. Unfortunately, that made integrating pulling a thread from Mastodon for comments a little bit trickier than I think it would’ve been otherwise. In this post I’ll go through how I wound up doing it.

Continue reading...