The source code for those interested GitHub - MarioAriasC/monyet: An implementation of the monkey language on Crystal
Regarding the optimization of offset, it may be possible to change so that you use a Slice instead of an Array, and therefore get the same behavior as the Go implementation.
Exactly! I was going to mention that Slice(UInt8), which is aliased to Bytes because it’s so common, might be a better representation for alias Instructions = Array(UInt8). Taking ranges of a Slice doesn’t allocate memory. And it’s not a coincidence this type is called “Slice” 
Also, do you have a link to the source code? I’m sure me and others will jump into the code and try to further optimize it 
Regarding your type_desc method. There’s really no need to use an actual macro here. Since macro expansion happens on each subclass, you can just define MObject as:
abstract class MObject
def type_desc : String
{{@type.name.stringify}}
end
end
and it’ll just work.
Also Crystal is on TechEmpowered, but not all frameworks: TechEmpower Framework Benchmarks.
I added it
I’ll try it
Also, I’ll correct my mistake about the frameworks on TechEmpower Framework Benchmarks, my bad.
I did read about the Slice type but was unclear to me how to use it. I’ll have another look