
Why language interpreters and virtual machines are slow
An exploration of how interpreters processing code introduces bottlenecks that compiled code does not, and some techniques to alleviate those issues.

An exploration of how interpreters processing code introduces bottlenecks that compiled code does not, and some techniques to alleviate those issues.

A look into the structure and abstract machines of intermediate languages, with examples in stack-based and register-based machines.

How a language can work with dynamic types and provide information about a type while the code is executed.
Should string be a distinct type or merely an alias for an array of characters? I’m considering the options for Leaf and can’t convince myself
A question recently asked why a ‘constexpr’ function in C++ may comprise only a return statement. It’s a good question. On quick glance the restriction
A language’s type hierarchy is formed with both linking and attributes. But what if a uniform hierarchy is not the correct way to represent a
I’m in the midst of reworking a significant aspect of the type system in Leaf. It’s a lot of work, and I’d like to avoid
One of the problems with C++ is the way it handles type conversion. It inherits a lot of implicit conversion from C and then adds
Conditionals are a key construct in programming: from the simple if statement, to loops and switches, and even to dynamic mapping. The essence of program
While working on Cloverleaf I came upon a problem of parsing custom operators. I would like to say that a language would allow custom infix