He’s one of the GOATs, but this article is written by someone who has no idea about software engineering and full of exaggerations as a result. For example:

> Many times there are certain chunks which will occur many times in the code of a program. Instead of taking the time to translate them all separately, QEMU stores the chunks and their native translation, next time simply executing the native translation instead of doing translation a second time. Thus, Bellard invented the first processor emulator that could achieve near native performance in certain instances.

JIT is about as old as Fabrice, or even older depending on what you consider a modern JIT.

The actual innovation in QEMU was that the architecture-dependent part was much smaller than a full JIT compiler, because it used the C compiler to build small blocks and parsed ELF relocations to be able to move them into the translated code.

This technique has since been dropped by QEMU, but something similar is now used by the Python JIT. These days QEMU uses Tiny Code Generator, originally forked out of TCC though by now the source is probably unrecognizable except in the function names.

Moreover, Transmeta did this for their actual processor back in the day. Transmeta's version even did it in multipass, fusing more and more instructions as they appear more, getting faster as the system is used more, up to a certain point of course.

This doesn't make Fabrice a lesser man, but truth is truth.

Yeah, afaik arhitecture dynamic binary translation dates back to at least 1998 (VMware).

If you leave out the JIT part, binary translation dates back to at least 1966 (Honeywell).

Still one of the GOATs, agree.

Claims of ‘firsts’ undermine the authority of this document, though not the achievements of the subject.

For instance Marco Ternelli’s dynamic binary translator ZM/HT dates back to 1993, when it was published by Ergon Development. It translates Z80 to 68000 machine code on the fly and was a successful commercial product. I’d be interested to hear of earlier JIT binary to binary implementations, especially others which coped with self-modifying code, without which ZM/HT wouldn’t have been very useful.

Self-unpacking executables are at least a decade older, and Fabrice quite likely had Microsoft’s 1985 EXEPACK, written by Reuben Borman, on his computer when he came up with LZEXE. That was bundled with MASM and Microsoft C 3.0, their first in-house version. Both were preceded by Realia’s Spacemaker product, which Wikipedia says was written by Robert B. K. Dewar in 1982.

Thanks for the reference to https://en.wikipedia.org/wiki/Honeywell_200 apparently its claim to fame was it could run IBM 1401 programs faster than a 1401 for less money.

> Compatibility with the IBM/1400 Series has, of course, been a key factor in the success of the Series 200. The principal software components in Honeywell's "Liberator" approach are the Easytran translators, which convert Autocoder source programs written for the IBM machines into Easycoder source programs which can be assembled and run on Series 200/2000 systems, usually with little or no need for manual alterations. The Easytran routines have effectively overcome the minor differences between the instruction sets and assembly languages of the two systems in literally hundreds of installations.

from https://bitsavers.org/pdf/honeywell/datapro/70C-480-01_7404_...

https://cdnibm1401.azureedge.net/1401-Competition.html

It appears that Honeywell Liberator was a program to convert 1401 assembly to Easycoder, the Honeywell 200 assembly format.

Umm one of the authors, Andy Gocke, is the lead for the .NET runtime... https://github.com/agocke