Writing that changed how I think about PL

May 13, 2025

Every so often I come across a paper, blog post, or (occasionally) video that completely changes how I think about a topic in programming languages and compilers. For some of these posts, I can’t even remember how I thought about the idea before reading it—it was that impactful.

Here are some of those posts in no particular order:

I hope you enjoy the readings!

  1. There’s just one small bug in that post: is_forwarded should check if the bit is 0, not 1. The correct version is:

    int is_forwarded(struct gc_obj *obj) {
      return (obj->tag & NOT_FORWARDED_BIT) == 0;
    }
    

    “There is a contract between the GC and the user in which the user agrees to always set the NOT_FORWARDED_BIT in the first word of its objects.” 

  2. For some definition of correct, anyway. What does it even mean for code to be correct? I have a whole unit on this in my course because it’s a tricky topic.